Snap for 8426163 from fc25fcf0519e5da3d5acfea27eadaa9ccffaef55 to mainline-tzdata2-release

Change-Id: I0e6a0ded40776c78b84619394c6e1ac7ec0b49bb
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index b72d742..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.git
-infra/cifuzz/test_data/*
-docs/*
-
-# Copied from .gitignore.
-.vscode/
-*.pyc
-build
-*~
-.DS_Store
-*.swp
\ No newline at end of file
diff --git a/.github/workflows/infra_tests.yml b/.github/workflows/infra_tests.yml
deleted file mode 100644
index 5273adc..0000000
--- a/.github/workflows/infra_tests.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: Infra tests
-on:
-  pull_request:
-    paths:
-      - 'infra/**'
-
-jobs:
-  build:
-    runs-on: ubuntu-latest
-
-    steps:
-      - name: Cancel previous
-        uses: styfle/cancel-workflow-action@0.8.0
-        with:
-          access_token: ${{ github.token }}
-
-      - uses: actions/checkout@v2
-      - run: |  # Needed for git diff to work.
-          git fetch origin master --depth 1
-          git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
-
-      - name: Setup python environment
-        uses: actions/setup-python@v2
-        with:
-          python-version: 3.8
-
-      - name: Install dependencies
-        run: |
-          sudo env "PATH=$PATH" python -m pip install --upgrade pip
-          sudo env "PATH=$PATH" pip install -r infra/ci/requirements.txt
-          sudo env "PATH=$PATH" pip install -r infra/build/functions/requirements.txt
-
-      - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
-        with:
-          version: '298.0.0'
-      - run: |
-          sudo env "PATH=$PATH" gcloud components install beta cloud-datastore-emulator
-
-      - name: Run infra tests
-        run: sudo env "PATH=$PATH" INTEGRATION_TESTS=1 python infra/presubmit.py infra-tests -p
diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml
deleted file mode 100644
index 9a4b8d6..0000000
--- a/.github/workflows/presubmit.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: Presubmit checks
-
-on:
-  pull_request:
-    branches:
-    - master
-
-jobs:
-  build:
-    runs-on: ubuntu-latest
-
-    steps:
-      - name: Cancel previous
-        uses: styfle/cancel-workflow-action@0.8.0
-        with:
-          access_token: ${{ github.token }}
-
-      - uses: actions/checkout@v2
-      - run: |  # Needed for git diff to work.
-          git fetch origin master --depth 1
-          git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
-
-      - name: Setup python environment
-        uses: actions/setup-python@v2
-        with:
-          python-version: 3.8
-
-      - name: Install dependencies
-        run: |
-          python -m pip install --upgrade pip
-          pip install -r infra/ci/requirements.txt
-          pip install -r infra/build/functions/requirements.txt
-
-      - name: Run presubmit checks
-        run: python infra/presubmit.py
diff --git a/.github/workflows/project_tests.yml b/.github/workflows/project_tests.yml
deleted file mode 100644
index 55dfb7f..0000000
--- a/.github/workflows/project_tests.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-name: Project tests
-
-on:
-  pull_request:
-    branches:
-    - master
-
-jobs:
-  build:
-    runs-on: ubuntu-latest
-    strategy:
-      fail-fast: false
-      matrix:
-        engine:
-          - libfuzzer
-        sanitizer:
-          - address
-          - memory
-          - undefined
-          - coverage
-        architecture:
-          - x86_64
-        include:
-          - engine: afl
-            sanitizer: address
-            architecture: x86_64
-          - engine: honggfuzz
-            sanitizer: address
-            architecture: x86_64
-          - engine: libfuzzer
-            sanitizer: address
-            architecture: i386
-          - engine: none
-            sanitizer: address
-            architecture: x86_64
-          - engine: dataflow
-            sanitizer: dataflow
-            architecture: x86_64
-    env:
-      ENGINE: ${{ matrix.engine }}
-      SANITIZER: ${{ matrix.sanitizer }}
-      ARCHITECTURE: ${{ matrix.architecture }}
-
-    steps:
-      - name: Cancel previous
-        uses: styfle/cancel-workflow-action@0.8.0
-        with:
-          access_token: ${{ github.token }}
-
-      - uses: actions/checkout@v2
-      - run: |  # Needed for git diff to work.
-          git fetch origin master --depth 1
-          git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
-
-      - name: Clear unnecessary files
-        run: |
-          sudo swapoff -a
-          sudo rm -f /swapfile
-          sudo apt clean
-          docker rmi $(docker images -a -q)
-          df -h
-
-      - name: Setup python environment
-        uses: actions/setup-python@v2
-        with:
-          python-version: 3.8
-
-      - name: Install dependencies
-        run: |
-          python -m pip install --upgrade pip
-          pip install -r infra/ci/requirements.txt
-
-      - name: Run project tests
-        run: python infra/ci/build.py
diff --git a/.gitignore b/.gitignore
index 4b4033e..63c6116 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,3 @@
 .vscode/
 *.pyc
-/build/
-*~
-.DS_Store
-*.swp
-.venv
\ No newline at end of file
+build/
diff --git a/.pylintrc b/.pylintrc
index 95cd154..00878f7 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -5,11 +5,11 @@
 # run arbitrary code.
 extension-pkg-whitelist=
 
-# Add files or directories to the blocklist. They should be base names, not
+# Add files or directories to the blacklist. They should be base names, not
 # paths.
-ignore=CVS,base-clang,base-sanitizer-libs-builder
+ignore=CVS
 
-# Add files or directories matching the regex patterns to the blocklist. The
+# Add files or directories matching the regex patterns to the blacklist. The
 # regex matches against base names, not paths.
 ignore-patterns=
 
@@ -139,8 +139,7 @@
         deprecated-sys-function,
         exception-escape,
         comprehension-escape,
-        fixme,
-        import-error,
+        fixme
 
 # Enable the message, report, category or checker with the given id(s). You can
 # either give multiple identifier separated by comma (,) or put this option
@@ -444,8 +443,8 @@
 callbacks=cb_,
           _cb
 
-# A regular expression matching the name of placeholder variables (i.e. expected
-# to not be used).
+# A regular expression matching the name of dummy variables (i.e. expected to
+# not be used).
 dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
 
 # Argument names that match this expression will be ignored. Default to name
@@ -583,4 +582,4 @@
                        Exception
 
 # Maximum number of characters on a single line.
-max-line-length=80
+max-line-length=80
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..2064c60
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,58 @@
+language: python
+dist: xenial
+
+services:
+  - docker
+
+before_install:
+  - git fetch origin +refs/heads/$TRAVIS_BRANCH
+
+install:
+  - pip install -r infra/travis/requirements.txt
+
+matrix:
+  include:
+    - name: "presubmit"
+      install:
+        - pip install -r infra/dev-requirements.txt
+      script: ./infra/presubmit.py
+    - name: "libfuzzer address x86_64"
+      env:
+        - TRAVIS_ENGINE=libfuzzer
+        - TRAVIS_SANITIZER=address
+        - TRAVIS_ARCHITECTURE=x86_64
+    - name: "libfuzzer memory x86_64"
+      env:
+        - TRAVIS_ENGINE=libfuzzer
+        - TRAVIS_SANITIZER=memory
+        - TRAVIS_ARCHITECTURE=x86_64
+    - name: "libfuzzer undefined x86_64"
+      env:
+        - TRAVIS_SANITIZER=undefined
+        - TRAVIS_ENGINE=libfuzzer
+        - TRAVIS_ARCHITECTURE=x86_64
+    - name: "afl address x86_64"
+      env:
+        - TRAVIS_ENGINE=afl
+        - TRAVIS_SANITIZER=address
+        - TRAVIS_ARCHITECTURE=x86_64
+    - name: "none address x86_64"
+      env:
+        - TRAVIS_ENGINE=none
+        - TRAVIS_SANITIZER=address
+        - TRAVIS_ARCHITECTURE=x86_64
+    - name: "libfuzzer address i386"
+      env:
+        - TRAVIS_ENGINE=libfuzzer
+        - TRAVIS_SANITIZER=address
+        - TRAVIS_ARCHITECTURE=i386
+    - name: "dataflow dataflow x86_64"
+      env:
+        - TRAVIS_ENGINE=dataflow
+        - TRAVIS_SANITIZER=dataflow
+        - TRAVIS_ARCHITECTURE=x86_64
+
+script: ./infra/travis/travis_build.py
+
+notifications:
+  webhooks: https://www.travisbuddy.com/
diff --git a/Android.bp b/Android.bp
deleted file mode 100644
index 2bc30dd..0000000
--- a/Android.bp
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_applicable_licenses: ["external_oss-fuzz_license"],
-}
-
-// Added automatically by a large-scale-change that took the approach of
-// 'apply every license found to every target'. While this makes sure we respect
-// every license restriction, it may not be entirely correct.
-//
-// e.g. GPL in an MIT project might only apply to the contrib/ directory.
-//
-// Please consider splitting the single license below into multiple licenses,
-// taking care not to lose any license_kind information, and overriding the
-// default license using the 'licenses: [...]' property on targets as needed.
-//
-// For unused files, consider creating a 'fileGroup' with "//visibility:private"
-// to attach the license to, and including a comment whether the files may be
-// used in the current project.
-// See: http://go/android-license-faq
-license {
-    name: "external_oss-fuzz_license",
-    visibility: [":__subpackages__"],
-    license_kinds: [
-        "SPDX-license-identifier-Apache-2.0",
-        "SPDX-license-identifier-BSD",
-        "SPDX-license-identifier-GPL",
-        "SPDX-license-identifier-MIT",
-        "legacy_notice",
-    ],
-    license_text: [
-        "LICENSE",
-    ],
-}
-
-cc_fuzz {
-    name: "ossfuzz-libldac-encode_fuzzer",
-    shared_libs: ["libldacBT_enc"],
-    srcs: ["projects/libldac/libldac_encode_fuzzer.cc"],
-    fuzz_config: {
-        componentid: 27441
-    },
-}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4255338..81dfba7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,4 @@
-Want to contribute? Great! First, read this page (including the small print at
-the end).
+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
@@ -7,7 +6,7 @@
 (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
+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.
diff --git a/METADATA b/METADATA
index dfba61b..f8659b3 100644
--- a/METADATA
+++ b/METADATA
@@ -9,11 +9,11 @@
     type: GIT
     value: "https://github.com/google/oss-fuzz.git"
   }
-  version: "947169dc86572e121c3e138f366a9f39ac6266ae"
-  license_type: RESTRICTED
+  version: "1a87da68c870ce09ab6ffac30589da12e7ff6a8d"
+  license_type: NOTICE
   last_upgrade_date {
-    year: 2021
-    month: 4
+    year: 2020
+    month: 2
     day: 1
   }
 }
diff --git a/NOTICE b/NOTICE
new file mode 120000
index 0000000..7a694c9
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
diff --git a/README.md b/README.md
index 4e5474a..ab300c3 100644
--- a/README.md
+++ b/README.md
@@ -1,64 +1,41 @@
 # OSS-Fuzz: Continuous Fuzzing for Open Source Software
 
-[Fuzz testing] is a well-known technique for uncovering programming errors in
-software. Many of these detectable errors, like [buffer overflow], can have
-serious security implications. Google has found [thousands] of security
-vulnerabilities and stability bugs by deploying [guided in-process fuzzing of
-Chrome components], and we now want to share that service with the open source
-community.
+[Fuzz testing](https://en.wikipedia.org/wiki/Fuzz_testing) is a well-known
+technique for uncovering programming errors in software.
+Many of these detectable errors, like [buffer overflow](https://en.wikipedia.org/wiki/Buffer_overflow), can have serious security implications. Google has found [thousands] of security vulnerabilities and stability bugs by deploying [guided in-process fuzzing of Chrome components](https://security.googleblog.com/2016/08/guided-in-process-fuzzing-of-chrome.html),
+and we now want to share that service with the open source community. 
 
-[Fuzz testing]: https://en.wikipedia.org/wiki/Fuzz_testing
-[buffer overflow]: https://en.wikipedia.org/wiki/Buffer_overflow
 [thousands]: https://bugs.chromium.org/p/chromium/issues/list?q=label%3AStability-LibFuzzer%2CStability-AFL%20-status%3ADuplicate%2CWontFix&can=1
-[guided in-process fuzzing of Chrome components]: https://security.googleblog.com/2016/08/guided-in-process-fuzzing-of-chrome.html
 
-In cooperation with the [Core Infrastructure Initiative] and the [OpenSSF],
+In cooperation with the [Core Infrastructure Initiative](https://www.coreinfrastructure.org/), 
 OSS-Fuzz aims to make common open source software more secure and stable by
-combining modern fuzzing techniques with scalable, distributed execution.
+combining modern fuzzing techniques with scalable,
+distributed execution.
 
-[Core Infrastructure Initiative]: https://www.coreinfrastructure.org/
-[OpenSSF]: https://www.openssf.org/
+We support the [libFuzzer](http://llvm.org/docs/LibFuzzer.html) and [AFL](http://lcamtuf.coredump.cx/afl/) fuzzing engines
+in combination with [Sanitizers](https://github.com/google/sanitizers), as well as
+[ClusterFuzz](https://github.com/google/clusterfuzz),
+a distributed fuzzer execution environment and reporting tool. 
 
-We support the [libFuzzer], [AFL++], and [Honggfuzz] fuzzing engines in
-combination with [Sanitizers], as well as [ClusterFuzz], a distributed fuzzer
-execution environment and reporting tool.
-
-[libFuzzer]: https://llvm.org/docs/LibFuzzer.html
-[AFL++]: https://github.com/AFLplusplus/AFLplusplus
-[Honggfuzz]: https://github.com/google/honggfuzz
-[Sanitizers]: https://github.com/google/sanitizers
-[ClusterFuzz]: https://github.com/google/clusterfuzz
-
-Currently, OSS-Fuzz supports C/C++, Rust, Go, Python and Java/JVM code. Other languages
-supported by [LLVM] may work too. OSS-Fuzz supports fuzzing x86_64 and i386
-builds.
-
-[LLVM]: https://llvm.org
+Currently, OSS-Fuzz supports C/C++, Rust, and Go code. Other languages supported by [LLVM](http://llvm.org) may work too.
+OSS-Fuzz supports fuzzing x86_64 and i386 builds.
 
 ## Overview
 ![OSS-Fuzz process diagram](docs/images/process.png)
 
 ## Documentation
-Read our [detailed documentation] to learn how to use OSS-Fuzz.
-
-[detailed documentation]: https://google.github.io/oss-fuzz
+Read our [detailed documentation](https://google.github.io/oss-fuzz) to learn how to use OSS-Fuzz.
 
 ## Trophies
-As of January 2021, OSS-Fuzz has found over [25,000] bugs in [375] open source
-projects.
+As of January 2020, OSS-Fuzz has found over [16,000] bugs in [250] open source projects.
 
-[25,000]: https://bugs.chromium.org/p/oss-fuzz/issues/list?q=-status%3AWontFix%2CDuplicate%20-component%3AInfra&can=1
-[375]: https://github.com/google/oss-fuzz/tree/master/projects
+[16,000]: https://bugs.chromium.org/p/oss-fuzz/issues/list?q=-status%3AWontFix%2CDuplicate%20-component%3AInfra&can=1
+[250]: https://github.com/google/oss-fuzz/tree/master/projects
 
 ## Blog posts
-* 2016-12-01 - [Announcing OSS-Fuzz: Continuous fuzzing for open source software]
-* 2017-05-08 - [OSS-Fuzz: Five months later, and rewarding projects]
-* 2018-11-06 - [A New Chapter for OSS-Fuzz]
-* 2020-10-09 - [Fuzzing internships for Open Source Software]
-* 2020-12-07 - [Improving open source security during the Google summer internship program]
 
-[Announcing OSS-Fuzz: Continuous fuzzing for open source software]: https://opensource.googleblog.com/2016/12/announcing-oss-fuzz-continuous-fuzzing.html
-[OSS-Fuzz: Five months later, and rewarding projects]: https://opensource.googleblog.com/2017/05/oss-fuzz-five-months-later-and.html
-[A New Chapter for OSS-Fuzz]: https://security.googleblog.com/2018/11/a-new-chapter-for-oss-fuzz.html
-[Fuzzing internships for Open Source Software]: https://security.googleblog.com/2020/10/fuzzing-internships-for-open-source.html
-[Improving open source security during the Google summer internship program]: https://security.googleblog.com/2020/12/improving-open-source-security-during.html
+* 2016-12-01 - [Announcing OSS-Fuzz: Continuous fuzzing for open source software](https://opensource.googleblog.com/2016/12/announcing-oss-fuzz-continuous-fuzzing.html)
+* 2017-05-08 - [OSS-Fuzz: Five months later, and rewarding projects](https://opensource.googleblog.com/2017/05/oss-fuzz-five-months-later-and.html)
+* 2018-11-06 - [A New Chapter for OSS-Fuzz](https://security.googleblog.com/2018/11/a-new-chapter-for-oss-fuzz.html)
+
+
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index a6807df..20774a0 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -1,14 +1,13 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (6.0.3.4)
-      concurrent-ruby (~> 1.0, >= 1.0.2)
-      i18n (>= 0.7, < 2)
+    activesupport (4.2.11.1)
+      i18n (~> 0.7)
       minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
       tzinfo (~> 1.1)
-      zeitwerk (~> 2.2, >= 2.2.2)
-    addressable (2.7.0)
-      public_suffix (>= 2.0.2, < 5.0)
+    addressable (2.6.0)
+      public_suffix (>= 2.0.2, < 4.0)
     coffee-script (2.4.1)
       coffee-script-source
       execjs
@@ -16,67 +15,65 @@
     colorator (1.1.0)
     commonmarker (0.17.13)
       ruby-enum (~> 0.5)
-    concurrent-ruby (1.1.7)
-    dnsruby (1.61.5)
-      simpleidn (~> 0.1)
-    em-websocket (0.5.2)
+    concurrent-ruby (1.1.5)
+    dnsruby (1.61.3)
+      addressable (~> 2.5)
+    em-websocket (0.5.1)
       eventmachine (>= 0.12.9)
       http_parser.rb (~> 0.6.0)
     ethon (0.12.0)
       ffi (>= 1.3.0)
     eventmachine (1.2.7)
     execjs (2.7.0)
-    faraday (1.3.0)
-      faraday-net_http (~> 1.0)
+    faraday (0.15.4)
       multipart-post (>= 1.2, < 3)
-      ruby2_keywords
-    faraday-net_http (1.0.0)
-    ffi (1.14.2)
+    ffi (1.11.1)
     forwardable-extended (2.6.0)
     gemoji (3.0.1)
-    github-pages (209)
+    github-pages (198)
+      activesupport (= 4.2.11.1)
       github-pages-health-check (= 1.16.1)
-      jekyll (= 3.9.0)
-      jekyll-avatar (= 0.7.0)
+      jekyll (= 3.8.5)
+      jekyll-avatar (= 0.6.0)
       jekyll-coffeescript (= 1.1.1)
-      jekyll-commonmark-ghpages (= 0.1.6)
+      jekyll-commonmark-ghpages (= 0.1.5)
       jekyll-default-layout (= 0.1.4)
-      jekyll-feed (= 0.15.1)
+      jekyll-feed (= 0.11.0)
       jekyll-gist (= 1.5.0)
-      jekyll-github-metadata (= 2.13.0)
-      jekyll-mentions (= 1.6.0)
-      jekyll-optional-front-matter (= 0.3.2)
+      jekyll-github-metadata (= 2.12.1)
+      jekyll-mentions (= 1.4.1)
+      jekyll-optional-front-matter (= 0.3.0)
       jekyll-paginate (= 1.1.0)
-      jekyll-readme-index (= 0.3.0)
-      jekyll-redirect-from (= 0.16.0)
-      jekyll-relative-links (= 0.6.1)
-      jekyll-remote-theme (= 0.4.2)
+      jekyll-readme-index (= 0.2.0)
+      jekyll-redirect-from (= 0.14.0)
+      jekyll-relative-links (= 0.6.0)
+      jekyll-remote-theme (= 0.3.1)
       jekyll-sass-converter (= 1.5.2)
-      jekyll-seo-tag (= 2.6.1)
-      jekyll-sitemap (= 1.4.0)
-      jekyll-swiss (= 1.0.0)
+      jekyll-seo-tag (= 2.5.0)
+      jekyll-sitemap (= 1.2.0)
+      jekyll-swiss (= 0.4.0)
       jekyll-theme-architect (= 0.1.1)
       jekyll-theme-cayman (= 0.1.1)
       jekyll-theme-dinky (= 0.1.1)
-      jekyll-theme-hacker (= 0.1.2)
+      jekyll-theme-hacker (= 0.1.1)
       jekyll-theme-leap-day (= 0.1.1)
       jekyll-theme-merlot (= 0.1.1)
       jekyll-theme-midnight (= 0.1.1)
       jekyll-theme-minimal (= 0.1.1)
       jekyll-theme-modernist (= 0.1.1)
-      jekyll-theme-primer (= 0.5.4)
+      jekyll-theme-primer (= 0.5.3)
       jekyll-theme-slate (= 0.1.1)
       jekyll-theme-tactile (= 0.1.1)
       jekyll-theme-time-machine (= 0.1.1)
-      jekyll-titles-from-headings (= 0.5.3)
-      jemoji (= 0.12.0)
-      kramdown (= 2.3.0)
-      kramdown-parser-gfm (= 1.1.0)
-      liquid (= 4.0.3)
+      jekyll-titles-from-headings (= 0.5.1)
+      jemoji (= 0.10.2)
+      kramdown (= 1.17.0)
+      liquid (= 4.0.0)
+      listen (= 3.1.5)
       mercenary (~> 0.3)
-      minima (= 2.5.1)
-      nokogiri (>= 1.10.4, < 2.0)
-      rouge (= 3.23.0)
+      minima (= 2.5.0)
+      nokogiri (>= 1.8.5, < 2.0)
+      rouge (= 2.2.1)
       terminal-table (~> 1.4)
     github-pages-health-check (1.16.1)
       addressable (~> 2.3)
@@ -84,70 +81,68 @@
       octokit (~> 4.0)
       public_suffix (~> 3.0)
       typhoeus (~> 1.3)
-    html-pipeline (2.14.0)
+    html-pipeline (2.12.0)
       activesupport (>= 2)
       nokogiri (>= 1.4)
     http_parser.rb (0.6.0)
     i18n (0.9.5)
       concurrent-ruby (~> 1.0)
-    jekyll (3.9.0)
+    jekyll (3.8.5)
       addressable (~> 2.4)
       colorator (~> 1.0)
       em-websocket (~> 0.5)
       i18n (~> 0.7)
       jekyll-sass-converter (~> 1.0)
       jekyll-watch (~> 2.0)
-      kramdown (>= 1.17, < 3)
+      kramdown (~> 1.14)
       liquid (~> 4.0)
       mercenary (~> 0.3.3)
       pathutil (~> 0.9)
       rouge (>= 1.7, < 4)
       safe_yaml (~> 1.0)
-    jekyll-avatar (0.7.0)
-      jekyll (>= 3.0, < 5.0)
+    jekyll-avatar (0.6.0)
+      jekyll (~> 3.0)
     jekyll-coffeescript (1.1.1)
       coffee-script (~> 2.2)
       coffee-script-source (~> 1.11.1)
     jekyll-commonmark (1.3.1)
       commonmarker (~> 0.14)
       jekyll (>= 3.7, < 5.0)
-    jekyll-commonmark-ghpages (0.1.6)
+    jekyll-commonmark-ghpages (0.1.5)
       commonmarker (~> 0.17.6)
-      jekyll-commonmark (~> 1.2)
-      rouge (>= 2.0, < 4.0)
+      jekyll-commonmark (~> 1)
+      rouge (~> 2)
     jekyll-default-layout (0.1.4)
       jekyll (~> 3.0)
-    jekyll-feed (0.15.1)
-      jekyll (>= 3.7, < 5.0)
+    jekyll-feed (0.11.0)
+      jekyll (~> 3.3)
     jekyll-gist (1.5.0)
       octokit (~> 4.2)
-    jekyll-github-metadata (2.13.0)
-      jekyll (>= 3.4, < 5.0)
+    jekyll-github-metadata (2.12.1)
+      jekyll (~> 3.4)
       octokit (~> 4.0, != 4.4.0)
-    jekyll-mentions (1.6.0)
+    jekyll-mentions (1.4.1)
       html-pipeline (~> 2.3)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-optional-front-matter (0.3.2)
-      jekyll (>= 3.0, < 5.0)
+      jekyll (~> 3.0)
+    jekyll-optional-front-matter (0.3.0)
+      jekyll (~> 3.0)
     jekyll-paginate (1.1.0)
-    jekyll-readme-index (0.3.0)
-      jekyll (>= 3.0, < 5.0)
-    jekyll-redirect-from (0.16.0)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-relative-links (0.6.1)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-remote-theme (0.4.2)
-      addressable (~> 2.0)
-      jekyll (>= 3.5, < 5.0)
-      jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
-      rubyzip (>= 1.3.0, < 3.0)
+    jekyll-readme-index (0.2.0)
+      jekyll (~> 3.0)
+    jekyll-redirect-from (0.14.0)
+      jekyll (~> 3.3)
+    jekyll-relative-links (0.6.0)
+      jekyll (~> 3.3)
+    jekyll-remote-theme (0.3.1)
+      jekyll (~> 3.5)
+      rubyzip (>= 1.2.1, < 3.0)
     jekyll-sass-converter (1.5.2)
       sass (~> 3.4)
-    jekyll-seo-tag (2.6.1)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-sitemap (1.4.0)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-swiss (1.0.0)
+    jekyll-seo-tag (2.5.0)
+      jekyll (~> 3.3)
+    jekyll-sitemap (1.2.0)
+      jekyll (~> 3.3)
+    jekyll-swiss (0.4.0)
     jekyll-theme-architect (0.1.1)
       jekyll (~> 3.5)
       jekyll-seo-tag (~> 2.0)
@@ -157,8 +152,8 @@
     jekyll-theme-dinky (0.1.1)
       jekyll (~> 3.5)
       jekyll-seo-tag (~> 2.0)
-    jekyll-theme-hacker (0.1.2)
-      jekyll (> 3.5, < 5.0)
+    jekyll-theme-hacker (0.1.1)
+      jekyll (~> 3.5)
       jekyll-seo-tag (~> 2.0)
     jekyll-theme-leap-day (0.1.1)
       jekyll (~> 3.5)
@@ -175,8 +170,8 @@
     jekyll-theme-modernist (0.1.1)
       jekyll (~> 3.5)
       jekyll-seo-tag (~> 2.0)
-    jekyll-theme-primer (0.5.4)
-      jekyll (> 3.5, < 5.0)
+    jekyll-theme-primer (0.5.3)
+      jekyll (~> 3.5)
       jekyll-github-metadata (~> 2.9)
       jekyll-seo-tag (~> 2.0)
     jekyll-theme-slate (0.1.1)
@@ -188,49 +183,43 @@
     jekyll-theme-time-machine (0.1.1)
       jekyll (~> 3.5)
       jekyll-seo-tag (~> 2.0)
-    jekyll-titles-from-headings (0.5.3)
-      jekyll (>= 3.3, < 5.0)
+    jekyll-titles-from-headings (0.5.1)
+      jekyll (~> 3.3)
     jekyll-watch (2.2.1)
       listen (~> 3.0)
-    jemoji (0.12.0)
+    jemoji (0.10.2)
       gemoji (~> 3.0)
       html-pipeline (~> 2.2)
-      jekyll (>= 3.0, < 5.0)
-    kramdown (2.3.0)
-      rexml
-    kramdown-parser-gfm (1.1.0)
-      kramdown (~> 2.0)
-    liquid (4.0.3)
-    listen (3.4.0)
-      rb-fsevent (~> 0.10, >= 0.10.3)
-      rb-inotify (~> 0.9, >= 0.9.10)
+      jekyll (~> 3.0)
+    kramdown (1.17.0)
+    liquid (4.0.0)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
     mercenary (0.3.6)
-    mini_portile2 (2.5.0)
-    minima (2.5.1)
-      jekyll (>= 3.5, < 5.0)
+    mini_portile2 (2.4.0)
+    minima (2.5.0)
+      jekyll (~> 3.5)
       jekyll-feed (~> 0.9)
       jekyll-seo-tag (~> 2.1)
-    minitest (5.14.3)
+    minitest (5.11.3)
     multipart-post (2.1.1)
-    nokogiri (1.11.1)
-      mini_portile2 (~> 2.5.0)
-      racc (~> 1.4)
-    octokit (4.20.0)
-      faraday (>= 0.9)
+    nokogiri (1.10.4)
+      mini_portile2 (~> 2.4.0)
+    octokit (4.14.0)
       sawyer (~> 0.8.0, >= 0.5.3)
     pathutil (0.16.2)
       forwardable-extended (~> 2.6)
     public_suffix (3.1.1)
-    racc (1.5.2)
-    rb-fsevent (0.10.4)
-    rb-inotify (0.10.1)
+    rb-fsevent (0.10.3)
+    rb-inotify (0.10.0)
       ffi (~> 1.0)
-    rexml (3.2.4)
-    rouge (3.23.0)
-    ruby-enum (0.8.0)
+    rouge (2.2.1)
+    ruby-enum (0.7.2)
       i18n
-    ruby2_keywords (0.0.2)
-    rubyzip (2.3.0)
+    ruby_dep (1.5.0)
+    rubyzip (1.2.3)
     safe_yaml (1.0.5)
     sass (3.7.4)
       sass-listen (~> 4.0.0)
@@ -240,20 +229,14 @@
     sawyer (0.8.2)
       addressable (>= 2.3.5)
       faraday (> 0.8, < 2.0)
-    simpleidn (0.1.1)
-      unf (~> 0.1.4)
     terminal-table (1.8.0)
       unicode-display_width (~> 1.1, >= 1.1.1)
     thread_safe (0.3.6)
-    typhoeus (1.4.0)
+    typhoeus (1.3.1)
       ethon (>= 0.9.0)
-    tzinfo (1.2.9)
+    tzinfo (1.2.5)
       thread_safe (~> 0.1)
-    unf (0.1.4)
-      unf_ext
-    unf_ext (0.0.7.7)
-    unicode-display_width (1.7.0)
-    zeitwerk (2.4.2)
+    unicode-display_width (1.6.0)
 
 PLATFORMS
   ruby
@@ -262,4 +245,4 @@
   github-pages
 
 BUNDLED WITH
-   2.1.4
+   1.16.1
diff --git a/docs/advanced-topics/code_coverage.md b/docs/advanced-topics/code_coverage.md
index 3b0acc2..6e56c40 100644
--- a/docs/advanced-topics/code_coverage.md
+++ b/docs/advanced-topics/code_coverage.md
@@ -9,11 +9,9 @@
 # Code Coverage
 {: .no_toc}
 
-For projects written in C/C++, you can generate code coverage reports using
-Clang source-based code coverage. This page walks you through the basic steps.
-For more details, see [Clang's documentation].
-
-Code coverage reports generation for other languages is not supported yet.
+You can generate code coverage reports for your project using Clang source-based
+code coverage. This page walks you through the basic steps. For more details,
+see [Clang's documentation].
 
 - TOC
 {:toc}
@@ -126,4 +124,4 @@
 
 [Clang's documentation]: https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
 [gsutil tool]: https://cloud.google.com/storage/docs/gsutil_install
-[llvm-cov tool]: https://llvm.org/docs/CommandGuide/llvm-cov.html
+[llvm-cov tool]: https://llvm.org/docs/CommandGuide/llvm-cov.html
\ No newline at end of file
diff --git a/docs/advanced-topics/ideal_integration.md b/docs/advanced-topics/ideal_integration.md
index b6d29e4..b83fafe 100644
--- a/docs/advanced-topics/ideal_integration.md
+++ b/docs/advanced-topics/ideal_integration.md
@@ -73,7 +73,7 @@
 * For every fuzz target `foo` in the project, there is a build rule that
 builds `foo_fuzzer`, a binary that: 
 	* Contains the fuzzing entry point.
-	* Contains (`LLVMFuzzerTestOneInput`) and all the code it depends on.
+	* Contains (`LLVMFuzzerTestOneInput`) and all the code it depends on
 	* Uses the `main()` function from `$LIB_FUZZING_ENGINE` (env var [provided]({{ site.baseurl }}/getting-started/new-project-guide/) by OSS-Fuzz environment).
 * Since the build system supports changing the compiler and passing extra compiler
 flags, the build command for `foo_fuzzer` looks similar to this:
@@ -112,9 +112,9 @@
 
 For some input types, a simple dictionary of tokens used by the input language
 can have a dramatic impact on fuzzing efficiency.  For example, when fuzzing an
-XML parser, a dictionary of XML tokens is helpful. AFL++ has a
-[collection](https://github.com/AFLplusplus/AFLplusplus/tree/master/dictionaries)
-of dictionaries for popular data formats. Ideally, a dictionary should be
+XML parser, a dictionary of XML tokens is helpful. AFL has a
+[collection](https://github.com/google/AFL/tree/master/dictionaries) of
+dictionaries for popular data formats. Ideally, a dictionary should be
 maintained alongside the fuzz target, and it must use [correct
 syntax](http://libfuzzer.info/#dictionaries).
 
@@ -143,7 +143,7 @@
 [sanitizers](https://github.com/google/sanitizers) during regression testing.
 
 Examples: [SQLite](https://www.sqlite.org/src/artifact/d9f1a6f43e7bab45),
-[openssl](https://github.com/openssl/openssl/blob/master/fuzz/test-corpus.c).
+[openssl](https://github.com/openssl/openssl/blob/master/fuzz/test-corpus.c)
 
 ## Performance
 
diff --git a/docs/advanced-topics/reproducing.md b/docs/advanced-topics/reproducing.md
index 95bb09c..7e8ea6d 100644
--- a/docs/advanced-topics/reproducing.md
+++ b/docs/advanced-topics/reproducing.md
@@ -78,9 +78,9 @@
 
 The `sanitizer` used in the report is the value in the
 **Sanitizer** column. It's one of the following:
-  * **address** for AddressSanitizer.
-  * **memory** for MemorySanitizer.
-  * **undefined** for UndefinedBehaviorSanitizer.
+  * **address** for AddressSanitizer
+  * **memory** for MemorySanitizer
+  * **undefined** for UndefinedBehaviorSanitizer
 
 **Note**: The `architecture` argument is only necessary if you want to specify
 `i386` configuration.
@@ -93,9 +93,6 @@
 $ python infra/helper.py reproduce $PROJECT_NAME <fuzz_target_name> <testcase_path>
 ```
 
-**Note**: The reproduce command only supports `libfuzzer` fuzzing engine. Crashes
-found with other fuzzing engines should be reproducible with `libfuzzer` too.
-
 For example, to build the [libxml2](https://github.com/google/oss-fuzz/tree/master/projects/libxml2)
 project with UndefinedBehaviorSanitizer (`undefined`) instrumentation and
 reproduce a crash testcase for a fuzzer named `libxml2_xml_read_memory_fuzzer`,
diff --git a/docs/faq.md b/docs/faq.md
index 46e5ebf..ca02b9b 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -39,19 +39,12 @@
 You should look for places in your code that:
 
   - consume un-trusted data from users or from the network.
-  - consume complex input data even if it's 'trusted'.
+  - consume complex data input or event if it's 'trusted'.
   - use an algorithm that has two or more implementations
     (to verify their equivalence).
   - look for existing fuzz target [examples](https://github.com/google/oss-fuzz/tree/master/projects)
     and find similarities.
 
-## Where can I store fuzz target sources and the build script if it's not yet accepted upstream?
-
-Fuzz target sources as well as the build script may temporarily live inside the
-`projects/<your_project>` directory in the OSS-Fuzz repository. Note that we do
-not accept integrations that rely on forked repositories. Refer to the
-[ideal integration guide] for the preferred long term solution.
-
 ## My project is not open source. Can I use OSS-Fuzz?
 
 You cannot use OSS-Fuzz, but you can use [ClusterFuzz] which OSS-Fuzz is based
@@ -61,6 +54,7 @@
 OSS-Fuzz is a production instance of ClusterFuzz, plus the code living in
 [OSS-Fuzz repository]: build scripts, `project.yaml` files with contacts, etc.
 
+[ClusterFuzz]: https://github.com/google/clusterfuzz
 [OSS-Fuzz repository]: https://github.com/google/oss-fuzz
 
 ## Why do you use a [different issue tracker](https://bugs.chromium.org/p/oss-fuzz/issues/list) for reporting bugs in OSS projects?
@@ -158,21 +152,7 @@
 possible. We believe that public code coverage reports do not put users at risk,
 as they do not indicate the presence of bugs or lack thereof.
 
-## Why is the coverage command complaining about format compatibility issues?
-
-This may happen if the Docker images fetched locally become out of sync. Make
-sure you run the following command to pull the most recent images:
-
-```bash
-$ python infra/helper.py pull_images
-```
-
-Please refer to
-[code coverage]({{ site.baseurl }}/advanced-topics/code-coverage/) for detailed
-information on code coverage generation.
-
 ## What happens when I rename a fuzz target ?
-
 If you rename your fuzz targets, the existing bugs for those targets will get
 closed and fuzzing will start from scratch from a fresh corpora
 (seed corpus only). Similar corpora will get accumulated over time depending on
@@ -183,33 +163,23 @@
 restore it to the new GCS location later (instruction to find the
 new location [here]({{ site.baseurl }}/advanced-topics/corpora/#viewing-the-corpus-for-a-fuzz-target)).
 
-## Does OSS-Fuzz support AFL or honggfuzz?
+## Does OSS-Fuzz support AFL?
+OSS-Fuzz *uses* [AFL](http://lcamtuf.coredump.cx/afl/) as one of its
+[fuzzing engines]({{ site.baseurl }}/reference/glossary/#fuzzing-engine) but this is an implementation
+detail. Just follow the
+[ideal integration guide]({{ site.baseurl }}/advanced-topics/ideal-integration/)
+and OSS-Fuzz will use all its fuzzing engines on your code.
 
-OSS-Fuzz *uses* the following
-[fuzzing engines]({{ site.baseurl }}/reference/glossary/#fuzzing-engine):
-
-1. [libFuzzer](https://llvm.org/docs/LibFuzzer.html).
-1. [AFL++](https://github.com/AFLplusplus/AFLplusplus), an improved and
-   well-maintained version of [AFL](https://lcamtuf.coredump.cx/afl/).
-1. [Honggfuzz](https://github.com/google/honggfuzz).
-
-Follow the [new project guide] and OSS-Fuzz will use all its fuzzing engines
-on your code.
+## Does OSS-Fuzz support Honggfuzz?
+OSS-Fuzz (the service) does not use honggfuzz to find bugs.
+That is because [ClusterFuzz](https://github.com/google/clusterfuzz)
+(the infrastructure OSS-Fuzz runs on) does not support honggfuzz. 
+However, OSS-Fuzz supports **building** fuzz targets for use with honggfuzz,
+similar to the way it supports [AFL](#does-oss-fuzz-support-afl). 
+Currently OSS-Fuzz builders do builds for libFuzzer, AFL, and honggfuzz.
 
 ## What are the specs on your machines?
-
 OSS-Fuzz builders have 32CPU/28.8GB RAM.
 
 Fuzzing machines only have a single core and fuzz targets should not use more
 than 2.5GB of RAM.
-
-## Are there any restrictions on using test cases / corpora generated by OSS-Fuzz?
-
-No, you can freely use (i.e. share, add to your repo, etc.) the test cases and
-corpora generated by OSS-Fuzz. OSS-Fuzz infrastructure is fully open source
-(including [ClusterFuzz], various fuzzing engines, and other dependencies). We
-have no intent to restrict the use of the artifacts produced by OSS-Fuzz.
-
-[ClusterFuzz]: https://github.com/google/clusterfuzz
-[new project guide]: {{ site.baseurl }}/getting-started/new-project-guide/
-[ideal integration guide]: {{ site.baseurl }}/getting-started/new-project-guide/
diff --git a/docs/further-reading/fuzzer_environment.md b/docs/further-reading/fuzzer_environment.md
index 7c527ec..233cb25 100644
--- a/docs/further-reading/fuzzer_environment.md
+++ b/docs/further-reading/fuzzer_environment.md
@@ -25,11 +25,11 @@
 [build.sh]({{ site.baseurl }}/getting-started/new-project-guide/#buildsh)
 are not available on the bot runtime environment (where the fuzz targets run).
 
-If you need these dependencies in the runtime environment, you can either:
+If you need these dependencies in the runtime environment, you can either
 - Install the packages via Dockerfile
 ([example](https://github.com/google/oss-fuzz/blob/2d5e2ef84f281e6ab789055aa735606d3122fda9/projects/tor/Dockerfile#L19))
 and then link statically against them
-([example](https://github.com/google/oss-fuzz/blob/2d5e2ef84f281e6ab789055aa735606d3122fda9/projects/tor/build.sh#L40)).
+([example](https://github.com/google/oss-fuzz/blob/2d5e2ef84f281e6ab789055aa735606d3122fda9/projects/tor/build.sh#L40))
 - Or build the dependencies statically in
 [build.sh]({{ site.baseurl }}/getting-started/new-project-guide/#buildsh)
 ([example](https://github.com/google/oss-fuzz/blob/64f8b6593da141b97c98c7bc6f07df92c42ee010/projects/ffmpeg/build.sh#L26)).
diff --git a/docs/getting-started/bug_disclosure_guidelines.md b/docs/getting-started/bug_disclosure_guidelines.md
index e5a76ef..f82a751 100644
--- a/docs/getting-started/bug_disclosure_guidelines.md
+++ b/docs/getting-started/bug_disclosure_guidelines.md
@@ -12,12 +12,12 @@
 OSS-Fuzz will adhere to following disclosure principles:
 
   - **Deadline**. After notifying project authors, we will open reported
-    issues to the public in 90 days, or after the fix is released (whichever
-    comes earlier).
+    issues to the public in 90 days, or 30 days after the fix is released
+    (whichever comes earlier).
   - **Weekends and holidays**. If a deadline is due to expire on a weekend,
     the deadline will be moved to the next normal work day.
   - **Grace period**. We have a 14-day grace period. If a 90-day deadline
     expires but the upstream engineers let us know before the deadline that a
     patch is scheduled for release on a specific day within 14 days following
     the deadline, the public disclosure will be delayed until the availability
-    of the patch.
+    of the patch.
\ No newline at end of file
diff --git a/docs/getting-started/continuous_integration.md b/docs/getting-started/continuous_integration.md
deleted file mode 100644
index 88e6e4b..0000000
--- a/docs/getting-started/continuous_integration.md
+++ /dev/null
@@ -1,234 +0,0 @@
----
-layout: default
-title: Continuous Integration
-parent: Getting started
-nav_order: 5
-permalink: /getting-started/continuous-integration/
----
-
-# Continuous Integration
-
-OSS-Fuzz offers **CIFuzz**, a GitHub action/CI job that runs your fuzz targets
-on pull requests. This works similarly to running unit tests in CI. CIFuzz helps
-you find and fix bugs before they make it into your codebase.
-Currently, CIFuzz only supports projects hosted on GitHub.
-
-## How it works
-
-CIFuzz builds your project's fuzzers from the source at a particular
-pull request or commit. Then CIFuzz runs the fuzzers for a short amount of time.
-If CIFuzz finds a crash, CIFuzz reports the stacktrace, makes the crashing
-input available for download and the CI test fails (red X).
-
-If CIFuzz doesn't find a crash during the allotted time, the CI test passes
-(green check). If CIFuzz finds a crash, it reports the crash only:
-* If the crash is reproducible (on the PR/commit build).
-* If the crash does not occur on older OSS-Fuzz builds. Because if it does occur
-  on older builds that means the crash was not introduced by the PR/commit
-  CIFuzz is testing.
-
-If your project supports [OSS-Fuzz's code coverage]({{ site.baseurl }}/advanced-topics/code-coverage),
-CIFuzz only runs the fuzzers affected by a pull request/commit.
-Otherwise it will divide up the allotted fuzzing time (10 minutes by default)
-among all fuzzers in the project.
-
-CIFuzz uses 30 day old/public regressions and corpora from OSS-Fuzz. This makes
-fuzzing more effective and gives you regression testing for free.
-
-## Requirements
-
-1. Your project must be integrated with OSS-Fuzz.
-1. Your project is hosted on GitHub.
-
-## Integrating into your repository
-
-You can integrate CIFuzz into your project using the following steps:
-1. Create a `.github` directory in the root of your project.
-1. Create a `workflows` directory inside of your `.github` directory.
-1. Copy the example [`main.yml`](https://github.com/google/oss-fuzz/blob/master/infra/cifuzz/example_main.yml)
-file over from the OSS-Fuzz repository to the `workflows` directory.
-1. Change the `oss-fuzz-project-name` value in `main.yml` from `example` to the name of your OSS-Fuzz project. It is **very important** that you use your OSS-Fuzz project name which is case sensitive. This name
-is the name of your project's subdirectory in the [`projects`](https://github.com/google/oss-fuzz/tree/master/projects) directory of OSS-Fuzz.
-1. Set the value of `fuzz-seconds`. The longest time that the project maintainers are acceptable with should be used. This value should be at minimum 600 seconds and scale with project size.
-
-Your directory structure should look like the following:
-```
-project
-|___ .github
-|    |____ workflows
-|          |____ main.yml
-|___ other-files
-```
-
-main.yml for an example project:
-
-```yaml
-name: CIFuzz
-on: [pull_request]
-jobs:
- Fuzzing:
-   runs-on: ubuntu-latest
-   steps:
-   - name: Build Fuzzers
-     id: build
-     uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-   - name: Run Fuzzers
-     uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-       fuzz-seconds: 600
-   - name: Upload Crash
-     uses: actions/upload-artifact@v1
-     if: failure() && steps.build.outcome == 'success'
-     with:
-       name: artifacts
-       path: ./out/artifacts
-```
-
-
-### Optional configuration
-
-#### Configurable Variables
-
-`language`: (optional) The language your target program is written in. Defaults
-to `c++`. This should be the same as the value you set in `project.yaml`. See
-[this explanation]({{ site.baseurl }}//getting-started/new-project-guide/#language)
-for more details.
-
-`fuzz-time`: Determines how long CIFuzz spends fuzzing your project in seconds.
-The default is 600 seconds. The GitHub Actions max run time is 21600 seconds (6
-hours). This variable is only meaningful when supplied to the `run_fuzzers`
-action, not the `build_fuzzers` action.
-
-`dry-run`: Determines if CIFuzz surfaces errors. The default value is `false`. When set to `true`,
-CIFuzz will never report a failure even if it finds a crash in your project.
-This requires the user to manually check the logs for detected bugs. If dry run mode is desired,
-make sure to set the dry-run parameters in both the `Build Fuzzers` and `Run Fuzzers` action step.
-
-`allowed-broken-targets-percentage`: Can be set if you want to set a stricter
-limit for broken fuzz targets than OSS-Fuzz's check_build. Most users should
-not set this. This value is only meaningful when supplied to the `run_fuzzers`
-action, not the `build_fuzzers` action.
-
-`sanitizer`: Determines a sanitizer to build and run fuzz targets with. The choices are `'address'`,
-`'memory'` and `'undefined'`. The default is `'address'`. It is important to note that the `Build Fuzzers`
-and the `Run Fuzzers` sanitizer field needs to be the same. To specify a list of sanitizers
-a [matrix](https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix)
-can be used. To use a sanitizer add it to the list of sanitizers in the matrix field below:
-
-```yaml
-{% raw %}
-name: CIFuzz
-on: [pull_request]
-jobs:
- Fuzzing:
-   runs-on: ubuntu-latest
-   strategy:
-     fail-fast: false
-     matrix:
-       sanitizer: [address, undefined, memory]
-   steps:
-   - name: Build Fuzzers (${{ matrix.sanitizer }})
-     id: build
-     uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-       sanitizer: ${{ matrix.sanitizer }}
-   - name: Run Fuzzers (${{ matrix.sanitizer }})
-     uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-       fuzz-seconds: 600
-       sanitizer: ${{ matrix.sanitizer }}
-   - name: Upload Crash
-     uses: actions/upload-artifact@v1
-     if: failure() && steps.build.outcome == 'success'
-     with:
-       name: ${{ matrix.sanitizer }}-artifacts
-       path: ./out/artifacts
-{% endraw %}
-```
-
-#### Branches and paths
-
-You can make CIFuzz trigger only on certain branches or paths by following the
-instructions [here](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions).
-For example, the following code can used to trigger CIFuzz only on changes to
-C/C++ code residing on master and release branches:
-
-```yaml
-name: CIFuzz
-on:
-  pull_request:
-    branches:
-      - master
-      - 'releases/**'
-    paths:
-      - '**.c'
-      - '**.cc'
-      - '**.cpp'
-      - '**.cxx'
-      - '**.h'
-jobs:
- Fuzzing:
-   runs-on: ubuntu-latest
-   steps:
-   - name: Build Fuzzers
-     id: build
-     uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-   - name: Run Fuzzers
-     uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
-     with:
-       oss-fuzz-project-name: 'example'
-       language: c++
-       fuzz-seconds: 600
-   - name: Upload Crash
-     uses: actions/upload-artifact@v1
-     if: failure() && steps.build.outcome == 'success'
-     with:
-       name: artifacts
-       path: ./out/artifacts
-```
-
-You can checkout CIFuzz configs for OSS-Fuzz projects. Example -
-[systemd](https://github.com/systemd/systemd/blob/master/.github/workflows/cifuzz.yml),
-[curl](https://github.com/curl/curl/blob/master/.github/workflows/fuzz.yml).
-
-## Understanding results
-
-The results of CIFuzz can be found in two different places.
-
-* Run fuzzers log:
-    1. This log can be accessed in the `actions` tab of a CIFuzz integrated repo.
-    1. Click on the `CIFuzz` button in the workflow selector on the left hand side.
-    1. Click on the event triggered by your desired pull request.
-    1. Click the `Fuzzing` workflow.
-    1. Select the `Run Fuzzer` drop down. It should show the timestamps and results
-    from each of the fuzz targets.
-
-![Finding fuzzer output](../images/run_fuzzers.png)
-
-
-*  Artifacts:
-    1. When a crash is found by CIFuzz the Upload Artifact event is triggered.
-    1. This will cause a pop up in the right hand corner, allowing
-    you to download a zip file called `artifacts`.
-    1. `artifacts` contains two files for each crash:
-        * A test case that can be used to reproduce the crash.
-        * The sanitizer stack trace of the crash.
-
-![Finding uploaded artifacts](../images/artifacts.png)
-
-
-## Feedback/Questions/Issues
-
-Create an issue in [OSS-Fuzz](https://github.com/google/oss-fuzz/issues/new) if you have questions or any other feedback on CIFuzz.
diff --git a/docs/getting-started/integration_rewards.md b/docs/getting-started/integration_rewards.md
index c257f01..51b2a8f 100644
--- a/docs/getting-started/integration_rewards.md
+++ b/docs/getting-started/integration_rewards.md
@@ -8,22 +8,6 @@
 
 # Integration rewards
 
-We encourage you to apply for integration rewards (up to **$20,000**) once your project
-is successfully integrated with OSS-Fuzz. Please see the details in our blog post
+We encourage you to apply for integration rewards (upto **$20,000**) once your project is
+successfully integrated with OSS-Fuzz. Please see the details in our blog post
 [here](https://opensource.googleblog.com/2017/05/oss-fuzz-five-months-later-and.html).
-
-Rewards are based on the quality of integration with OSS-Fuzz, which is evaluated using
-the following criteria:
-* Upstream integration of the fuzz targets and build support.
-* Performance of the fuzz targets and code coverage achieved with fuzzing.
-* Regression testing in the upstream repository using fuzz targets and OSS-Fuzz corpora.
-  Enabling [CIFuzz](https://google.github.io/oss-fuzz/getting-started/continuous-integration/)
-  is the easiest way to address this.
-* Discretion bonus to recognize outstanding work.
-
-For each of the points above, the OSS-Fuzz rewards panel first sets up a cap of up to $5,000.
-Then, the panel decides the actual reward amount (ranging from $0 up to the cap) for each
-criteria, depending on how well the criteria is satisfied.
-
-The highest cap values ($5,000) are awarded only to projects of a critical importance for the
-global infrastructure and/or widely used products, devices, or services.
diff --git a/docs/getting-started/new-project-guide/bazel.md b/docs/getting-started/new-project-guide/bazel.md
deleted file mode 100644
index 45b942f..0000000
--- a/docs/getting-started/new-project-guide/bazel.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-layout: default
-title: Integrating a Bazel project
-parent: Setting up a new project
-grand_parent: Getting started
-nav_order: 5
-permalink: /getting-started/new-project-guide/bazel/
----
-
-# Integrating a Bazel project
-{: .no_toc}
-
-- TOC
-{:toc}
----
-
-## Bazel projects
-
-The process of integrating a project using the [Bazel](https://bazel.build/)
-build system with OSS-Fuzz is very similar to the general
-[Setting up a new project]({{ site.baseurl }}/getting-started/new-project-guide/)
-process. The key specifics of integrating a Bazel project are outlined below.
-
-## Fuzzing support in Bazel
-
-For Bazel-based projects, we recommend using the
-[`rules_fuzzing`](https://github.com/bazelbuild/rules_fuzzing) extension library
-for defining fuzz tests. `rules_fuzzing` provides support for building and running
-fuzz tests under
-[multiple sanitizer and fuzzing engine configurations][rules-fuzzing-usage].
-It also supports specifying corpora and dictionaires as part of the fuzz test
-definition.
-
-The fuzzing rules provide out-of-the-box support for building and packaging fuzz
-test artifacts in the OSS-Fuzz format. Each `//path/to:fuzz_test` fuzz test
-target automatically has a `//path/to:fuzz_test_oss_fuzz` packaging target that
-(a) builds the fuzz test using the instrumentation and engine library specified
-in the OSS-Fuzz environment variables, and (b) generates an archive containing
-the binary and its associated artifacts (corpus, dictionary, etc.). Moreover,
-OSS-Fuzz provides a standard tool to automatically process these targets,
-substantially simplifying the `build.sh` script (see below).
-
-[rules-fuzzing-usage]: https://github.com/bazelbuild/rules_fuzzing#using-the-rules-in-your-project
-
-## Project files
-
-This section explains how to integrate the fuzz tests written using the
-`rules_fuzzing` library with OSS-Fuzz. You can also see a complete example in the
-[`bazel-rules-fuzzing-test`](https://github.com/google/oss-fuzz/tree/master/projects/bazel-rules-fuzzing-test)
-project.
-
-The structure of the project directory in the OSS-Fuzz repository does not
-differ for Bazel-based projects. The project files have the following specific
-aspects.
-
-### project.yaml
-
-Only C++ projects are currently supported.
-
-Since the OSS-Fuzz target builds the fuzz test using the instrumentation and
-engine specified in the OSS-Fuzz environment variables, all the engine and
-sanitizer configurations supported in the `project.yaml` file are automatically
-supported by the fuzzing rules.
-
-### Dockerfile
-
-There is no need to install Bazel in your Docker image. The OSS-Fuzz builder
-image provides the `bazel` executable through the
-[Bazelisk](https://github.com/bazelbuild/bazelisk) launcher, which will fetch
-and use the latest Bazel release. If your project requires a particular Bazel
-version, create a
-[`.bazelversion`](https://docs.bazel.build/versions/master/updating-bazel.html)
-file in your repository root with the desired version string.
-
-### build.sh
-
-Your `build.sh` script essentially needs to perform three steps: (1) selecting
-which fuzz tests to build, (2) building their OSS-Fuzz package targets in the
-right configuration, and (3) copying the build artifacts to the `${OUT}/`
-destination.
-
-OSS-Fuzz provides a
-[`bazel_build_fuzz_tests`](https://github.com/google/oss-fuzz/blob/master/infra/base-images/base-builder/bazel_build_fuzz_tests)
-tool that implements these steps in a standard way, so in most cases your
-build script only needs to invoke this command with no arguments.
-
-If necessary, the behavior of the tool can be customized though a set of
-environment variables. The most common are:
-
-* `BAZEL_EXTRA_BUILD_FLAGS` are extra build flags passed on the Bazel command
-   line.
-* `BAZEL_FUZZ_TEST_TAG` and `BAZEL_FUZZ_TEST_EXCLUDE_TAG` can be overriden to
-  specify which target tags to use when determining what fuzz tests to include.
-  By default, the tool selects all the fuzz tests except for those tagged as
-  `"no-oss-fuzz"`.
-* `BAZEL_FUZZ_TEST_QUERY` overrides the Bazel query the tool uses to identify
-  the fuzz tests to build, if the tag-based approach is not sufficient.
diff --git a/docs/getting-started/new-project-guide/go_lang.md b/docs/getting-started/new-project-guide/go_lang.md
index 600a666..939bae7 100644
--- a/docs/getting-started/new-project-guide/go_lang.md
+++ b/docs/getting-started/new-project-guide/go_lang.md
@@ -22,18 +22,13 @@
 ## Go-fuzz support
 
 OSS-Fuzz supports **go-fuzz** in the
-[libFuzzer compatible mode](https://github.com/mdempsky/go114-fuzz-build)
+[libFuzzer compatible mode](https://github.com/dvyukov/go-fuzz#libfuzzer-support)
 only. In that mode, fuzz targets for Go use the libFuzzer engine with native Go
 coverage instrumentation. Binaries compiled in this mode provide the same
 libFuzzer command line interface as non-Go fuzz targets.
 
 ## Project files
 
-First, you need to write a Go fuzz target that accepts a stream of bytes and
-calls the program API with that. This fuzz target should reside in your project
-repository
-([example](https://github.com/golang/go/blob/4ad13555184eb0697c2e92c64c1b0bdb287ccc10/src/html/fuzz.go#L13)).
-
 The structure of the project directory in OSS-Fuzz repository doesn't differ for
 projects written in Go. The project files have the following Go specific
 aspects.
@@ -60,34 +55,35 @@
 ### Dockerfile
 
 The OSS-Fuzz builder image has the latest stable release of Golang installed. In
-order to install dependencies of your project, add `RUN git clone ...` command to
+order to install dependencies of your project, add `RUN go get ...` command to
 your Dockerfile.
 [Example](https://github.com/google/oss-fuzz/blob/356f2b947670b7eb33a1f535c71bc5c87a60b0d1/projects/syzkaller/Dockerfile#L23):
 
 ```dockerfile
 # Dependency for one of the fuzz targets.
-RUN git clone --depth 1 https://github.com/ianlancetaylor/demangle
+RUN go get github.com/ianlancetaylor/demangle
 ```
 
-go-fuzz will then automatically download the dependencies based on the go.mod file
-
 ### build.sh
 
-In order to build a Go fuzz target, you need to call `go-fuzz`
+In order to build a Go fuzz target, you need to call `go-fuzz-build -libfuzzer`
 command first, and then link the resulting `.a` file against
 `$LIB_FUZZING_ENGINE` using the `$CXX $CXXFLAGS ...` command.
-
-The best way to do this is by using a `compile_go_fuzzer` script,
-as it also supports coverage builds.
-
-A usage example from go-dns project is
+[Example](https://github.com/google/oss-fuzz/blob/356f2b947670b7eb33a1f535c71bc5c87a60b0d1/projects/syzkaller/build.sh#L19):
 
 ```sh
-compile_go_fuzzer github.com/miekg/dns FuzzNewRR fuzz_newrr fuzz
-```
+function compile_fuzzer {
+  path=$1
+  function=$2
+  fuzzer=$3
 
-Arguments are :
-* path of the package with the fuzz target
-* name of the fuzz function
-* name of the fuzzer to be built
-* optional tag to be used by `go build` and such
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path 
+
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
+
+compile_fuzzer ./pkg/compiler Fuzz compiler_fuzzer
+compile_fuzzer ./prog/test FuzzDeserialize prog_deserialize_fuzzer
+```
diff --git a/docs/getting-started/new-project-guide/jvm_lang.md b/docs/getting-started/new-project-guide/jvm_lang.md
deleted file mode 100644
index 19e4ecb..0000000
--- a/docs/getting-started/new-project-guide/jvm_lang.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-layout: default
-title: Integrating a Java/JVM project
-parent: Setting up a new project
-grand_parent: Getting started
-nav_order: 4
-permalink: /getting-started/new-project-guide/jvm-lang/
----
-
-# Integrating a Java/JVM project
-{: .no_toc}
-
-- TOC
-{:toc}
----
-
-The process of integrating a project written in Java or any other language
-running on the Java Virtual Machine (JVM) with OSS-Fuzz is very similar to the
-general
-[Setting up a new project]({{ site.baseurl }}/getting-started/new-project-guide/)
-process. The key specifics of integrating a JVM project are outlined below.
-
-## Jazzer
-
-Java fuzzing in OSS-Fuzz depends on
-[Jazzer](https://github.com/CodeIntelligenceTesting/jazzer), which is
-pre-installed on the OSS-Fuzz base docker images. As Jazzer operates directly
-on the bytecode level, it can be applied to any project written in a JVM-based
-language. More information on how Jazzer fuzz targets look like can be found in
-its
-[README's Usage section](https://github.com/CodeIntelligenceTesting/jazzer#usage).
-
-## Project files
-
-### Example project
-
-We recommend viewing
-[json-sanitizer](https://github.com/google/oss-fuzz/tree/master/projects/json-sanitizer)
-as an example of a simple Java-only fuzzing project. Additional examples,
-including one for a Java project with native dependencies, are part of the
-[java-example](https://github.com/google/oss-fuzz/tree/master/projects/java-example)
-project.
-
-### project.yaml
-
-The `language` attribute must be specified as follows:
-
-```yaml
-language: jvm
-```
-
-The only supported fuzzing engine is libFuzzer (`libfuzzer`). So far the only
-supported sanitizer is AddressSanitizer (`address`), which needs to be
-specified explicitly even for pure Java projects.
-
-```yaml
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-```
-
-### Dockerfile
-
-The OSS-Fuzz base Docker images already come with OpenJDK 15 pre-installed. If
-you need Maven to build your project, you can install it by adding the following
-line to your Dockerfile:
-
-```docker
-RUN apt-get update && apt-get install -y maven
-```
-
-Apart from this, you should usually not need to do more than to clone the
-project, set a `WORKDIR`, and copy any necessary files, or install any
-project-specific dependencies here as you normally would.
-
-### Fuzzers
-
-In the simplest case, every fuzzer consists of a single Java file with a
-filename matching `*Fuzzer.java` and no `package` directive. An example fuzz
-target could thus be a file `ExampleFuzzer.java` with contents:
-
-```java
-public class ExampleFuzzer {
-    public static void fuzzerTestOneInput(byte[] input) {
-        ...
-        // Call a function of the project under test with arguments derived from
-        // input and throw an exception if something unwanted happens.
-        ...
-    }
-}
-```
-
-### build.sh
-
-For JVM projects, `build.sh` does need some more significant modifications
-over C/C++ projects. Below is an annotated example build script for a
-Java-only project with single-file fuzz targets as described above:
-
-```sh
-# Step 1: Build the project
-
-# Build the project .jar as usual, e.g. using Maven.
-mvn package
-# In this example, the project is built with Maven, which typically includes the
-# project version into the name of the packaged .jar file. The version can be
-# obtained as follows:
-CURRENT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
--Dexpression=project.version -q -DforceStdout)
-# Copy the project .jar into $OUT under a fixed name.
-cp "target/sample-project-$CURRENT_VERSION.jar" $OUT/sample-project.jar
-
-# Specify the projects .jar file(s), separated by spaces if there are multiple.
-PROJECT_JARS="sample-project.jar"
-
-# Step 2: Build the fuzzers (should not require any changes)
-
-# The classpath at build-time includes the project jars in $OUT as well as the
-# Jazzer API.
-BUILD_CLASSPATH=$(echo $PROJECT_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
-
-# All .jar and .class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=$(echo $PROJECT_JARS | xargs printf -- "\$this_dir/%s:"):\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  # Create an execution wrapper that executes Jazzer with the correct arguments.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
-```
-
-## FuzzedDataProvider
-
-Jazzer provides a `FuzzedDataProvider` that can simplify the task of creating a
-fuzz target by translating the raw input bytes received from the fuzzer into
-useful primitive Java types. Its functionality is similar to
-`FuzzedDataProviders` available in other languages, such as
-[Python](https://github.com/google/atheris#fuzzeddataprovider) and
-[C++](https://github.com/google/fuzzing/blob/master/docs/split-inputs.md).
-
-On OSS-Fuzz, the required library is available in the base docker images under
-the path `$JAZZER_API_PATH`, which is added to the classpath by the example
-build script shown above. Locally, the library can be obtained from
-[Maven Central](https://search.maven.org/search?q=g:com.code-intelligence%20a:jazzer-api).
-
-A fuzz target using the `FuzzedDataProvider` would look as follows:
-
-```java
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-
-public class ExampleFuzzer {
-    public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-        int number = data.consumeInt();
-        String string = data.consumeRemainingAsString();
-        // ...
-    }
-}
-```
-
-For a list of convenience methods offered by `FuzzedDataProvider`, consult its
-[javadocs](https://codeintelligencetesting.github.io/jazzer-api/com/code_intelligence/jazzer/api/FuzzedDataProvider.html).
diff --git a/docs/getting-started/new-project-guide/python_lang.md b/docs/getting-started/new-project-guide/python_lang.md
deleted file mode 100644
index da14780..0000000
--- a/docs/getting-started/new-project-guide/python_lang.md
+++ /dev/null
@@ -1,135 +0,0 @@
----
-layout: default
-title: Integrating a Python project
-parent: Setting up a new project
-grand_parent: Getting started
-nav_order: 3
-permalink: /getting-started/new-project-guide/python-lang/
----
-
-# Integrating a Python project
-{: .no_toc}
-
-- TOC
-{:toc}
----
-
-
-The process of integrating a project written in Python with OSS-Fuzz is very
-similar to the general
-[Setting up a new project]({{ site.baseurl }}/getting-started/new-project-guide/)
-process. The key specifics of integrating a Python project are outlined below.
-
-## Atheris
-
-Python fuzzing in OSS-Fuzz depends on
-[Atheris](https://github.com/google/atheris). Fuzzers will depend on the
-`atheris` package, and dependencies are pre-installed on the OSS-Fuzz base
-docker images.
-
-## Project files
-
-### Example project
-
-We recommend viewing [ujson](https://github.com/google/oss-fuzz/tree/master/projects/ujson) as an
-example of a simple Python fuzzing project, with both plain-Atheris and
-Atheris + Hypothesis harnesses.
-
-### project.yaml
-
-The `language` attribute must be specified.
-
-```yaml
-language: python
-```
-
-The only supported fuzzing engine is libFuzzer (`libfuzzer`). The supported
-sanitizers are AddressSanitizer (`address`) and
-UndefinedBehaviorSanitizer (`undefined`). These must be explicitly specified.
-
-```yaml
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-```
-
-### Dockerfile
-
-Because most dependencies are already pre-installed on the images, no
-significant changes are needed in the Dockerfile for Python fuzzing projects.
-You should simply clone the project, set a `WORKDIR`, and copy any necessary
-files, or install any project-specific dependencies here as you normally would.
-
-### build.sh
-
-For Python projects, `build.sh` does need some more significant modifications
-over normal projects. The following is an annotated example build script,
-explaining why each step is necessary and when they can be omitted.
-
-```sh
-# Build and install project (using current CFLAGS, CXXFLAGS). This is required
-# for projects with C extensions so that they're built with the proper flags.
-pip3 install .
-
-# Build fuzzers into $OUT. These could be detected in other ways.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-
-  # To avoid issues with Python version conflicts, or changes in environment
-  # over time on the OSS-Fuzz bots, we use pyinstaller to create a standalone
-  # package. Though not necessarily required for reproducing issues, this is
-  # required to keep fuzzers working properly in OSS-Fuzz.
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper. Atheris requires that certain libraries are
-  # preloaded, so this is also done here to ensure compatibility and simplify
-  # test case reproduction. Since this helper script is what OSS-Fuzz will
-  # actually execute, it is also always required.
-  # NOTE: If you are fuzzing python-only code and do not have native C/C++
-  # extensions, then remove the LD_PRELOAD line below as preloading sanitizer
-  # library is not required and can lead to unexpected startup crashes.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
-```
-
-## Hypothesis
-
-Using [Hypothesis](https://hypothesis.readthedocs.io/), the Python library for
-[property-based testing](https://hypothesis.works/articles/what-is-property-based-testing/),
-makes it really easy to generate complex inputs - whether in traditional test suites
-or [by using test functions as fuzz harnesses](https://hypothesis.readthedocs.io/en/latest/details.html#use-with-external-fuzzers).
-
-> Property based testing is the construction of tests such that, when these tests are fuzzed,
-  failures in the test reveal problems with the system under test that could not have been
-  revealed by direct fuzzing of that system.
-
-We recommend using the [`hypothesis write`](https://hypothesis.readthedocs.io/en/latest/ghostwriter.html)
-command to generate a starter fuzz harness.  This "ghostwritten" code may be usable as-is,
-or provide a useful template for writing more specific tests.
-
-See [here for the core "strategies"](https://hypothesis.readthedocs.io/en/latest/data.html),
-for arbitrary data, [here for Numpy + Pandas support](https://hypothesis.readthedocs.io/en/latest/numpy.html),
-or [here for a variety of third-party extensions](https://hypothesis.readthedocs.io/en/latest/strategies.html)
-supporting everything from protobufs, to jsonschemas, to networkx graphs or geojson
-or valid Python source code.
-Hypothesis' integrated test-case reduction also makes it trivial to report a canonical minimal
-example for each distinct failure discovered while fuzzing - just run the test function!
-
-To use Hypothesis in OSS-Fuzz, install it in your Dockerfile with
-
-```shell
-RUN pip3 install hypothesis
-```
-
-See [the `ujson` structured fuzzer](https://github.com/google/oss-fuzz/blob/master/projects/ujson/hypothesis_structured_fuzzer.py)
-for an example "polyglot" which can either be run with `pytest` as a standard test function,
-or run with OSS-Fuzz as a fuzz harness.
diff --git a/docs/getting-started/new-project-guide/rust_lang.md b/docs/getting-started/new-project-guide/rust_lang.md
deleted file mode 100644
index c28dd76..0000000
--- a/docs/getting-started/new-project-guide/rust_lang.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-layout: default
-title: Integrating a Rust project
-parent: Setting up a new project
-grand_parent: Getting started
-nav_order: 2
-permalink: /getting-started/new-project-guide/rust-lang/
----
-
-# Integrating a Rust project
-{: .no_toc}
-
-- TOC
-{:toc}
----
-
-The process of integrating a project written in Rust with OSS-Fuzz is very
-similar to the general [Setting up a new project]({{ site.baseurl
-}}/getting-started/new-project-guide/) process. The key specifics of integrating
-a Rust project are outlined below.
-
-## cargo-fuzz support
-
-Rust integration with OSS-Fuzz is expected to use [`cargo
-fuzz`](https://github.com/rust-fuzz/cargo-fuzz) to build fuzzers. The `cargo
-fuzz` tool will build code with required compiler flags as well as link to the
-correct libFuzzer on OSS-Fuzz itself. Note that using `cargo fuzz` also makes it
-quite easy to run the fuzzers locally yourself if you get a failing test case!
-
-## Project files
-
-First you'll want to follow the [setup instructions for `cargo fuzz`
-itself](https://rust-fuzz.github.io/book/). Afterwards your project should have:
-
-* A top-level `fuzz` directory.
-* A `fuzz/Cargo.toml` manifest which pulls in necessary dependencies to fuzz.
-* Some `fuzz/fuzz_targets/*.rs` files which are the fuzz targets that will be
-  compiled and run on OSS-Fuzz.
-
-Note that you can customize this layout as well, but you'll need to edit some
-the scripts below to integrate into OSS-Fuzz.
-
-### project.yaml
-
-The `language` attribute must be specified.
-
-```yaml
-language: rust
-```
-
-The only supported fuzzing engine and sanitizer are `libfuzzer` and `address`,
-respectively.
-[Example](https://github.com/google/oss-fuzz/blob/12ef3654b3e9adfd20b5a6afdde54819ba71493d/projects/serde_json/project.yaml#L3-L6)
-
-```yaml
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-```
-
-### Dockerfile
-
-The OSS-Fuzz builder image has the latest nightly release of Rust as well as
-`cargo fuzz` pre-installed and in `PATH`. In the `Dockerfile` for your project
-all you'll need to do is fetch the latest copy of your code and install any
-system dependencies necessary to build your project.
-[Example](https://github.com/google/oss-fuzz/blob/12ef3654b3e9adfd20b5a6afdde54819ba71493d/projects/serde_json/Dockerfile#L18-L20)
-
-```dockerfile
-RUN git clone --depth 1 https://github.com/serde-rs/json json
-```
-
-### build.sh
-
-Here it's expected that you'll build the fuzz targets for your project and then
-copy the final binaries into the output directory.
-[Example](https://github.com/google/oss-fuzz/blob/12ef3654b3e9adfd20b5a6afdde54819ba71493d/projects/serde_json/build.sh#L20):
-
-```sh
-cd $SRC/json
-cargo fuzz build -O
-cp fuzz/target/x86_64-unknown-linux-gnu/release/from_slice $OUT/
-```
-
-Note that you likely want to pass the `-O` flag to `cargo fuzz build` which
-builds fuzzers in release mode. You may also want to pass the
-`--debug-assertions` flag to enable more checks while fuzzing. In this example
-the `from_slice` binary is the fuzz target.
-
-With some bash-fu you can also automatically copy over all fuzz targets into
-the output directory so when you add a fuzz target to your project it's
-automatically integrated into OSS-Fuzz:
-
-```sh
-FUZZ_TARGET_OUTPUT_DIR=target/x86_64-unknown-linux-gnu/release
-for f in fuzz/fuzz_targets/*.rs
-do
-    FUZZ_TARGET_NAME=$(basename ${f%.*})
-    cp $FUZZ_TARGET_OUTPUT_DIR/$FUZZ_TARGET_NAME $OUT/
-done
-```
diff --git a/docs/getting-started/new_project_guide.md b/docs/getting-started/new_project_guide.md
index d2a7d80..8018c60 100644
--- a/docs/getting-started/new_project_guide.md
+++ b/docs/getting-started/new_project_guide.md
@@ -39,9 +39,6 @@
   [docker-cleanup](https://gist.github.com/mikea/d23a839cba68778d94e0302e8a2c200f)
   periodically to garbage-collect unused images.
 
-- (optional) [Install gsutil](https://cloud.google.com/storage/docs/gsutil_install) for local code coverage testing.
-  For Google internal (gLinux) machines, please refer [here](https://cloud.google.com/storage/docs/gsutil_install#deb) instead.
-
 ## Creating the file structure
 
 Each OSS-Fuzz project has a subdirectory
@@ -75,37 +72,20 @@
 This configuration file stores project metadata. The following attributes are supported:
 
 - [homepage](#homepage)
-- [language](#language)
 - [primary_contact](#primary)
-- [auto_ccs](#auto_ccs)
-- [main_repo](#main_repo)
+- [auto_ccs](#primary)
 - [vendor_ccs](#vendor) (optional)
 - [sanitizers](#sanitizers) (optional)
 - [architectures](#architectures) (optional)
 - [help_url](#help_url) (optional)
-- [builds_per_day](#build_frequency) (optional)
 
 ### homepage
 You project's homepage.
 
-### language
-
-Programming language the project is written in. Values you can specify include:
-
-* `c`
-* `c++`
-* [`go`]({{ site.baseurl }}//getting-started/new-project-guide/go-lang/)
-* [`rust`]({{ site.baseurl }}//getting-started/new-project-guide/rust-lang/)
-* [`python`]({{ site.baseurl }}//getting-started/new-project-guide/python-lang/)
-* [`jvm` (Java, Kotlin, Scala and other JVM-based languages)]({{ site.baseurl }}//getting-started/new-project-guide/jvm-lang/)
-
 ### primary_contact, auto_ccs {#primary}
 The primary contact and list of other contacts to be CCed. Each person listed gets access to ClusterFuzz, including crash reports and fuzzer statistics, and are auto-cced on new bugs filed in the OSS-Fuzz
 tracker. If you're a primary or a CC, you'll need to use a [Google account](https://support.google.com/accounts/answer/176347?hl=en) to get full access. ([why?]({{ site.baseurl }}/faq/#why-do-you-require-a-google-account-for-authentication)).
 
-### main_repo {#main_repo}
-Path to source code repository hosting the code, e.g. `https://path/to/main/repo.git`. 
-
 ### vendor_ccs (optional) {#vendor}
 The list of vendor email addresses that are downstream consumers of the project and want access to
 the bug reports as they are filed.
@@ -123,11 +103,11 @@
 and recommended, but is not enabled by default due to the likelihood of false positives from
 un-instrumented system dependencies. If you want to use "memory," first make sure your project's
 runtime dependencies are listed in the OSS-Fuzz
-[msan-libs-builder Dockerfile](https://github.com/google/oss-fuzz/blob/master/infra/base-images/msan-libs-builder/Dockerfile#L20).
+[msan-builder Dockerfile](https://github.com/google/oss-fuzz/blob/master/infra/base-images/msan-builder/Dockerfile#L20).
 Then, you can opt in by adding "memory" to your list of sanitizers.
 
 If your project does not build with a particular sanitizer configuration and you need some time to fix
-it, you can use `sanitizers` to override the defaults temporarily. For example, to disable the
+it, you can use `sanitizers` to override the defaults temporarily. For example, to disable the 
 UndefinedBehaviourSanitizer build, just specify all supported sanitizers except "undefined".
 
 If you want to test a particular sanitizer to see what crashes it generates without filing
@@ -149,15 +129,14 @@
 ### architectures (optional) {#architectures}
 The list of architectures to fuzz on.
 ClusterFuzz supports fuzzing on x86_64 (aka x64) by default.
-Some projects can benefit from i386 fuzzing. OSS-Fuzz will build and run
-AddressSanitizer with libFuzzer on i386 by doing the following:
+However you can also fuzz using AddressSanitizer and libFuzzer on i386 (aka x86, or 32 bit) by specifying "x86_64" and "i386" in "architectures" like this:
 
 ```yaml
 architectures:
  - x86_64
  - i386
  ```
-
+ 
 By fuzzing on i386 you might find bugs that:
 * Only occur in architecture-specific source code (e.g. code that contains i386 assembly).
 * Exist in architecture-independent source code and which only affects i386 users.
@@ -177,23 +156,15 @@
 
 `help_url` example: [skia](https://github.com/google/oss-fuzz/blob/master/projects/skia/project.yaml).
 
-### builds_per_day (optional) {#build_frequency}
-The number of times the project should be built per day.
-OSS-Fuzz allows upto 4 builds per day, and builds once per day by default.
-Example:
-```yaml
-builds_per_day: 2
-```
-
-Will build the project twice per day.
-
 ## Dockerfile
 
 This configuration file defines the Docker image for your project. Your [build.sh](#build.sh) script will be executed in inside the container you define.
 For most projects, the image is simple:
 ```docker
 FROM gcr.io/oss-fuzz-base/base-builder       # base image with clang toolchain
+MAINTAINER YOUR_EMAIL                        # maintainer for this file
 RUN apt-get update && apt-get install -y ... # install required packages to build your project
+RUN go get ...                               # install dependencies to build your Go project
 RUN git clone <git_url> <checkout_dir>       # checkout all sources needed to build your project
 WORKDIR <checkout_dir>                       # current directory for the build script
 COPY build.sh fuzzer.cc $SRC/                # copy build script and other fuzzer files in src dir
@@ -215,7 +186,7 @@
 - Build the project using your build system with the correct compiler.
 - Provide compiler flags as [environment variables](#Requirements).
 - Build your [fuzz targets]({{ site.baseurl }}/reference/glossary/#fuzz-target) and link your project's build with libFuzzer.
-
+   
 Resulting binaries should be placed in `$OUT`.
 
 Here's an example from Expat ([source](https://github.com/google/oss-fuzz/blob/master/projects/expat/build.sh)):
@@ -239,37 +210,13 @@
 
 If your project is written in Go, check out the [Integrating a Go project]({{ site.baseurl }}//getting-started/new-project-guide/go-lang/) page.
 
-**Note:**
+**Notes:**
 
-1. Don't assume the fuzzing engine is libFuzzer by default, because we generate builds for libFuzzer, AFL++ and Honggfuzz fuzzing engine configurations. Instead, link the fuzzing engine using $LIB_FUZZING_ENGINE.
+1. Don't assume the fuzzing engine is libFuzzer by default, because we generate builds for both libFuzzer and AFL fuzzing engine configurations. Instead, link the fuzzing engine using $LIB_FUZZING_ENGINE.
 2. Make sure that the binary names for your [fuzz targets]({{ site.baseurl }}/reference/glossary/#fuzz-target) contain only
 alphanumeric characters, underscore(_) or dash(-). Otherwise, they won't run on our infrastructure.
 3. Don't remove source code files. They are needed for code coverage.
 
-### Temporarily disabling code instrumentation during builds
-
-Sometimes not every 3rd party library might be needed to be instrumented or
-tools are being compiled that just support the target built.
-
-If for any reasons part of the build process should not be instrumented
-then the following code snippit can be used for this:
-
-```
-CFLAGS_SAVE="$CFLAGS"
-CXXFLAGS_SAVE="$CXXFLAGS"
-unset CFLAGS
-unset CXXFLAGS
-export AFL_NOOPT=1
-
-#
-# build commands here that should not result in instrumented code.
-#
-
-export CFLAGS="${CFLAGS_SAVE}"
-export CXXFLAGS="${CXXFLAGS_SAVE}"
-unset AFL_NOOPT
-```
-
 ### build.sh script environment
 
 When your build.sh script is executed, the following locations are available within the image:
@@ -311,7 +258,7 @@
 
 ## Disk space restrictions
 
-Our builders have a disk size of 250GB (this includes space taken up by the OS). Builds must keep peak disk usage below this.
+Our builders have a disk size of 70GB (this includes space taken up by the OS). Builds must keep peak disk usage below this.
 
 In addition, please keep the size of the build (everything copied to `$OUT`) small (<10GB uncompressed). The build is repeatedly transferred and unzipped during fuzzing and runs on VMs with limited disk space.
 
@@ -322,7 +269,7 @@
 
 ## Testing locally
 
-You can build your docker image and fuzz targets locally, so you can test them before you push them to the OSS-Fuzz repository.
+You can build your docker image and fuzz targets locally, so you can test them before you push them to the OSS-Fuzz repository. 
 
 1. Run the same helper script you used to create your directory structure, this time using it to build your docker image and [fuzz targets]({{ site.baseurl }}/reference/glossary/#fuzz-target):
 
@@ -338,8 +285,8 @@
     **Note:** You *must* run your fuzz target binaries inside the base-runner docker
     container to make sure that they work properly.
 
-2. Find failures to fix by running the `check_build` command:
-
+2. Find failures to fix by running the `check_build` command: 
+    
     ```bash
     $ python infra/helper.py check_build $PROJECT_NAME
     ```
@@ -347,28 +294,21 @@
 3. If you want to test changes against a particular fuzz target, run the following command:
 
     ```bash
-    $ python infra/helper.py run_fuzzer --corpus-dir=<path-to-temp-corpus-dir> $PROJECT_NAME <fuzz_target>
+    $ python infra/helper.py run_fuzzer $PROJECT_NAME <fuzz_target>
     ```
 
-4. We recommend taking a look at your code coverage as a test to ensure that
-your fuzz targets get to the code you expect. This would use the corpus
-generated from the previous `run_fuzzer` step in your local corpus directory.
+4. We recommend taking a look at your code coverage as a sanity check to make sure that your
+fuzz targets get to the code you expect:
 
     ```bash
     $ python infra/helper.py build_fuzzers --sanitizer coverage $PROJECT_NAME
-    $ python infra/helper.py coverage $PROJECT_NAME --fuzz-target=<fuzz_target> --corpus-dir=<path-to-temp-corpus-dir>
+    $ python infra/helper.py coverage $PROJECT_NAME <fuzz_target>
     ```
 
-You may need to run `python infra/helper.py pull_images` to use the latest
-coverage tools. Please refer to
-[code coverage]({{ site.baseurl }}/advanced-topics/code-coverage/) for detailed
-information on code coverage generation.
-
-
-**Note:** Currently, we only support AddressSanitizer (address) and UndefinedBehaviorSanitizer (undefined)
+**Note:** Currently, we only support AddressSanitizer (address) and UndefinedBehaviorSanitizer (undefined) 
 configurations. MemorySanitizer is recommended, but needs to be enabled manually once you verify
 that all system dependencies are
-[instrumented](https://github.com/google/oss-fuzz/blob/master/infra/base-images/msan-libs-builder/Dockerfile#L20).
+[instrumented](https://github.com/google/oss-fuzz/blob/master/infra/base-images/msan-builder/Dockerfile#L20).
 <b>Make sure to test each
 of the supported build configurations with the above commands (build_fuzzers -> run_fuzzer -> coverage).</b>
 
@@ -447,7 +387,7 @@
 Please include copyright headers for all files checked in to oss-fuzz:
 
 ```
-# Copyright 2021 Google LLC
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
diff --git a/docs/images/artifacts.png b/docs/images/artifacts.png
deleted file mode 100644
index fb1e43e..0000000
--- a/docs/images/artifacts.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/run_fuzzers.png b/docs/images/run_fuzzers.png
deleted file mode 100644
index 64b26d4..0000000
--- a/docs/images/run_fuzzers.png
+++ /dev/null
Binary files differ
diff --git a/docs/index.md b/docs/index.md
index c372e77..66d9d9b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -9,56 +9,41 @@
 
 # OSS-Fuzz
 
-[Fuzz testing] is a well-known technique for uncovering programming errors in
-software. Many of these detectable errors, like [buffer overflow], can have
-serious security implications. Google has found [thousands] of security
-vulnerabilities and stability bugs by deploying [guided in-process fuzzing of
-Chrome components], and we now want to share that service with the open source
-community.
+[Fuzz testing](https://en.wikipedia.org/wiki/Fuzz_testing) is a well-known
+technique for uncovering programming errors in software.
+Many of these detectable errors, like [buffer overflow](https://en.wikipedia.org/wiki/Buffer_overflow),
+can have serious security implications. Google has found [thousands] of security vulnerabilities and
+stability bugs by deploying
+[guided in-process fuzzing of Chrome components](https://security.googleblog.com/2016/08/guided-in-process-fuzzing-of-chrome.html),
+and we now want to share that service with the open source community.
 
-[Fuzz testing]: https://en.wikipedia.org/wiki/Fuzz_testing
-[buffer overflow]: https://en.wikipedia.org/wiki/Buffer_overflow
 [thousands]: https://bugs.chromium.org/p/chromium/issues/list?q=label%3AStability-LibFuzzer%2CStability-AFL%20-status%3ADuplicate%2CWontFix&can=1
-[guided in-process fuzzing of Chrome components]: https://security.googleblog.com/2016/08/guided-in-process-fuzzing-of-chrome.html
 
-In cooperation with the [Core Infrastructure Initiative] and the [OpenSSF],
+In cooperation with the [Core Infrastructure Initiative](https://www.coreinfrastructure.org/), 
 OSS-Fuzz aims to make common open source software more secure and stable by
-combining modern fuzzing techniques with scalable, distributed execution.
+combining modern fuzzing techniques with scalable,
+distributed execution.
 
-[Core Infrastructure Initiative]: https://www.coreinfrastructure.org/
-[OpenSSF]: https://www.openssf.org/
+We support the [libFuzzer](http://llvm.org/docs/LibFuzzer.html) and [AFL](http://lcamtuf.coredump.cx/afl/) fuzzing engines
+in combination with [Sanitizers](https://github.com/google/sanitizers), as well as
+[ClusterFuzz](https://github.com/google/clusterfuzz),
+a distributed fuzzer execution environment and reporting tool. 
 
-We support the [libFuzzer], [AFL++], and [Honggfuzz] fuzzing engines in
-combination with [Sanitizers], as well as [ClusterFuzz], a distributed fuzzer
-execution environment and reporting tool.
-
-[libFuzzer]: https://llvm.org/docs/LibFuzzer.html
-[AFL++]: https://github.com/AFLplusplus/AFLplusplus
-[Honggfuzz]: https://github.com/google/honggfuzz
-[Sanitizers]: https://github.com/google/sanitizers
-[ClusterFuzz]: https://github.com/google/clusterfuzz
-
-Currently, OSS-Fuzz supports C/C++, Rust, Go, Python and Java/JVM code. Other
-languages supported by [LLVM] may work too. OSS-Fuzz supports fuzzing x86_64
-and i386 builds.
-
-[LLVM]: https://llvm.org
+Currently, OSS-Fuzz supports C/C++, Rust, and Go code. Other languages supported by [LLVM](http://llvm.org) may work too.
+OSS-Fuzz supports fuzzing x86_64 and i386 builds.
 
 ## Learn more about fuzzing
 
-This documentation describes how to use OSS-Fuzz service for your open source
-project. To learn more about fuzzing in general, we recommend reading [libFuzzer
-tutorial] and the other docs in [google/fuzzing] repository. These and some
-other resources are listed on the [useful links] page.
+This documentation describes how to use OSS-Fuzz service for your open source project.
+To learn more about fuzzing in general, we recommend reading [libFuzzer tutorial]
+and the other docs in [google/fuzzing] repository. These and some other resources
+are listed on the [useful links]({{ site.baseurl }}/reference/useful-links/#tutorials) page.
 
 [google/fuzzing]: https://github.com/google/fuzzing/tree/master/docs
 [libFuzzer tutorial]: https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md
-[useful links]: {{ site.baseurl }}/reference/useful-links/#tutorials
 
 ## Trophies
-As of January 2021, OSS-Fuzz has found over [25,000] bugs in [375] open source
-projects.
+As of January 2020, OSS-Fuzz has found over [16,000] bugs in [250] open source projects.
 
-[25,000]: https://bugs.chromium.org/p/oss-fuzz/issues/list?q=-status%3AWontFix%2CDuplicate%20-component%3AInfra&can=1
-[375]: https://github.com/google/oss-fuzz/tree/master/projects
-
+[16,000]: https://bugs.chromium.org/p/oss-fuzz/issues/list?q=-status%3AWontFix%2CDuplicate%20-component%3AInfra&can=1
+[250]: https://github.com/google/oss-fuzz/tree/master/projects
diff --git a/docs/oss-fuzz/architecture.md b/docs/oss-fuzz/architecture.md
index 56ff296..689870e 100644
--- a/docs/oss-fuzz/architecture.md
+++ b/docs/oss-fuzz/architecture.md
@@ -29,5 +29,5 @@
   discovery (the commit message should contain the string **'Credit to OSS-Fuzz'**).
 
 Once the developer fixes the bug, [ClusterFuzz]({{ site.baseurl }}/further-reading/clusterfuzz) automatically
-verifies the fix, adds a comment, and closes the issue ([example](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53#c3)). After the fix is verified or 90 days after reporting (whichever is earlier), the issue becomes [public]({{ site.baseurl }}/getting-started/bug-disclosure-guidelines/).
+verifies the fix, adds a comment, and closes the issue ([example](https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53#c3)). 30 days after the fix is verified or 90 days after reporting (whichever is earlier), the issue becomes [public]({{ site.baseurl }}/getting-started/bug-disclosure-guidelines/).
 
diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md
index 7b12995..374bd42 100644
--- a/docs/reference/glossary.md
+++ b/docs/reference/glossary.md
@@ -30,12 +30,9 @@
 
 ### Fuzz Target
 
-In addition to its
-[general definition](https://github.com/google/fuzzing/blob/master/docs/glossary.md#fuzz-target),
-in OSS-Fuzz a fuzz target can be used to
-[reproduce bug reports]({{ site.baseurl }}/advanced-topics/reproducing/).
-It is recommended to use it for regression testing as well (see
-[ideal integration]({{ site.baseurl }}/advanced-topics/ideal-integration/)).
+In addition to its general definition, in OSS-Fuzz a fuzz target can be used to
+[reproduce bug reports]({{ site.baseurl }}/advanced-topics/reproducing/). It is recommended to use it for
+regression testing as well (see [ideal integration]({{ site.baseurl }}/advanced-topics/ideal-integration/)).
 
 ### Job type
 
diff --git a/docs/reference/useful_links.md b/docs/reference/useful_links.md
index 3e39ba3..efbcfed 100644
--- a/docs/reference/useful_links.md
+++ b/docs/reference/useful_links.md
@@ -21,6 +21,8 @@
 * [This page](https://oss-fuzz-build-logs.storage.googleapis.com/index.html)
   gives the latest build logs for each project.
 
+* (Internal only) [Builds dashboard](https://builder.oss-fuzz.com).
+
 ## Blog posts
 
 * 2016-12-01 - Announcing OSS-Fuzz: Continuous fuzzing for open source software
@@ -33,8 +35,6 @@
 [Security](https://security.googleblog.com/2017/05/oss-fuzz-five-months-later-and.html))
 * 2018-11-06 - A New Chapter for OSS-Fuzz
 ([Security](https://security.googleblog.com/2018/11/a-new-chapter-for-oss-fuzz.html))
-* 2020-10-09 - [Fuzzing internships for Open Source Software](https://security.googleblog.com/2020/10/fuzzing-internships-for-open-source.html)
-* 2020-12-07 - [Improving open source security during the Google summer internship program](https://security.googleblog.com/2020/12/improving-open-source-security-during.html)
 
 ## Tutorials
 
diff --git a/infra/.dockerignore b/infra/.dockerignore
deleted file mode 100644
index c786533..0000000
--- a/infra/.dockerignore
+++ /dev/null
@@ -1,9 +0,0 @@
-cifuzz/test_data/*
-
-# Copied from .gitignore.
-.vscode/
-*.pyc
-build
-*~
-.DS_Store
-*.swp
\ No newline at end of file
diff --git a/infra/.pylintrc b/infra/.pylintrc
new file mode 100644
index 0000000..8ce0b22
--- /dev/null
+++ b/infra/.pylintrc
@@ -0,0 +1,2 @@
+[FORMAT]
+indent-string = "  "
\ No newline at end of file
diff --git a/infra/base-images/Jenkinsfile b/infra/base-images/Jenkinsfile
new file mode 100644
index 0000000..67b22e9
--- /dev/null
+++ b/infra/base-images/Jenkinsfile
@@ -0,0 +1,37 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Jenkins build script for base images.
+node {
+  git url: 'https://github.com/google/oss-fuzz/'
+  
+  stage("infra/base-images/all.sh") {
+    sh "infra/base-images/all.sh --no-cache"
+  }
+  
+  stage("docker push") {
+    def images = ['ossfuzz/base-image', 'ossfuzz/base-clang', 'ossfuzz/base-libfuzzer',
+                  'ossfuzz/base-runner', 'ossfuzz/base-runner-debug',
+                  'ossfuzz/base-builder',]  
+    
+    docker.withRegistry('', 'docker-login') {
+        for (int i = 0; i < images.size(); i++) {
+            def image = images[i]
+            docker.image(image).push()
+        }
+    }
+  }
+}
diff --git a/infra/base-images/base-builder/Dockerfile b/infra/base-images/base-builder/Dockerfile
index d802f24..0e22baf 100644
--- a/infra/base-images/base-builder/Dockerfile
+++ b/infra/base-images/base-builder/Dockerfile
@@ -15,64 +15,20 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-clang
-
-RUN dpkg --add-architecture i386 && \
-    apt-get update && \
-    apt-get install -y software-properties-common && \
-    add-apt-repository ppa:git-core/ppa && \
-    apt-get update && \
-    apt-get install -y \
-        binutils-dev \
-        build-essential \
-        curl \
-        git \
-        jq \
-        libc6-dev-i386 \
-        patchelf \
-        rsync \
-        subversion \
-        zip
-
-# Build and install latest Python 3 (3.8.3).
-ENV PYTHON_VERSION 3.8.3
-RUN export PYTHON_DEPS="\
-        zlib1g-dev \
-        libncurses5-dev \
-        libgdbm-dev \
-        libnss3-dev \
-        libssl-dev \
-        libsqlite3-dev \
-        libreadline-dev \
-        libffi-dev \
-        libbz2-dev \
-        liblzma-dev" && \
-    unset CFLAGS CXXFLAGS && \
-    apt-get install -y $PYTHON_DEPS && \
-    cd /tmp && \
-    curl -O https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz && \
-    tar -xvf Python-$PYTHON_VERSION.tar.xz && \
-    cd Python-$PYTHON_VERSION && \
-    ./configure --enable-optimizations --enable-shared && \
-    make -j install && \
-    ldconfig && \
-    ln -s /usr/bin/python3 /usr/bin/python && \
-    cd .. && \
-    rm -r /tmp/Python-$PYTHON_VERSION.tar.xz /tmp/Python-$PYTHON_VERSION && \
-    rm -rf /usr/local/lib/python3.8/test && \
-    apt-get remove -y $PYTHON_DEPS # https://github.com/google/oss-fuzz/issues/3888
-
-# Install latest atheris for python fuzzing, pyinstaller for fuzzer packaging,
-# six for Bazel rules.
-RUN unset CFLAGS CXXFLAGS && pip3 install -v --no-cache-dir \
-    atheris pyinstaller==4.1 six==1.15.0 && \
-    rm -rf /tmp/*
+RUN apt-get install -y git \
+    subversion \
+    jq \
+    python3 \
+    zip \
+    make \
+    binutils-dev \
+    libc6-dev-i386
 
 # Download and install the latest stable Go.
-RUN cd /tmp && \
-    curl -O https://storage.googleapis.com/golang/getgo/installer_linux && \
-    chmod +x ./installer_linux && \
-    SHELL="bash" ./installer_linux && \
-    rm -rf ./installer_linux
+ADD https://storage.googleapis.com/golang/getgo/installer_linux $SRC/
+RUN chmod +x $SRC/installer_linux && \
+    SHELL="bash" $SRC/installer_linux && \
+    rm $SRC/installer_linux
 
 # Set up Golang environment variables (copied from /root/.bash_profile).
 ENV GOPATH /root/go
@@ -81,50 +37,11 @@
 # $GOPATH/bin is for the binaries from the dependencies installed via "go get".
 ENV PATH $PATH:/root/.go/bin:$GOPATH/bin
 
-# Uses golang 1.14+ cmd/compile's native libfuzzer instrumentation.
-RUN go get -u github.com/mdempsky/go114-fuzz-build && \
-    ln -s $GOPATH/bin/go114-fuzz-build $GOPATH/bin/go-fuzz
+# Dependency of go-fuzz.
+RUN go get golang.org/x/tools/go/packages
 
-# Install Rust and cargo-fuzz for libFuzzer instrumentation.
-ENV CARGO_HOME=/rust
-ENV RUSTUP_HOME=/rust/rustup
-ENV PATH=$PATH:/rust/bin
-RUN curl https://sh.rustup.rs | sh -s -- -y --default-toolchain=nightly --profile=minimal
-RUN cargo install cargo-fuzz && rm -rf /rust/registry
-# Needed to recompile rust std library for MSAN
-RUN rustup component add rust-src --toolchain nightly
-# Set up custom environment variable for source code copy for coverage reports
-ENV OSSFUZZ_RUSTPATH /rust
-
-# Install Bazel through Bazelisk, which automatically fetches the latest Bazel version.
-ENV BAZELISK_VERSION 1.7.4
-RUN curl -L https://github.com/bazelbuild/bazelisk/releases/download/v$BAZELISK_VERSION/bazelisk-linux-amd64 -o /usr/local/bin/bazel && \
-    chmod +x /usr/local/bin/bazel
-
-# Install OpenJDK 15 and trim its size by removing unused components.
-ENV JAVA_HOME=/usr/lib/jvm/java-15-openjdk-amd64
-ENV JVM_LD_LIBRARY_PATH=$JAVA_HOME/lib/server
-ENV PATH=$PATH:$JAVA_HOME/bin
-RUN cd /tmp && \
-    curl -L -O https://download.java.net/java/GA/jdk15.0.2/0d1cfde4252546c6931946de8db48ee2/7/GPL/openjdk-15.0.2_linux-x64_bin.tar.gz && \
-    mkdir -p $JAVA_HOME && \
-    tar -xzv --strip-components=1 -f openjdk-15.0.2_linux-x64_bin.tar.gz --directory $JAVA_HOME && \
-    rm -f openjdk-15.0.2_linux-x64_bin.tar.gz && \
-    rm -rf $JAVA_HOME/jmods $JAVA_HOME/lib/src.zip
-
-# Install the latest Jazzer in $OUT.
-# jazzer_api_deploy.jar is required only at build-time, the agent and the
-# drivers are copied to $OUT as they need to be present on the runners.
-ENV JAZZER_API_PATH "/usr/local/lib/jazzer_api_deploy.jar"
-RUN cd $SRC/ && \
-    git clone --depth=1 https://github.com/CodeIntelligenceTesting/jazzer && \
-    cd jazzer && \
-    bazel build --java_runtime_version=localjdk_15 -c opt --cxxopt="-stdlib=libc++" --linkopt=-lc++ \
-        //agent:jazzer_agent_deploy.jar //driver:jazzer_driver //driver:jazzer_driver_asan //agent:jazzer_api_deploy.jar && \
-    cp bazel-bin/agent/jazzer_agent_deploy.jar bazel-bin/driver/jazzer_driver bazel-bin/driver/jazzer_driver_asan /usr/local/bin/ && \
-    cp bazel-bin/agent/jazzer_api_deploy.jar $JAZZER_API_PATH && \
-    rm -rf ~/.cache/bazel ~/.cache/bazelisk && \
-    rm -rf $SRC/jazzer
+# go-fuzz-build is the tool that instruments Go files.
+RUN go get github.com/dvyukov/go-fuzz/go-fuzz-build
 
 # Default build flags for various sanitizers.
 ENV SANITIZER_FLAGS_address "-fsanitize=address -fsanitize-address-use-after-scope"
@@ -136,8 +53,6 @@
 
 ENV SANITIZER_FLAGS_dataflow "-fsanitize=dataflow"
 
-ENV SANITIZER_FLAGS_thread "-fsanitize=thread"
-
 # Do not use any sanitizers in the coverage build.
 ENV SANITIZER_FLAGS_coverage ""
 
@@ -145,9 +60,6 @@
 # suppress error messages. See https://github.com/google/oss-fuzz/issues/910.
 ENV UBSAN_OPTIONS="silence_unsigned_overflow=1"
 
-# To suppress warnings from binaries running during compilation.
-ENV DFSAN_OPTIONS='warn_unimplemented=0'
-
 # Default build flags for coverage feedback.
 ENV COVERAGE_FLAGS="-fsanitize=fuzzer-no-link"
 
@@ -176,28 +88,24 @@
 # TODO: remove after tpm2 catchup.
 ENV FUZZER_LDFLAGS ""
 
+ENV PRECOMPILED_DIR="/usr/lib/precompiled"
+RUN mkdir $PRECOMPILED_DIR
+
 WORKDIR $SRC
 
-# TODO: switch to -b stable once we can.
-RUN git clone https://github.com/AFLplusplus/AFLplusplus.git aflplusplus && \
-    cd aflplusplus && \
-    git checkout 2102264acf5c271b7560a82771b3af8136af9354
+RUN git clone -b stable https://github.com/google/AFL.git afl
 
-RUN cd $SRC && \
-    curl -L -O https://github.com/google/honggfuzz/archive/oss-fuzz.tar.gz && \
-    mkdir honggfuzz && \
+ADD https://github.com/google/honggfuzz/archive/oss-fuzz.tar.gz $SRC/
+RUN mkdir honggfuzz && \
     cd honggfuzz && \
     tar -xzv --strip-components=1 -f $SRC/oss-fuzz.tar.gz && \
-    rm -rf examples $SRC/oss-fuzz.tar.gz
+    rm -rf $SRC/oss-fuzz.tar.gz
 
-COPY cargo compile compile_afl compile_dataflow compile_libfuzzer compile_honggfuzz \
-    compile_go_fuzzer precompile_honggfuzz precompile_afl debug_afl srcmap \
-    write_labels.py bazel_build_fuzz_tests /usr/local/bin/
+COPY compile compile_afl compile_dataflow compile_libfuzzer compile_honggfuzz \
+    precompile_honggfuzz srcmap write_labels.py /usr/local/bin/
 
-COPY detect_repo.py /opt/cifuzz/
-COPY ossfuzz_coverage_runner.go $GOPATH
+COPY detect_repo.py /src
 
 RUN precompile_honggfuzz
-RUN precompile_afl
 
 CMD ["compile"]
diff --git a/infra/base-images/base-builder/README.md b/infra/base-images/base-builder/README.md
index 4e94bb0..1ff88e6 100644
--- a/infra/base-images/base-builder/README.md
+++ b/infra/base-images/base-builder/README.md
@@ -1,5 +1,5 @@
 # base-builder
-> Abstract base image for project builders.
+> Abstract base image for libfuzzer builders.
 
 Every project image supports multiple commands that can be invoked through docker after the image is built:
 
@@ -43,7 +43,7 @@
 | `/out/` | `$OUT`         | Directory to store build artifacts (fuzz targets, dictionaries, options files, seed corpus archives). |
 | `/src/` | `$SRC`         | Directory to checkout source files |
 | `/work/`| `$WORK`        | Directory for storing intermediate files |
-| `/usr/lib/libFuzzingEngine.a` | `$LIB_FUZZING_ENGINE` | Location of prebuilt fuzzing engine library (e.g. libFuzzer) that needs to be linked with all fuzz targets.
+| `/usr/lib/libFuzzingEngine.a` | `$LIB_FUZZING_ENGINE` | Location of prebuilt fuzzing engine library (e.g. libFuzzer ) that needs to be linked with all fuzz targets.
 
 While files layout is fixed within a container, the environment variables are
 provided to be able to write retargetable scripts.
diff --git a/infra/base-images/base-builder/bazel_build_fuzz_tests b/infra/base-images/base-builder/bazel_build_fuzz_tests
deleted file mode 100755
index 86740ee..0000000
--- a/infra/base-images/base-builder/bazel_build_fuzz_tests
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-: "${BAZEL_FUZZ_TEST_TAG:=fuzz-test}"
-: "${BAZEL_FUZZ_TEST_EXCLUDE_TAG:=no-oss-fuzz}"
-: "${BAZEL_PACKAGE_SUFFIX:=_oss_fuzz}"
-: "${BAZEL_TOOL:=bazel}"
-: "${BAZEL_EXTRA_BUILD_FLAGS:=}"
-
-if [[ -z "${BAZEL_FUZZ_TEST_QUERY:-}" ]]; then
-    BAZEL_FUZZ_TEST_QUERY="
-        let all_fuzz_tests = attr(tags, \"${BAZEL_FUZZ_TEST_TAG}\", \"//...\") in
-        \$all_fuzz_tests - attr(tags, \"${BAZEL_FUZZ_TEST_EXCLUDE_TAG}\", \$all_fuzz_tests)
-    "
-fi
-
-echo "Using Bazel query to find fuzz targets: ${BAZEL_FUZZ_TEST_QUERY}"
-
-declare -r OSS_FUZZ_TESTS=(
-    $(bazel query "${BAZEL_FUZZ_TEST_QUERY}" | sed "s/$/${BAZEL_PACKAGE_SUFFIX}/")
-)
-
-echo "Found ${#OSS_FUZZ_TESTS[@]} fuzz test packages:"
-for oss_fuzz_test in "${OSS_FUZZ_TESTS[@]}"; do
-    echo "  ${oss_fuzz_test}"
-done
-
-declare -r BAZEL_BUILD_FLAGS=(
-    "-c" "opt"
-    "--//fuzzing:cc_engine=@rules_fuzzing_oss_fuzz//:oss_fuzz_engine" \
-    "--@rules_fuzzing//fuzzing:cc_engine_instrumentation=oss-fuzz" \
-    "--@rules_fuzzing//fuzzing:cc_engine_sanitizer=none" \
-    "--linkopt=-lc++" \
-    "--action_env=CC=${CC}" "--action_env=CXX=${CXX}" \
-    ${BAZEL_EXTRA_BUILD_FLAGS[*]}
-)
-
-echo "Building the fuzz tests with the following Bazel options:"
-echo "  ${BAZEL_BUILD_FLAGS[@]}"
-
-${BAZEL_TOOL} build "${BAZEL_BUILD_FLAGS[@]}" "${OSS_FUZZ_TESTS[@]}"
-
-echo "Extracting the fuzz test packages in the output directory."
-for oss_fuzz_archive in $(find bazel-bin/ -name "*${BAZEL_PACKAGE_SUFFIX}.tar"); do
-    tar -xvf "${oss_fuzz_archive}" -C "${OUT}"
-done
-
-if [ "$SANITIZER" = "coverage" ]; then
-    echo "Collecting the repository source files for coverage tracking."
-    declare -r COVERAGE_SOURCES="${OUT}/proc/self/cwd"
-    mkdir -p "${COVERAGE_SOURCES}"
-    declare -r RSYNC_FILTER_ARGS=(
-        "--include" "*.h"
-        "--include" "*.cc"
-        "--include" "*.hpp"
-        "--include" "*.cpp"
-        "--include" "*.c"
-        "--include" "*.inc"
-        "--include" "*/"
-        "--exclude" "*"
-    )
-    rsync -avLk "${RSYNC_FILTER_ARGS[@]}" \
-        "$(bazel info execution_root)/" \
-        "${COVERAGE_SOURCES}/"
-fi
diff --git a/infra/base-images/base-builder/bisect_clang.py b/infra/base-images/base-builder/bisect_clang.py
index 2e2c0e4..2e7db61 100644
--- a/infra/base-images/base-builder/bisect_clang.py
+++ b/infra/base-images/base-builder/bisect_clang.py
@@ -64,7 +64,7 @@
   def test_commit(self, test_command):
     """Build LLVM at the currently checkedout commit, then run |test_command|.
     If returncode is 0 run 'git bisect good' otherwise return 'git bisect bad'.
-    Return None if bisect didn't finish yet. Return the culprit commit if it
+    Return None if bisect didn't terminate yet. Return the culprit commit if it
     does."""
     build_clang(self.repo_dir)
     retcode, _, _ = execute(test_command, shell=True, expect_zero=False)
@@ -112,7 +112,7 @@
 
 
 class BisectError(Exception):
-  """Error that was encountered during bisection."""
+  pass
 
 
 def get_clang_build_env():
@@ -140,8 +140,8 @@
   for _ in range(num_retries):
     if os.path.isdir(local_path):
       shutil.rmtree(local_path)
-    retcode, _, _ = execute(['git', 'clone', repo, local_path],
-                            expect_zero=False)
+    retcode, _, _ = execute(
+        ['git', 'clone', repo, local_path], expect_zero=False)
     if retcode == 0:
       return
   raise Exception('Could not checkout %s.' % repo)
@@ -162,16 +162,17 @@
   llvm_build_dir = os.path.join(os.getenv('WORK'), 'llvm-build')
   if not os.path.exists(llvm_build_dir):
     os.mkdir(llvm_build_dir)
-  execute([
-      'cmake', '-G', 'Ninja', '-DLIBCXX_ENABLE_SHARED=OFF',
-      '-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON', '-DLIBCXXABI_ENABLE_SHARED=OFF',
-      '-DCMAKE_BUILD_TYPE=Release',
-      '-DLLVM_ENABLE_PROJECTS=libcxx;libcxxabi;compiler-rt;clang',
-      '-DLLVM_TARGETS_TO_BUILD=' + get_clang_target_arch(),
-      os.path.join(llvm_project_path, 'llvm')
-  ],
-          env=get_clang_build_env(),
-          cwd=llvm_build_dir)
+  execute(
+      [
+          'cmake', '-G', 'Ninja', '-DLIBCXX_ENABLE_SHARED=OFF',
+          '-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON',
+          '-DLIBCXXABI_ENABLE_SHARED=OFF', '-DCMAKE_BUILD_TYPE=Release',
+          '-DLLVM_ENABLE_PROJECTS=libcxx;libcxxabi;compiler-rt;clang',
+          '-DLLVM_TARGETS_TO_BUILD=' + get_clang_target_arch(),
+          os.path.join(llvm_project_path, 'llvm')
+      ],
+      env=get_clang_build_env(),
+      cwd=llvm_build_dir)
   return llvm_build_dir
 
 
@@ -200,15 +201,14 @@
 
 
 def main():
-  # pylint: disable=line-too-long
   """Finds the culprit LLVM commit that introduced a clang regression.
   Can be tested using this command in a libsodium shell:
   python3 bisect_clang.py "cd /src/libsodium; make clean; cd -; compile && /out/secret_key_auth_fuzzer -runs=100" \
                           f7e52fbdb5a7af8ea0808e98458b497125a5eca1 \
                           8288453f6aac05080b751b680455349e09d49825
   """
-  # pylint: enable=line-too-long
-  # TODO(metzman): Check CFLAGS for things like -fsanitize=fuzzer-no-link.
+  # TODO(metzman): Sanity check CFLAGS for things like
+  # -fsanitize=fuzzer-no-link.
   # TODO(metzman): Allow test_command to be optional and for just build.sh to be
   # used instead.
   test_command = sys.argv[1]
diff --git a/infra/base-images/base-builder/bisect_clang_test.py b/infra/base-images/base-builder/bisect_clang_test.py
index edf13e7..7a11021 100644
--- a/infra/base-images/base-builder/bisect_clang_test.py
+++ b/infra/base-images/base-builder/bisect_clang_test.py
@@ -37,11 +37,10 @@
   patcher.start()
 
 
-class BisectClangTestMixin:  # pylint: disable=too-few-public-methods
+class BisectClangTestMixin:
   """Useful mixin for bisect_clang unittests."""
 
-  def setUp(self):  # pylint: disable=invalid-name
-    """Initialization method for unittests."""
+  def setUp(self):
     patch_environ(self)
     os.environ['SRC'] = '/src'
     os.environ['WORK'] = '/work'
@@ -69,9 +68,8 @@
 
 
 def read_test_data(filename):
-  """Returns data from |filename| in the test_data directory."""
-  with open(os.path.join(FILE_DIRECTORY, 'test_data', filename)) as file_handle:
-    return file_handle.read()
+  with open(os.path.join(FILE_DIRECTORY, 'test_data', filename)) as f:
+    return f.read()
 
 
 class SearchBisectOutputTest(BisectClangTestMixin, unittest.TestCase):
@@ -128,7 +126,6 @@
 
 
 def mock_prepare_build(llvm_project_path):  # pylint: disable=unused-argument
-  """Mocked prepare_build function."""
   return '/work/llvm-build'
 
 
@@ -227,8 +224,8 @@
     with mock.patch('subprocess.Popen', create_mock_popen()) as mock_popen:
       self.git.bisect_start(self.good_commit, self.bad_commit,
                             self.test_command)
-      self.assertEqual(get_git_command('bisect', 'start'),
-                       mock_popen.commands[0])
+      self.assertEqual(
+          get_git_command('bisect', 'start'), mock_popen.commands[0])
       mock_test_start_commit.assert_has_calls([
           mock.call('bad_commit', 'bad', 'testcommand'),
           mock.call('good_commit', 'good', 'testcommand')
diff --git a/infra/base-images/base-builder/cargo b/infra/base-images/base-builder/cargo
deleted file mode 100755
index bed8e76..0000000
--- a/infra/base-images/base-builder/cargo
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# This is a wrapper around calling cargo
-# This just expands RUSTFLAGS in case of a coverage build
-# We need this until https://github.com/rust-lang/cargo/issues/5450 is merged
-# because cargo uses relative paths for the current crate
-# and absolute paths for its dependencies
-#
-################################################################################
-
-if [ "$SANITIZER" = "coverage" ] && [ $1 = "build" ]
-then
-    crate_src_abspath=`cargo metadata --no-deps --format-version 1 | jq -r '.workspace_root'`
-    export RUSTFLAGS="$RUSTFLAGS --remap-path-prefix src=$crate_src_abspath/src"
-fi
-
-if [ "$SANITIZER" = "coverage" ] && [ $1 = "fuzz" ]
-then
-    # hack to turn cargo fuzz build into cargo build so as to get coverage
-    # cargo fuzz adds "--target" "x86_64-unknown-linux-gnu"
-    (
-    # go into fuzz directory if not already the case
-    cd fuzz || true
-    fuzz_src_abspath=`pwd`
-    export RUSTFLAGS="$RUSTFLAGS --remap-path-prefix fuzz_targets=$fuzz_src_abspath/fuzz_targets"
-    # we do not want to trigger debug assertions and stops
-    export RUSTFLAGS="$RUSTFLAGS -C debug-assertions=no"
-    # do not optimize with --release, leading to Malformed instrumentation profile data
-    cargo build --bins
-    # copies the build output in the expected target directory
-    cd `cargo metadata --format-version 1 --no-deps | jq -r '.target_directory'`
-    mkdir -p x86_64-unknown-linux-gnu/release
-    cp -r debug/* x86_64-unknown-linux-gnu/release/
-    )
-    exit 0
-fi
-
-/rust/bin/cargo "$@"
diff --git a/infra/base-images/base-builder/compile b/infra/base-images/base-builder/compile
index 78453c9..e60f86f 100755
--- a/infra/base-images/base-builder/compile
+++ b/infra/base-images/base-builder/compile
@@ -22,36 +22,6 @@
   exit 1
 fi
 
-if [ "$FUZZING_LANGUAGE" = "jvm" ]; then
-  if [ "$FUZZING_ENGINE" != "libfuzzer" ]; then
-    echo "ERROR: JVM projects can be fuzzed with libFuzzer engine only."
-    exit 1
-  fi
-  if [ "$SANITIZER" != "address" ]; then
-    echo "ERROR: JVM projects can be fuzzed with AddressSanitizer only."
-    exit 1
-  fi
-  if [ "$ARCHITECTURE" != "x86_64" ]; then
-    echo "ERROR: JVM projects can be fuzzed on x86_64 architecture only."
-    exit 1
-  fi
-fi
-
-if [ "$FUZZING_LANGUAGE" = "python" ]; then
-  if [ "$FUZZING_ENGINE" != "libfuzzer" ]; then
-    echo "ERROR: Python projects can be fuzzed with libFuzzer engine only."
-    exit 1
-  fi
-  if [ "$SANITIZER" != "address" ] && [ "$SANITIZER" != "undefined" ]; then
-    echo "ERROR: Python projects can be fuzzed with AddressSanitizer and UndefinedBehaviorSanitizer only."
-    exit 1
-  fi
-  if [ "$ARCHITECTURE" != "x86_64" ]; then
-    echo "ERROR: Python projects can be fuzzed on x86_64 architecture only."
-    exit 1
-  fi
-fi
-
 if [ -z "${SANITIZER_FLAGS-}" ]; then
   FLAGS_VAR="SANITIZER_FLAGS_${SANITIZER}"
   export SANITIZER_FLAGS=${!FLAGS_VAR-}
@@ -61,8 +31,7 @@
     export CFLAGS="-m32 $CFLAGS"
     cp -R /usr/i386/lib/* /usr/lib
 fi
-# JVM projects are fuzzed with Jazzer, which has libFuzzer built in.
-if [[ $FUZZING_ENGINE != "none" ]] && [[ $FUZZING_LANGUAGE != "jvm" ]]; then
+if [[ $FUZZING_ENGINE != "none" ]]; then
   # compile script might override environment, use . to call it.
   . compile_${FUZZING_ENGINE}
 fi
@@ -89,68 +58,26 @@
   export COVERAGE_FLAGS="${!COVERAGE_FLAGS_VAR}"
 fi
 
- # Don't need coverage instrumentation for engine-less, afl++ builds.
-if [ $FUZZING_ENGINE = "none" ] || [ $FUZZING_ENGINE = "afl" ]; then
+ # Don't need coverage instrumentation for engine-less builds.
+if [ $FUZZING_ENGINE = "none" ]; then
   export COVERAGE_FLAGS=
 fi
 
-# Rust does not support sanitizers and coverage flags via CFLAGS/CXXFLAGS, so
-# use RUSTFLAGS.
-# FIXME: Support code coverage once support is in.
-# See https://github.com/rust-lang/rust/issues/34701.
-if [ "$SANITIZER" != "undefined" ] && [ "$SANITIZER" != "coverage" ] && [ "$ARCHITECTURE" != 'i386' ]; then
-  export RUSTFLAGS="--cfg fuzzing -Zsanitizer=${SANITIZER} -Cdebuginfo=1 -Cforce-frame-pointers"
-else
-  export RUSTFLAGS="--cfg fuzzing -Cdebuginfo=1 -Cforce-frame-pointers"
-fi
-if [ "$SANITIZER" = "coverage" ]
-then
-    # link to C++ from comment in f5098035eb1a14aa966c8651d88ea3d64323823d
-    export RUSTFLAGS="$RUSTFLAGS -Zinstrument-coverage -C link-arg=-lc++"
-fi
-
-# Add Rust libfuzzer flags.
-# See https://github.com/rust-fuzz/libfuzzer/blob/master/build.rs#L12.
-export CUSTOM_LIBFUZZER_PATH="$LIB_FUZZING_ENGINE_DEPRECATED"
-export CUSTOM_LIBFUZZER_STD_CXX=c++
-
 export CFLAGS="$CFLAGS $SANITIZER_FLAGS $COVERAGE_FLAGS"
 export CXXFLAGS="$CFLAGS $CXXFLAGS_EXTRA"
 
-if [ "$FUZZING_LANGUAGE" = "python" ]; then
-  sanitizer_with_fuzzer_lib_dir=`python3 -c "import atheris; import os; print(os.path.dirname(atheris.path()))"`
-  sanitizer_with_fuzzer_output_lib=$OUT/sanitizer_with_fuzzer.so
-  if [ "$SANITIZER" = "address" ]; then
-    cp $sanitizer_with_fuzzer_lib_dir/asan_with_fuzzer.so $sanitizer_with_fuzzer_output_lib
-  elif [ "$SANITIZER" = "undefined" ]; then
-    cp $sanitizer_with_fuzzer_lib_dir/ubsan_with_fuzzer.so $sanitizer_with_fuzzer_output_lib
-  fi
-
-  # Disable leak checking as it is unsupported.
-  export CFLAGS="$CFLAGS -fno-sanitize=function,leak,vptr,"
-  export CXXFLAGS="$CXXFLAGS -fno-sanitize=function,leak,vptr"
-fi
-
-# Copy latest llvm-symbolizer in $OUT for stack symbolization.
-cp $(which llvm-symbolizer) $OUT/
-
-# Copy Jazzer to $OUT if needed.
-if [ "$FUZZING_LANGUAGE" = "jvm" ]; then
-  cp $(which jazzer_agent_deploy.jar) $(which jazzer_driver) $(which jazzer_driver_asan) $OUT/
-fi
-
-echo "---------------------------------------------------------------"
 echo "CC=$CC"
 echo "CXX=$CXX"
 echo "CFLAGS=$CFLAGS"
 echo "CXXFLAGS=$CXXFLAGS"
+
 echo "---------------------------------------------------------------"
 
 BUILD_CMD="bash -eux $SRC/build.sh"
 
 # We need to preserve source code files for generating a code coverage report.
 # We need exact files that were compiled, so copy both $SRC and $WORK dirs.
-COPY_SOURCES_CMD="cp -rL --parents $SRC $WORK /usr/include /usr/local/include $GOPATH $OSSFUZZ_RUSTPATH $OUT"
+COPY_SOURCES_CMD="cp -rL --parents $SRC $WORK /usr/include $OUT"
 
 if [ "${BUILD_UID-0}" -ne "0" ]; then
   adduser -u $BUILD_UID --disabled-password --gecos '' builder
diff --git a/infra/base-images/base-builder/compile_afl b/infra/base-images/base-builder/compile_afl
old mode 100644
new mode 100755
index dc66244..a428bee
--- a/infra/base-images/base-builder/compile_afl
+++ b/infra/base-images/base-builder/compile_afl
@@ -15,78 +15,34 @@
 #
 ################################################################################
 
-# afl++ configuration options.
-# The 'env|grep' setup ensures we do not trigger the linter.
-# The variables need to be set to "1" here - or before running this script.
+echo -n "Compiling afl to $LIB_FUZZING_ENGINE ..."
 
-# AFL++ settings.
-export AFL_LLVM_MODE_WORKAROUND=0
-export AFL_ENABLE_DICTIONARY=0
+# afl needs its special coverage flags
+export COVERAGE_FLAGS="-fsanitize-coverage=trace-pc-guard"
 
-# Start compiling afl++.
-echo "Copying precompiled afl++"
+mkdir -p $WORK/afl
+pushd $WORK/afl > /dev/null
+# Add -Wno-pointer-sign to silence warning (AFL is compiled this way).
+$CC $CFLAGS -Wno-pointer-sign -c $SRC/afl/llvm_mode/afl-llvm-rt.o.c
+$CXX $CXXFLAGS -std=c++11 -O2 -c $SRC/libfuzzer/afl/*.cpp -I$SRC/libfuzzer
+ar r $LIB_FUZZING_ENGINE $WORK/afl/*.o
+popd > /dev/null
+rm -rf $WORK/afl
 
-# Copy afl++ tools necessary for fuzzing.
-pushd $SRC/aflplusplus > /dev/null
+# Build and copy afl tools necessary for fuzzing.
+pushd $SRC/afl > /dev/null
 
-cp -f libAFLDriver.a $LIB_FUZZING_ENGINE
+# Unset CFLAGS and CXXFLAGS while building AFL since we don't want to slow it
+# down with sanitizers.
+INITIAL_CXXFLAGS=$CXXFLAGS
+INITIAL_CFLAGS=$CFLAGS
+unset CXXFLAGS
+unset CFLAGS
+make clean && AFL_NO_X86=1 make
+CFLAGS=$INITIAL_CFLAGS
+CXXFLAGS=$INITIAL_CXXFLAGS
 
-# Some important projects include libraries, copy those even when they don't
-# start with "afl-". Use "sort -u" to avoid a warning about duplicates.
-ls afl-* *.txt *.a *.o *.so | sort -u | xargs cp -t $OUT
-export CC="$SRC/aflplusplus/afl-clang-fast"
-export CXX="$SRC/aflplusplus/afl-clang-fast++"
-
-# Set sane afl++ environment defaults:
-# Be quiet, otherwise this can break some builds.
-export AFL_QUIET=1
-# No leak errors during builds.
-export ASAN_OPTIONS="detect_leaks=0:symbolize=0:detect_odr_violation=0:abort_on_error=1"
-
-# AFL compile option roulette. It is OK if they all happen together.
-
-# 40% chance to perform CMPLOG
-rm -f "$OUT/afl_cmplog.txt"
-test $(($RANDOM % 10)) -lt 4 && {
-  export AFL_LLVM_CMPLOG=1
-  touch "$OUT/afl_cmplog.txt"
-}
-
-# 10% chance to perform LAF_INTEL
-test $(($RANDOM % 10)) -lt 1 && {
-  export AFL_LLVM_LAF_ALL=1
-}
-
-# If the targets wants a dictionary - then create one.
-test "$AFL_ENABLE_DICTIONARY" = "1" && {
-  export AFL_LLVM_DICT2FILE="$OUT/afl++.dict"
-}
-
-# In case afl-clang-fast ever breaks, this is a workaround:
-test "$AFL_LLVM_MODE_WORKAROUND" = "1" && {
-  export CC=clang
-  export CXX=clang++
-  WORKAROUND_FLAGS=-fsanitize-coverage=trace-pc-guard
-  # We can still do CMPLOG light:
-  test -e "$OUT/afl_cmplog.txt" && {
-    WORKAROUND_FLAGS="$WORKAROUND_FLAGS",trace-cmp
-  }
-  export CFLAGS="$CFLAGS $WORKAROUND_FLAGS"
-  export CXXFLAGS="$CXXFLAGS $WORKAROUND_FLAGS"
-  unset AFL_LLVM_LAF_ALL
-  unset AFL_LLVM_DICT2FILE
-  unset AFL_ENABLE_DICTIONARY
-  # We need to create a new fuzzer lib however.
-  ar ru libAFLDrivernew.a afl-compiler-rt.o utils/aflpp_driver/aflpp_driver.o
-  cp -f libAFLDrivernew.a $LIB_FUZZING_ENGINE
-}
-
-# Provide a way to document the afl++ options used in this build:
-echo
-echo afl++ target compilation setup:
-env | grep AFL_ | tee "$OUT/afl_options.txt"
-echo
-
+find . -name 'afl-*' -executable -type f | xargs cp -t $OUT
 popd > /dev/null
 
 echo " done."
diff --git a/infra/base-images/base-builder/compile_go_fuzzer b/infra/base-images/base-builder/compile_go_fuzzer
deleted file mode 100755
index 2342800..0000000
--- a/infra/base-images/base-builder/compile_go_fuzzer
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-path=$1
-function=$2
-fuzzer=$3
-tags="-tags gofuzz"
-if [[ $#  -eq 4 ]]; then
-  tags="-tags $4"
-fi
-
-# makes directory change temporary
-(
-cd $GOPATH/src/$path || true
-# in the case we are in the right directory, with go.mod but no go.sum
-go mod tidy || true
-# project was downloaded with go get if go list fails
-go list $tags $path || { cd $GOPATH/pkg/mod/ && cd `echo $path | cut -d/ -f1-3 | awk '{print $1"@*"}'`; }
-# project does not have go.mod if go list fails again
-go list $tags $path || { go mod init $path && go mod tidy ;}
-
-if [[ $SANITIZER = *coverage* ]]; then
-  fuzzed_package=`go list $tags -f '{{.Name}}' $path`
-  abspath=`go list $tags -f {{.Dir}} $path`
-  cd $abspath
-  cp $GOPATH/ossfuzz_coverage_runner.go ./"${function,,}"_test.go
-  sed -i -e 's/FuzzFunction/'$function'/' ./"${function,,}"_test.go
-  sed -i -e 's/mypackagebeingfuzzed/'$fuzzed_package'/' ./"${function,,}"_test.go
-  sed -i -e 's/TestFuzzCorpus/Test'$function'Corpus/' ./"${function,,}"_test.go
-
-  fuzzed_repo=`echo $path | cut -d/ -f-3`
-  abspath_repo=`go list -m $tags -f {{.Dir}} $fuzzed_repo || go list $tags -f {{.Dir}} $fuzzed_repo`
-  # give equivalence to absolute paths in another file, as go test -cover uses golangish pkg.Dir
-  echo "s=$fuzzed_repo"="$abspath_repo"= > $OUT/$fuzzer.gocovpath
-  go test -run Test${function}Corpus -v $tags -coverpkg $fuzzed_repo/... -c -o $OUT/$fuzzer $path
-else
-  # Compile and instrument all Go files relevant to this fuzz target.
-  echo "Running go-fuzz $tags -func $function -o $fuzzer.a $path"
-  go-fuzz $tags -func $function -o $fuzzer.a $path
-
-  # Link Go code ($fuzzer.a) with fuzzing engine to produce fuzz target binary.
-  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -o $OUT/$fuzzer
-fi
-)
diff --git a/infra/base-images/base-builder/compile_honggfuzz b/infra/base-images/base-builder/compile_honggfuzz
index f86e842..362a0a5 100755
--- a/infra/base-images/base-builder/compile_honggfuzz
+++ b/infra/base-images/base-builder/compile_honggfuzz
@@ -17,8 +17,8 @@
 
 echo "Skipping compilation; using precompiled honggfuzz"
 
-cp $SRC/honggfuzz/honggfuzz.a $LIB_FUZZING_ENGINE
-cp $SRC/honggfuzz/honggfuzz $OUT/
+cp $PRECOMPILED_DIR/honggfuzz.a $LIB_FUZZING_ENGINE
+cp $PRECOMPILED_DIR/honggfuzz $OUT/
 
 # Custom coverage flags, roughly in sync with:
 # https://github.com/google/honggfuzz/blob/oss-fuzz/hfuzz_cc/hfuzz-cc.c
diff --git a/infra/base-images/base-builder/compile_libfuzzer b/infra/base-images/base-builder/compile_libfuzzer
index 3fd7f39..00f2d63 100755
--- a/infra/base-images/base-builder/compile_libfuzzer
+++ b/infra/base-images/base-builder/compile_libfuzzer
@@ -16,7 +16,16 @@
 ################################################################################
 
 echo -n "Compiling libFuzzer to $LIB_FUZZING_ENGINE... "
+mkdir -p $WORK/libfuzzer
+pushd $WORK/libfuzzer > /dev/null
+
+# Use -fPIC to allow preloading (LD_PRELOAD).
+$CXX $CXXFLAGS -std=c++11 -O2 -fPIC $SANITIZER_FLAGS -fno-sanitize=vptr \
+    -c $SRC/libfuzzer/*.cpp -I$SRC/libfuzzer
+ar r $LIB_FUZZING_ENGINE_DEPRECATED $WORK/libfuzzer/*.o
+popd > /dev/null
+rm -rf $WORK/libfuzzer
+# Override variable as libFuzzer builds do not link directly against an
+# engine library, but use -fsanitize=fuzzer to instruct clang to do so.
 export LIB_FUZZING_ENGINE="-fsanitize=fuzzer"
-cp /usr/local/lib/clang/*/lib/linux/libclang_rt.fuzzer-$ARCHITECTURE.a \
-  $LIB_FUZZING_ENGINE_DEPRECATED
 echo " done."
diff --git a/infra/base-images/base-builder/debug_afl b/infra/base-images/base-builder/debug_afl
deleted file mode 100755
index c53dae8..0000000
--- a/infra/base-images/base-builder/debug_afl
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Source this file for afl++ debug sessions.
-apt-get update
-apt-get install -y strace gdb vim joe psmisc
-
-pushd $SRC/aflplusplus > /dev/null
-git checkout dev
-git pull
-test -n "$1" && { git checkout "$1" ; git pull ; }
-CFLAGS_SAVE="$CFLAGS"
-CXXFLAGS_SAVE="$CXXFLAGS"
-unset CFLAGS
-unset CXXFLAGS
-make
-export CFLAGS="$CFLAGS_SAVE"
-export CXXFLAGS="$CXXFLAGS_SAVE"
-popd > /dev/null
-
-export ASAN_OPTIONS="detect_leaks=0:symbolize=0:detect_odr_violation=0:abort_on_error=1"
-export AFL_LLVM_LAF_ALL=1
-export AFL_LLVM_CMPLOG=1
-touch "$OUT/afl_cmplog.txt"
-export AFL_LLVM_DICT2FILE=$OUT/afl++.dict
-ulimit -c unlimited
diff --git a/infra/base-images/base-builder/detect_repo.py b/infra/base-images/base-builder/detect_repo.py
index e677e10..272a915 100644
--- a/infra/base-images/base-builder/detect_repo.py
+++ b/infra/base-images/base-builder/detect_repo.py
@@ -30,8 +30,6 @@
 import os
 import subprocess
 
-GO_PATH = '/root/go/src/'
-
 
 def main():
   """Function to get a git repo's url and name referenced by OSS-Fuzz
@@ -57,7 +55,7 @@
   else:
     src_dir = os.environ.get('SRC', '/src')
 
-  for single_dir in get_dirs_to_search(src_dir, args.repo_name):
+  for single_dir in os.listdir(src_dir):
     full_path = os.path.join(src_dir, single_dir)
     if not os.path.isdir(full_path):
       continue
@@ -71,25 +69,6 @@
                 args.example_commit, src_dir)
 
 
-def get_dirs_to_search(src_dir, repo_name):
-  """Gets a list of directories to search for the main git repo.
-
-  Args:
-    src_dir: The location set for the projects SRC.
-    repo_name: The name of the repo you are searching for.
-
-  Returns:
-    A list of directorys to search.
-  """
-  dirs_to_search = os.listdir(src_dir)
-  if os.path.exists(GO_PATH) and repo_name:
-    for root, dirs, _ in os.walk(GO_PATH):
-      for test_dir in dirs:
-        if repo_name in test_dir:
-          dirs_to_search.append(os.path.join(root, test_dir))
-  return dirs_to_search
-
-
 def get_repo(repo_path):
   """Gets a git repo link from a specific directory in a docker image.
 
@@ -107,25 +86,20 @@
   return None
 
 
-def check_for_repo_name(repo_path, expected_repo_name):
-  """Returns True if the repo at |repo_path| repo_name matches
-  |expected_repo_name|.
+def check_for_repo_name(repo_path, repo_name):
+  """Check to see if the repo_name matches the remote repository repo name.
 
   Args:
-    repo_path: The directory of a git repo.
-    expected_repo_name: The name of the target git repo.
+    repo_path: The directory of the git repo.
+    repo_name: The name of the target git repo.
   """
   if not os.path.exists(os.path.join(repo_path, '.git')):
     return False
 
-  repo_url, _ = execute(['git', 'config', '--get', 'remote.origin.url'],
-                        location=repo_path)
-  # Handle two common cases:
-  # https://github.com/google/syzkaller/
-  # https://github.com/google/syzkaller.git
-  repo_url = repo_url.replace('.git', '').rstrip().rstrip('/')
-  actual_repo_name = repo_url.split('/')[-1]
-  return actual_repo_name == expected_repo_name
+  out, _ = execute(['git', 'config', '--get', 'remote.origin.url'],
+                   location=repo_path)
+  out = out.split('/')[-1].replace('.git', '').rstrip()
+  return out == repo_name
 
 
 def check_for_commit(repo_path, commit):
diff --git a/infra/base-images/base-builder/detect_repo_test.py b/infra/base-images/base-builder/detect_repo_test.py
index 0243b3a..4886522 100644
--- a/infra/base-images/base-builder/detect_repo_test.py
+++ b/infra/base-images/base-builder/detect_repo_test.py
@@ -23,7 +23,6 @@
 import sys
 import tempfile
 import unittest
-from unittest import mock
 
 import detect_repo
 
@@ -37,35 +36,6 @@
 # pylint: enable=wrong-import-position
 
 
-class TestCheckForRepoName(unittest.TestCase):
-  """Tests for check_for_repo_name."""
-
-  @mock.patch('os.path.exists', return_value=True)
-  @mock.patch('detect_repo.execute',
-              return_value=('https://github.com/google/syzkaller/', None))
-  def test_go_get_style_url(self, _, __):
-    """Tests that check_for_repo_name works on repos that were downloaded using
-    go get."""
-    self.assertTrue(detect_repo.check_for_repo_name('fake-path', 'syzkaller'))
-
-  @mock.patch('os.path.exists', return_value=True)
-  @mock.patch('detect_repo.execute',
-              return_value=('https://github.com/google/syzkaller', None))
-  def test_missing_git_and_slash_url(self, _, __):
-    """Tests that check_for_repo_name works on repos who's URLs do not end in
-    ".git" or "/"."""
-    self.assertTrue(detect_repo.check_for_repo_name('fake-path', 'syzkaller'))
-
-  @mock.patch('os.path.exists', return_value=True)
-  @mock.patch('detect_repo.execute',
-              return_value=('https://github.com/google/syzkaller.git', None))
-  def test_normal_style_repo_url(self, _, __):
-    """Tests that check_for_repo_name works on normally cloned repos."""
-    self.assertTrue(detect_repo.check_for_repo_name('fake-path', 'syzkaller'))
-
-
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
 class DetectRepoIntegrationTest(unittest.TestCase):
   """Class to test the functionality of the detect_repo module."""
 
@@ -74,19 +44,20 @@
 
     with tempfile.TemporaryDirectory() as tmp_dir:
       # Construct example repo's to check for commits.
-      for test_repo in test_repos.TEST_REPOS:
-        repo_manager.clone_repo_and_get_manager(test_repo.git_url, tmp_dir)
-        self.check_with_repo(test_repo.git_url,
-                             test_repo.git_repo_name,
+      for example_repo in test_repos.TEST_REPOS:
+        repo_manager.RepoManager(example_repo.git_url, tmp_dir)
+        self.check_with_repo(example_repo.git_url,
+                             example_repo.git_repo_name,
                              tmp_dir,
-                             commit=test_repo.old_commit)
+                             commit=example_repo.old_commit)
 
   def test_infer_main_repo_from_name(self):
     """Tests that the main project repo can be inferred from a repo name."""
+
     with tempfile.TemporaryDirectory() as tmp_dir:
-      for test_repo in test_repos.TEST_REPOS:
-        repo_manager.clone_repo_and_get_manager(test_repo.git_url, tmp_dir)
-        self.check_with_repo(test_repo.git_url, test_repo.git_repo_name,
+      for example_repo in test_repos.TEST_REPOS:
+        repo_manager.RepoManager(example_repo.git_url, tmp_dir)
+        self.check_with_repo(example_repo.git_url, example_repo.git_repo_name,
                              tmp_dir)
 
   def check_with_repo(self, repo_origin, repo_name, tmp_dir, commit=None):
diff --git a/infra/base-images/base-builder/ossfuzz_coverage_runner.go b/infra/base-images/base-builder/ossfuzz_coverage_runner.go
deleted file mode 100644
index d433da2..0000000
--- a/infra/base-images/base-builder/ossfuzz_coverage_runner.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package mypackagebeingfuzzed
-
-import (
-	"io/ioutil"
-	"os"
-	"runtime/pprof"
-	"testing"
-)
-
-func TestFuzzCorpus(t *testing.T) {
-	dir := os.Getenv("FUZZ_CORPUS_DIR")
-	if dir == "" {
-		t.Logf("No fuzzing corpus directory set")
-		return
-	}
-	infos, err := ioutil.ReadDir(dir)
-	if err != nil {
-		t.Logf("Not fuzzing corpus directory %s", err)
-		return
-	}
-	filename := ""
-	defer func() {
-		if r := recover(); r != nil {
-			t.Error("Fuzz panicked in "+filename, r)
-		}
-	}()
-	profname := os.Getenv("FUZZ_PROFILE_NAME")
-	if profname != "" {
-		f, err := os.Create(profname + ".cpu.prof")
-		if err != nil {
-			t.Logf("error creating profile file %s\n", err)
-		} else {
-			_ = pprof.StartCPUProfile(f)
-		}
-	}
-	for i := range infos {
-		filename = dir + infos[i].Name()
-		data, err := ioutil.ReadFile(filename)
-		if err != nil {
-			t.Error("Failed to read corpus file", err)
-		}
-		FuzzFunction(data)
-	}
-	if profname != "" {
-		pprof.StopCPUProfile()
-		f, err := os.Create(profname + ".heap.prof")
-		if err != nil {
-			t.Logf("error creating heap profile file %s\n", err)
-		}
-		if err = pprof.WriteHeapProfile(f); err != nil {
-			t.Logf("error writing heap profile file %s\n", err)
-		}
-		f.Close()
-	}
-}
diff --git a/infra/base-images/base-builder/precompile_afl b/infra/base-images/base-builder/precompile_afl
deleted file mode 100755
index d6e71f2..0000000
--- a/infra/base-images/base-builder/precompile_afl
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-echo "Precompiling AFLplusplus"
-
-pushd $SRC/aflplusplus > /dev/null
-make clean
-# Unset CFLAGS and CXXFLAGS while building AFL since we don't want to slow it
-# down with sanitizers.
-SAVE_CXXFLAGS=$CXXFLAGS
-SAVE_CFLAGS=$CFLAGS
-unset CXXFLAGS
-unset CFLAGS
-export AFL_IGNORE_UNKNOWN_ENVS=1
-make clean
-AFL_NO_X86=1 PYTHON_INCLUDE=/ make
-make -C utils/aflpp_driver
-
-popd > /dev/null
-
-echo "Done."
diff --git a/infra/base-images/base-builder/precompile_honggfuzz b/infra/base-images/base-builder/precompile_honggfuzz
index df6bb2b..152922d 100755
--- a/infra/base-images/base-builder/precompile_honggfuzz
+++ b/infra/base-images/base-builder/precompile_honggfuzz
@@ -15,7 +15,7 @@
 #
 ################################################################################
 
-echo "Precompiling honggfuzz"
+echo -n "Precompiling honggfuzz to $PRECOMPILED_DIR..."
 export BUILD_OSSFUZZ_STATIC=true
 
 PACKAGES=(
@@ -31,15 +31,15 @@
 pushd $SRC/honggfuzz > /dev/null
 make clean
 # These CFLAGs match honggfuzz's default, with the exception of -mtune to
-# improve portability and `-D_HF_LINUX_NO_BFD` to remove assembly instructions
-# from the filenames.
-CC=clang CFLAGS="-O3 -funroll-loops -D_HF_LINUX_NO_BFD" make
+# improve portability.
+CC=clang CFLAGS="-O3 -funroll-loops" make
 
 # libhfuzz.a will be added by CC/CXX linker directly during linking,
 # but it's defined here to satisfy the build infrastructure
-ar rcs honggfuzz.a libhfuzz/*.o libhfcommon/*.o
+ar rcs $PRECOMPILED_DIR/honggfuzz.a libhfuzz/*.o libhfcommon/*.o
+cp honggfuzz $PRECOMPILED_DIR/
 popd > /dev/null
 
 apt-get remove -y --purge ${PACKAGES[@]}
 apt-get autoremove -y
-echo "Done."
+echo " done."
diff --git a/infra/base-images/base-builder/srcmap b/infra/base-images/base-builder/srcmap
index f967074..2d96473 100755
--- a/infra/base-images/base-builder/srcmap
+++ b/infra/base-images/base-builder/srcmap
@@ -25,14 +25,8 @@
   F=$(tempfile) && cat $1 | jq "$2" > $F && mv $F $1
 }
 
-PATHS_TO_SCAN="$SRC"
-
-if [[ $FUZZING_LANGUAGE == "go" ]]; then
-  PATHS_TO_SCAN="$PATHS_TO_SCAN $GOPATH"
-fi
-
 # Git
-for DOT_GIT_DIR in $(find $PATHS_TO_SCAN -name ".git" -type d); do
+for DOT_GIT_DIR in $(find $SRC -name ".git" -type d); do
   GIT_DIR=$(dirname $DOT_GIT_DIR)
   cd $GIT_DIR
   GIT_URL=$(git config --get remote.origin.url)
@@ -41,7 +35,7 @@
 done
 
 # Subversion
-for DOT_SVN_DIR in $(find $PATHS_TO_SCAN -name ".svn" -type d); do
+for DOT_SVN_DIR in $(find $SRC -name ".svn" -type d); do
   SVN_DIR=$(dirname $DOT_SVN_DIR)
   cd $SVN_DIR
   SVN_URL=$(svn info | grep "^URL:" | sed  's/URL: //g')
@@ -50,7 +44,7 @@
 done
 
 # Mercurial
-for DOT_HG_DIR in $(find $PATHS_TO_SCAN -name ".hg" -type d); do
+for DOT_HG_DIR in $(find $SRC -name ".hg" -type d); do
   HG_DIR=$(dirname $DOT_HG_DIR)
   cd $HG_DIR
   HG_URL=$(hg paths default)
diff --git a/infra/base-images/base-builder/write_labels.py b/infra/base-images/base-builder/write_labels.py
index 6766e37..338ac71 100755
--- a/infra/base-images/base-builder/write_labels.py
+++ b/infra/base-images/base-builder/write_labels.py
@@ -1,26 +1,10 @@
 #!/usr/bin/python3
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Script for writing from project.yaml to .labels file."""
 
 import os
 import json
 import sys
 
-
 def main():
-  """Writes labels."""
   if len(sys.argv) != 3:
     print('Usage: write_labels.py labels_json out_dir', file=sys.stderr)
     sys.exit(1)
@@ -29,8 +13,8 @@
   out = sys.argv[2]
 
   for target_name, labels in labels_by_target.items():
-    with open(os.path.join(out, target_name + '.labels'), 'w') as file_handle:
-      file_handle.write('\n'.join(labels))
+    with open(os.path.join(out, target_name + '.labels'), 'w') as f:
+      f.write('\n'.join(labels))
 
 
 if __name__ == '__main__':
diff --git a/infra/base-images/base-clang/Dockerfile b/infra/base-images/base-clang/Dockerfile
index 3c16a8f..df8376d 100644
--- a/infra/base-images/base-clang/Dockerfile
+++ b/infra/base-images/base-clang/Dockerfile
@@ -18,16 +18,6 @@
 
 FROM gcr.io/oss-fuzz-base/base-image
 
-# Install newer cmake.
-ENV CMAKE_VERSION 3.19.2
-RUN apt-get update && apt-get install -y wget sudo && \
-    wget https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-Linux-x86_64.sh && \
-    chmod +x cmake-$CMAKE_VERSION-Linux-x86_64.sh && \
-    ./cmake-$CMAKE_VERSION-Linux-x86_64.sh --skip-license --prefix="/usr/local" && \
-    rm cmake-$CMAKE_VERSION-Linux-x86_64.sh && \
-    SUDO_FORCE_REMOVE=yes apt-get remove --purge -y wget sudo && \
-    rm -rf /usr/local/doc/cmake /usr/local/bin/cmake-gui
-
 COPY checkout_build_install_llvm.sh /root/
 # Keep all steps in the same script to decrease the number of intermediate
 # layes in docker file.
diff --git a/infra/base-images/base-clang/checkout_build_install_llvm.sh b/infra/base-images/base-clang/checkout_build_install_llvm.sh
index f6e8ca9..156898c 100755
--- a/infra/base-images/base-clang/checkout_build_install_llvm.sh
+++ b/infra/base-images/base-clang/checkout_build_install_llvm.sh
@@ -15,14 +15,8 @@
 #
 ################################################################################
 
-# See issue #4270. The compiler crashes on GCB instance with 32 vCPUs, so when
-# we compile on GCB we want 16 cores. But locally we want more (so use nproc /
-# 2).
-NPROC=$(expr $(nproc) / 2)
-
-# zlib1g-dev is needed for llvm-profdata to handle coverage data from rust compiler
-LLVM_DEP_PACKAGES="build-essential make cmake ninja-build git python3 g++-multilib binutils-dev zlib1g-dev"
-apt-get install -y $LLVM_DEP_PACKAGES --no-install-recommends
+LLVM_DEP_PACKAGES="build-essential make cmake ninja-build git python2.7 g++-multilib"
+apt-get install -y $LLVM_DEP_PACKAGES
 
 # Checkout
 CHECKOUT_RETRIES=10
@@ -47,55 +41,37 @@
   return $CHECKOUT_RETURN_CODE
 }
 
-function cmake_llvm {
-  extra_args="$@"
-  cmake -G "Ninja" \
-      -DLIBCXX_ENABLE_SHARED=OFF \
-      -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
-      -DLIBCXXABI_ENABLE_SHARED=OFF \
-      -DCMAKE_BUILD_TYPE=Release \
-      -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
-      -DLLVM_ENABLE_PROJECTS="$PROJECTS_TO_BUILD" \
-      -DLLVM_BINUTILS_INCDIR="/usr/include/" \
-      $extra_args \
-      $LLVM_SRC/llvm
-}
-
 # Use chromium's clang revision
 mkdir $SRC/chromium_tools
 cd $SRC/chromium_tools
-git clone https://chromium.googlesource.com/chromium/src/tools/clang --depth 1
+git clone https://chromium.googlesource.com/chromium/src/tools/clang
 cd clang
 
 LLVM_SRC=$SRC/llvm-project
-
-# For manual bumping.
-OUR_LLVM_REVISION=llvmorg-12-init-17251-g6de48655
-
-# To allow for manual downgrades. Set to 0 to use Chrome's clang version (i.e.
-# *not* force a manual downgrade). Set to 1 to force a manual downgrade.
-FORCE_OUR_REVISION=1
-LLVM_REVISION=$(grep -Po "CLANG_REVISION = '\K([^']+)" scripts/update.py)
+OUR_LLVM_REVISION=e84b7a5fe230e42b8e6fe451369874a773bf1867  # For manual bumping.
+FORCE_OUR_REVISION=0  # To allow for manual downgrades.
+LLVM_REVISION=$(grep -Po "CLANG_REVISION = '\K[a-f0-9]+(?=')" scripts/update.py)
 
 clone_with_retries https://github.com/llvm/llvm-project.git $LLVM_SRC
 
 set +e
-git -C $LLVM_SRC merge-base --is-ancestor $OUR_LLVM_REVISION $LLVM_REVISION
-IS_OUR_REVISION_ANCESTOR_RETCODE=$?
+IS_OUR_REVISION_ANCESTOR=$(git -C $LLVM_SRC merge-base --is-ancestor $OUR_LLVM_REVISION $LLVM_REVISION)
 set -e
 
-# Use our revision if specified by FORCE_OUR_REVISION or if our revision is a
-# later revision than Chrome's (i.e. not an ancestor of Chrome's).
-if [ $IS_OUR_REVISION_ANCESTOR_RETCODE -ne 0 ] || [ $FORCE_OUR_REVISION -eq 1 ] ; then
+# Use our revision if specified or if our revision is a later revision than
+# Chrome's.
+if [ ! $IS_OUR_REVISION_ANCESTOR  ] || [ $FORCE_OUR_REVISION ] ; then
   LLVM_REVISION=$OUR_LLVM_REVISION
 fi
 
 git -C $LLVM_SRC checkout $LLVM_REVISION
 echo "Using LLVM revision: $LLVM_REVISION"
 
-# Build & install.
+# Build & install. We build clang in two stages because gcc can't build a
+# static version of libcxxabi
+# (see https://github.com/google/oss-fuzz/issues/2164).
 mkdir -p $WORK/llvm-stage2 $WORK/llvm-stage1
-python3 $SRC/chromium_tools/clang/scripts/update.py --output-dir $WORK/llvm-stage1
+cd $WORK/llvm-stage1
 
 TARGET_TO_BUILD=
 case $(uname -m) in
@@ -111,117 +87,64 @@
         ;;
 esac
 
-PROJECTS_TO_BUILD="libcxx;libcxxabi;compiler-rt;clang;lld"
+PROJECTS_TO_BUILD="libcxx;libcxxabi;compiler-rt;clang"
+cmake -G "Ninja" \
+      -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DLIBCXXABI_ENABLE_SHARED=OFF \
+      -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
+      -DLLVM_ENABLE_PROJECTS=$PROJECTS_TO_BUILD \
+      $LLVM_SRC/llvm
+ninja
 
 cd $WORK/llvm-stage2
 export CC=$WORK/llvm-stage1/bin/clang
 export CXX=$WORK/llvm-stage1/bin/clang++
-cmake_llvm
-ninja -j $NPROC
+cmake -G "Ninja" \
+      -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DLIBCXXABI_ENABLE_SHARED=OFF \
+      -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
+      -DLLVM_ENABLE_PROJECTS=$PROJECTS_TO_BUILD \
+      $LLVM_SRC/llvm
+ninja
 ninja install
 rm -rf $WORK/llvm-stage1 $WORK/llvm-stage2
 
-# Use the clang we just built from now on.
-CMAKE_EXTRA_ARGS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
-
-# 32-bit libraries.
 mkdir -p $WORK/i386
 cd $WORK/i386
-cmake_llvm $CMAKE_EXTRA_ARGS \
-    -DCMAKE_INSTALL_PREFIX=/usr/i386/ \
-    -DCMAKE_C_FLAGS="-m32" \
-    -DCMAKE_CXX_FLAGS="-m32"
+cmake -G "Ninja" \
+      -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
+      -DCMAKE_INSTALL_PREFIX=/usr/i386/ -DLIBCXX_ENABLE_SHARED=OFF \
+      -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release \
+      -DCMAKE_C_FLAGS="-m32" -DCMAKE_CXX_FLAGS="-m32" \
+      -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
+      -DLLVM_ENABLE_PROJECTS=$PROJECTS_TO_BUILD \
+      $LLVM_SRC/llvm
 
-ninja -j $NPROC cxx
+ninja cxx
 ninja install-cxx
 rm -rf $WORK/i386
 
-# MemorySanitizer instrumented libraries.
 mkdir -p $WORK/msan
 cd $WORK/msan
 
 # https://github.com/google/oss-fuzz/issues/1099
-cat <<EOF > $WORK/msan/blocklist.txt
+cat <<EOF > $WORK/msan/blacklist.txt
 fun:__gxx_personality_*
 EOF
 
-cmake_llvm $CMAKE_EXTRA_ARGS \
-    -DLLVM_USE_SANITIZER=Memory \
-    -DCMAKE_INSTALL_PREFIX=/usr/msan/ \
-    -DCMAKE_CXX_FLAGS="-fsanitize-blacklist=$WORK/msan/blocklist.txt"
-
-ninja -j $NPROC cxx
+cmake -G "Ninja" \
+      -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
+      -DLLVM_USE_SANITIZER=Memory -DCMAKE_INSTALL_PREFIX=/usr/msan/ \
+      -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
+      -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
+      -DCMAKE_CXX_FLAGS="-fsanitize-blacklist=$WORK/msan/blacklist.txt" \
+      -DLLVM_ENABLE_PROJECTS=$PROJECTS_TO_BUILD \
+      $LLVM_SRC/llvm
+ninja cxx
 ninja install-cxx
 rm -rf $WORK/msan
 
-# DataFlowSanitizer instrumented libraries.
-mkdir -p $WORK/dfsan
-cd $WORK/dfsan
-
-cmake_llvm $CMAKE_EXTRA_ARGS \
-    -DLLVM_USE_SANITIZER=DataFlow \
-    -DCMAKE_INSTALL_PREFIX=/usr/dfsan/
-
-ninja -j $NPROC cxx cxxabi
-ninja install-cxx install-cxxabi
-rm -rf $WORK/dfsan
-
-# libFuzzer sources.
 cp -r $LLVM_SRC/compiler-rt/lib/fuzzer $SRC/libfuzzer
-
 # Cleanup
 rm -rf $LLVM_SRC
 rm -rf $SRC/chromium_tools
 apt-get remove --purge -y $LLVM_DEP_PACKAGES
 apt-get autoremove -y
-
-# Delete unneeded parts of LLVM to reduce image size.
-# See https://github.com/google/oss-fuzz/issues/5170
-LLVM_TOOLS_TMPDIR=/tmp/llvm-tools
-mkdir $LLVM_TOOLS_TMPDIR
-# Move binaries with llvm- prefix that we want into LLVM_TOOLS_TMPDIR
-mv \
-  /usr/local/bin/llvm-ar \
-  /usr/local/bin/llvm-as \
-  /usr/local/bin/llvm-config \
-  /usr/local/bin/llvm-cov \
-  /usr/local/bin/llvm-objcopy \
-  /usr/local/bin/llvm-profdata \
-  /usr/local/bin/llvm-ranlib \
-  /usr/local/bin/llvm-symbolizer \
-  /usr/local/bin/llvm-undname \
-  $LLVM_TOOLS_TMPDIR
-# Delete remaining llvm- binaries.
-rm -rf /usr/local/bin/llvm-*
-# Restore the llvm- binaries we want to keep.
-mv $LLVM_TOOLS_TMPDIR/* /usr/local/bin/
-rm -rf $LLVM_TOOLS_TMPDIR
-
-# Remove binaries from LLVM buld that we don't need.
-rm -f \
-  /usr/local/bin/bugpoint \
-  /usr/local/bin/llc \
-  /usr/local/bin/lli \
-  /usr/local/bin/clang-check \
-  /usr/local/bin/clang-refactor \
-  /usr/local/bin/clang-offload-wrapper \
-  /usr/local/bin/clang-offload-bundler \
-  /usr/local/bin/clang-check \
-  /usr/local/bin/clang-refactor \
-  /usr/local/bin/c-index-test \
-  /usr/local/bin/clang-rename \
-  /usr/local/bin/clang-scan-deps \
-  /usr/local/bin/clang-extdef-mapping \
-  /usr/local/bin/diagtool \
-  /usr/local/bin/sanstats \
-  /usr/local/bin/dsymutil \
-  /usr/local/bin/verify-uselistorder \
-  /usr/local/bin/clang-format
-
-# Remove unneeded clang libs, CMake files from LLVM build, lld libs, and the
-# libraries.
-# Note: we need fuzzer_no_main libraries for atheris. Don't delete.
-rm -rf \
-  /usr/local/lib/libclang* \
-  /usr/local/lib/liblld* \
-  /usr/local/lib/cmake/
diff --git a/infra/base-images/base-msan-builder/Dockerfile b/infra/base-images/base-msan-builder/Dockerfile
new file mode 100644
index 0000000..315730b
--- /dev/null
+++ b/infra/base-images/base-msan-builder/Dockerfile
@@ -0,0 +1,28 @@
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-clang
+RUN sed -i -r 's/#\s*deb-src/deb-src/g' /etc/apt/sources.list
+RUN apt-get update && apt-get install -y python dpkg-dev patchelf python-apt zip
+
+# Take all libraries from lib/msan
+RUN cp -R /usr/msan/lib/* /usr/lib/
+
+COPY compiler_wrapper.py msan_build.py patch_build.py wrapper_utils.py /usr/local/bin/
+COPY packages /usr/local/bin/packages
+
+RUN mkdir /msan
+WORKDIR /msan
diff --git a/infra/base-images/base-sanitizer-libs-builder/compiler_wrapper.py b/infra/base-images/base-msan-builder/compiler_wrapper.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/compiler_wrapper.py
rename to infra/base-images/base-msan-builder/compiler_wrapper.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/compiler_wrapper_test.py b/infra/base-images/base-msan-builder/compiler_wrapper_test.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/compiler_wrapper_test.py
rename to infra/base-images/base-msan-builder/compiler_wrapper_test.py
diff --git a/infra/base-images/base-msan-builder/msan_build.py b/infra/base-images/base-msan-builder/msan_build.py
new file mode 100755
index 0000000..928b1a5
--- /dev/null
+++ b/infra/base-images/base-msan-builder/msan_build.py
@@ -0,0 +1,456 @@
+#!/usr/bin/env python
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+from __future__ import print_function
+import argparse
+import imp
+import os
+import multiprocessing
+import resource
+import shutil
+import subprocess
+import tempfile
+
+import apt
+from apt import debfile
+
+from packages import package
+import wrapper_utils
+
+SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
+PACKAGES_DIR = os.path.join(SCRIPT_DIR, 'packages')
+
+TRACK_ORIGINS_ARG = '-fsanitize-memory-track-origins='
+
+INJECTED_ARGS = [
+    '-fsanitize=memory',
+    '-fsanitize-recover=memory',
+    '-fPIC',
+    '-fno-omit-frame-pointer',
+]
+
+
+class MSanBuildException(Exception):
+  """Base exception."""
+
+
+def GetTrackOriginsFlag():
+  """Get the track origins flag."""
+  if os.getenv('MSAN_NO_TRACK_ORIGINS'):
+    return TRACK_ORIGINS_ARG + '0'
+
+  return TRACK_ORIGINS_ARG + '2'
+
+
+def GetInjectedFlags():
+  return INJECTED_ARGS + [GetTrackOriginsFlag()]
+
+
+def SetUpEnvironment(work_dir):
+  """Set up build environment."""
+  env = {}
+  env['REAL_CLANG_PATH'] = subprocess.check_output(['which', 'clang']).strip()
+  print('Real clang at', env['REAL_CLANG_PATH'])
+  compiler_wrapper_path = os.path.join(SCRIPT_DIR, 'compiler_wrapper.py')
+
+  # Symlink binaries into TMP/bin
+  bin_dir = os.path.join(work_dir, 'bin')
+  os.mkdir(bin_dir)
+
+  dpkg_host_architecture = wrapper_utils.DpkgHostArchitecture()
+  wrapper_utils.CreateSymlinks(
+      compiler_wrapper_path, bin_dir, [
+          'clang',
+          'clang++',
+          # Not all build rules respect $CC/$CXX, so make additional symlinks.
+          'gcc',
+          'g++',
+          'cc',
+          'c++',
+          dpkg_host_architecture + '-gcc',
+          dpkg_host_architecture + '-g++',
+      ])
+
+  env['CC'] = os.path.join(bin_dir, 'clang')
+  env['CXX'] = os.path.join(bin_dir, 'clang++')
+
+  MSAN_OPTIONS = ' '.join(GetInjectedFlags())
+
+  # We don't use nostrip because some build rules incorrectly break when it is
+  # passed. Instead we install our own no-op strip binaries.
+  env['DEB_BUILD_OPTIONS'] = ('nocheck parallel=%d' %
+                              multiprocessing.cpu_count())
+  env['DEB_CFLAGS_APPEND'] = MSAN_OPTIONS
+  env['DEB_CXXFLAGS_APPEND'] = MSAN_OPTIONS + ' -stdlib=libc++'
+  env['DEB_CPPFLAGS_APPEND'] = MSAN_OPTIONS
+  env['DEB_LDFLAGS_APPEND'] = MSAN_OPTIONS
+  env['DPKG_GENSYMBOLS_CHECK_LEVEL'] = '0'
+
+  # debian/rules can set DPKG_GENSYMBOLS_CHECK_LEVEL explicitly, so override it.
+  gen_symbols_wrapper = (
+        '#!/bin/sh\n'
+        'export DPKG_GENSYMBOLS_CHECK_LEVEL=0\n'
+        '/usr/bin/dpkg-gensymbols "$@"\n')
+
+  wrapper_utils.InstallWrapper(bin_dir, 'dpkg-gensymbols',
+                               gen_symbols_wrapper)
+
+  # Install no-op strip binaries.
+  no_op_strip = ('#!/bin/sh\n'
+                 'exit 0\n')
+  wrapper_utils.InstallWrapper(
+      bin_dir, 'strip', no_op_strip,
+      [dpkg_host_architecture + '-strip'])
+
+  env['PATH'] = bin_dir + ':' + os.environ['PATH']
+
+  # nocheck doesn't disable override_dh_auto_test. So we have this hack to try
+  # to disable "make check" or "make test" invocations.
+  make_wrapper = (
+      '#!/bin/bash\n'
+      'if [ "$1" = "test" ] || [ "$1" = "check" ]; then\n'
+      '  exit 0\n'
+      'fi\n'
+      '/usr/bin/make "$@"\n')
+  wrapper_utils.InstallWrapper(bin_dir, 'make',
+                               make_wrapper)
+
+  # Prevent entire build from failing because of bugs/uninstrumented in tools
+  # that are part of the build.
+  msan_log_dir = os.path.join(work_dir, 'msan')
+  os.mkdir(msan_log_dir)
+  msan_log_path = os.path.join(msan_log_dir, 'log')
+  env['MSAN_OPTIONS'] = (
+      'halt_on_error=0:exitcode=0:report_umrs=0:log_path=' + msan_log_path)
+
+  # Increase maximum stack size to prevent tests from failing.
+  limit = 128 * 1024 * 1024
+  resource.setrlimit(resource.RLIMIT_STACK, (limit, limit))
+  return env
+
+
+def FindPackageDebs(package_name, work_directory):
+  """Find package debs."""
+  deb_paths = []
+  cache = apt.Cache()
+
+  for filename in os.listdir(work_directory):
+    file_path = os.path.join(work_directory, filename)
+    if not file_path.endswith('.deb'):
+      continue
+
+    # Matching package name.
+    deb = debfile.DebPackage(file_path)
+    if deb.pkgname == package_name:
+      deb_paths.append(file_path)
+      continue
+
+    # Also include -dev packages that depend on the runtime package.
+    pkg = cache[deb.pkgname]
+    if pkg.section != 'libdevel' and pkg.section != 'universe/libdevel':
+      continue
+
+    # But ignore -dbg packages.
+    if deb.pkgname.endswith('-dbg'):
+      continue
+
+    for dependency in deb.depends:
+      if any(dep[0] == package_name for dep in dependency):
+        deb_paths.append(file_path)
+        break
+
+  return deb_paths
+
+
+def ExtractLibraries(deb_paths, work_directory, output_directory):
+  """Extract libraries from .deb packages."""
+  extract_directory = os.path.join(work_directory, 'extracted')
+  if os.path.exists(extract_directory):
+    shutil.rmtree(extract_directory, ignore_errors=True)
+
+  os.mkdir(extract_directory)
+
+  for deb_path in deb_paths:
+    subprocess.check_call(['dpkg-deb', '-x', deb_path, extract_directory])
+
+  extracted = []
+  for root, _, filenames in os.walk(extract_directory):
+    if 'libx32' in root or 'lib32' in root:
+      continue
+
+    for filename in filenames:
+      if (not filename.endswith('.so') and '.so.' not in filename and
+          not filename.endswith('.a') and '.a' not in filename):
+        continue
+
+      file_path = os.path.join(root, filename)
+      rel_file_path = os.path.relpath(file_path, extract_directory)
+      rel_directory = os.path.dirname(rel_file_path)
+
+      target_dir = os.path.join(output_directory, rel_directory)
+      if not os.path.exists(target_dir):
+        os.makedirs(target_dir)
+
+      target_file_path = os.path.join(output_directory, rel_file_path)
+      extracted.append(target_file_path)
+        
+      if os.path.lexists(target_file_path):
+        os.remove(target_file_path)
+
+      if os.path.islink(file_path):
+        link_path = os.readlink(file_path)
+        if os.path.isabs(link_path):
+          # Make absolute links relative.
+          link_path = os.path.relpath(
+              link_path, os.path.join('/', rel_directory))
+
+        os.symlink(link_path, target_file_path)
+      else:
+        shutil.copy2(file_path, target_file_path)
+
+  return extracted
+
+
+def GetPackage(package_name):
+  apt_cache = apt.Cache()
+  version = apt_cache[package_name].candidate
+  source_name = version.source_name
+  local_source_name = source_name.replace('.', '_')
+
+  custom_package_path = os.path.join(PACKAGES_DIR, local_source_name) + '.py'
+  if not os.path.exists(custom_package_path):
+    print('Using default package build steps.')
+    return package.Package(source_name, version)
+
+  print('Using custom package build steps.')
+  module = imp.load_source('packages.' + local_source_name, custom_package_path)
+  return module.Package(version)
+
+
+def PatchRpath(path, output_directory):
+  """Patch rpath to be relative to $ORIGIN."""
+  try:
+    rpaths = subprocess.check_output(
+        ['patchelf', '--print-rpath', path]).strip()
+  except subprocess.CalledProcessError:
+    return
+
+  if not rpaths:
+    return
+
+  processed_rpath = []
+  rel_directory = os.path.join(
+      '/', os.path.dirname(os.path.relpath(path, output_directory)))
+
+  for rpath in rpaths.split(':'):
+    if '$ORIGIN' in rpath:
+      # Already relative.
+      processed_rpath.append(rpath)
+      continue
+
+    processed_rpath.append(os.path.join(
+        '$ORIGIN',
+        os.path.relpath(rpath, rel_directory)))
+
+  processed_rpath = ':'.join(processed_rpath)
+  print('Patching rpath for', path, 'to', processed_rpath)
+  subprocess.check_call(
+      ['patchelf', '--force-rpath', '--set-rpath',
+       processed_rpath, path])
+
+
+def _CollectDependencies(apt_cache, pkg, cache, dependencies):
+  """Collect dependencies that need to be built."""
+  C_OR_CXX_DEPS = [
+      'libc++1',
+      'libc6',
+      'libc++abi1',
+      'libgcc1',
+      'libstdc++6',
+  ]
+
+  BLACKLISTED_PACKAGES = [
+      'libcapnp-0.5.3',  # fails to compile on newer clang.
+      'libllvm5.0',
+      'libmircore1',
+      'libmircommon7',
+      'libmirclient9',
+      'libmirprotobuf3',
+      'multiarch-support',
+  ]
+
+  if pkg.name in BLACKLISTED_PACKAGES:
+    return False
+
+  if pkg.section != 'libs' and pkg.section != 'universe/libs':
+    return False
+
+  if pkg.name in C_OR_CXX_DEPS:
+    return True
+
+  is_c_or_cxx = False
+  for dependency in pkg.candidate.dependencies:
+    dependency = dependency[0]
+
+    if dependency.name in cache:
+      is_c_or_cxx |= cache[dependency.name]
+    else:
+      is_c_or_cxx |= _CollectDependencies(apt_cache, apt_cache[dependency.name],
+                                          cache, dependencies)
+  if is_c_or_cxx:
+    dependencies.append(pkg.name)
+
+  cache[pkg.name] = is_c_or_cxx
+  return is_c_or_cxx
+
+
+def GetBuildList(package_name):
+  """Get list of packages that need to be built including dependencies."""
+  apt_cache = apt.Cache()
+  pkg = apt_cache[package_name]
+
+  dependencies = []
+  _CollectDependencies(apt_cache, pkg, {}, dependencies)
+  return dependencies
+
+
+class MSanBuilder(object):
+  """MSan builder."""
+
+  def __init__(self, debug=False, log_path=None, work_dir=None, no_track_origins=False):
+    self.debug = debug
+    self.log_path = log_path
+    self.work_dir = work_dir
+    self.no_track_origins = no_track_origins
+    self.env = None
+
+  def __enter__(self):
+    if not self.work_dir:
+      self.work_dir = tempfile.mkdtemp(dir=self.work_dir)
+
+    if os.path.exists(self.work_dir):
+      shutil.rmtree(self.work_dir, ignore_errors=True)
+
+    os.makedirs(self.work_dir)
+    self.env = SetUpEnvironment(self.work_dir)
+
+    if self.debug and self.log_path:
+      self.env['WRAPPER_DEBUG_LOG_PATH'] = self.log_path
+
+    if self.no_track_origins:
+      self.env['MSAN_NO_TRACK_ORIGINS'] = '1'
+
+    return self
+
+  def __exit__(self, exc_type, exc_value, traceback):
+    if not self.debug:
+      shutil.rmtree(self.work_dir, ignore_errors=True)
+
+  def Build(self, package_name, output_directory, create_subdirs=False):
+    """Build the package and write results into the output directory."""
+    deb_paths = FindPackageDebs(package_name, self.work_dir)
+    if deb_paths:
+      print('Source package already built for', package_name)
+    else:
+      pkg = GetPackage(package_name)
+
+      pkg.InstallBuildDeps()
+      source_directory = pkg.DownloadSource(self.work_dir)
+      print('Source downloaded to', source_directory)
+
+      # custom bin directory for custom build scripts to write wrappers.
+      custom_bin_dir = os.path.join(self.work_dir, package_name + '_bin')
+      os.mkdir(custom_bin_dir)
+      env = self.env.copy()
+      env['PATH'] = custom_bin_dir + ':' + env['PATH']
+
+      pkg.Build(source_directory, env, custom_bin_dir)
+      shutil.rmtree(custom_bin_dir, ignore_errors=True)
+
+      deb_paths = FindPackageDebs(package_name, self.work_dir)
+
+    if not deb_paths:
+      raise MSanBuildException('Failed to find .deb packages.')
+
+    print('Extracting', ' '.join(deb_paths))
+
+    if create_subdirs:
+      extract_directory = os.path.join(output_directory, package_name)
+    else:
+      extract_directory = output_directory
+
+    extracted_paths = ExtractLibraries(deb_paths, self.work_dir,
+                                       extract_directory)
+    for extracted_path in extracted_paths:
+      if not os.path.islink(extracted_path):
+        PatchRpath(extracted_path, extract_directory)
+
+
+def main():
+  parser = argparse.ArgumentParser('msan_build.py', description='MSan builder.')
+  parser.add_argument('package_names', nargs='+', help='Name of the packages.')
+  parser.add_argument('output_dir', help='Output directory.')
+  parser.add_argument('--create-subdirs', action='store_true',
+                      help=('Create subdirectories in the output '
+                            'directory for each package.'))
+  parser.add_argument('--work-dir', help='Work directory.')
+  parser.add_argument('--no-build-deps', action='store_true',
+                      help='Don\'t build dependencies.')
+  parser.add_argument('--debug', action='store_true', help='Enable debug mode.')
+  parser.add_argument('--log-path', help='Log path for debugging.')
+  parser.add_argument('--no-track-origins',
+                      action='store_true',
+                      help='Build with -fsanitize-memory-track-origins=0.')
+  args = parser.parse_args()
+
+  if args.no_track_origins:
+    os.environ['MSAN_NO_TRACK_ORIGINS'] = '1'
+
+  if not os.path.exists(args.output_dir):
+    os.makedirs(args.output_dir)
+
+  if args.no_build_deps:
+    package_names = args.package_names
+  else:
+    all_packages = set()
+    package_names = []
+
+    # Get list of packages to build, including all dependencies.
+    for package_name in args.package_names:
+      for dep in GetBuildList(package_name):
+        if dep in all_packages:
+          continue
+
+        if args.create_subdirs:
+          os.mkdir(os.path.join(args.output_dir, dep))
+
+        all_packages.add(dep)
+        package_names.append(dep)
+
+  print('Going to build:')
+  for package_name in package_names:
+    print('\t', package_name)
+
+  with MSanBuilder(debug=args.debug, log_path=args.log_path,
+                   work_dir=args.work_dir,
+                   no_track_origins=args.no_track_origins) as builder:
+    for package_name in package_names:
+      builder.Build(package_name, args.output_dir, args.create_subdirs)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/__init__.py b/infra/base-images/base-msan-builder/packages/__init__.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/__init__.py
rename to infra/base-images/base-msan-builder/packages/__init__.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/boost1_58.py b/infra/base-images/base-msan-builder/packages/boost1_58.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/boost1_58.py
rename to infra/base-images/base-msan-builder/packages/boost1_58.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/gnutls28.py b/infra/base-images/base-msan-builder/packages/gnutls28.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/gnutls28.py
rename to infra/base-images/base-msan-builder/packages/gnutls28.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/libgcrypt20.py b/infra/base-images/base-msan-builder/packages/libgcrypt20.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/libgcrypt20.py
rename to infra/base-images/base-msan-builder/packages/libgcrypt20.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/mesa.py b/infra/base-images/base-msan-builder/packages/mesa.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/mesa.py
rename to infra/base-images/base-msan-builder/packages/mesa.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/nettle.py b/infra/base-images/base-msan-builder/packages/nettle.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/nettle.py
rename to infra/base-images/base-msan-builder/packages/nettle.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/openssl.py b/infra/base-images/base-msan-builder/packages/openssl.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/openssl.py
rename to infra/base-images/base-msan-builder/packages/openssl.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/package.py b/infra/base-images/base-msan-builder/packages/package.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/package.py
rename to infra/base-images/base-msan-builder/packages/package.py
diff --git a/infra/base-images/base-msan-builder/packages/pixman.py b/infra/base-images/base-msan-builder/packages/pixman.py
new file mode 100644
index 0000000..d63b146
--- /dev/null
+++ b/infra/base-images/base-msan-builder/packages/pixman.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+import os
+import shutil
+
+import package
+
+
+class Package(package.Package):
+  """pixman package."""
+
+  def __init__(self, apt_version):
+    super(Package, self).__init__('pixman', apt_version)
+
+  def PostDownload(self, source_directory):
+    # Incorrect checking of GCC vector extension availability.
+    os.system(
+      'sed s/support_for_gcc_vector_extensions=yes/'
+      'support_for_gcc_vector_extensions=no/ -i %s/configure.ac' %
+      source_directory)
+
+  def PreBuild(self, source_directory, env, custom_bin_dir):
+    blacklist_flag = ' -fsanitize-blacklist=' + os.path.join(
+        os.path.dirname(os.path.abspath(__file__)),
+        'pixman_blacklist.txt')
+    env['DEB_CXXFLAGS_APPEND'] += blacklist_flag
+    env['DEB_CFLAGS_APPEND'] += blacklist_flag
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/pixman_blocklist.txt b/infra/base-images/base-msan-builder/packages/pixman_blacklist.txt
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/pixman_blocklist.txt
rename to infra/base-images/base-msan-builder/packages/pixman_blacklist.txt
diff --git a/infra/base-images/base-msan-builder/packages/pulseaudio.py b/infra/base-images/base-msan-builder/packages/pulseaudio.py
new file mode 100644
index 0000000..853b9e7
--- /dev/null
+++ b/infra/base-images/base-msan-builder/packages/pulseaudio.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+from __future__ import print_function
+import glob
+import os
+import subprocess
+
+import package
+
+
+class Package(package.Package):
+  """PulseAudio package."""
+
+  def __init__(self, apt_version):
+    super(Package, self).__init__('pulseaudio', apt_version)
+
+  def PostDownload(self, source_directory):
+    """Remove blacklisted patches."""
+    # Fix *droid* patches.
+    bad_patch_path = os.path.join(
+        source_directory, 'debian', 'patches',
+        '0600-droid-sync-with-upstream-for-Android-5-support-and-b.patch')
+    if not os.path.exists(bad_patch_path):
+      return
+
+    print('Applying custom patches.')
+    package.ApplyPatch(source_directory, 'pulseaudio_fix_android.patch')
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/pulseaudio_fix_android.patch b/infra/base-images/base-msan-builder/packages/pulseaudio_fix_android.patch
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/pulseaudio_fix_android.patch
rename to infra/base-images/base-msan-builder/packages/pulseaudio_fix_android.patch
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/sqlite3.py b/infra/base-images/base-msan-builder/packages/sqlite3.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/sqlite3.py
rename to infra/base-images/base-msan-builder/packages/sqlite3.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/systemd.py b/infra/base-images/base-msan-builder/packages/systemd.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/systemd.py
rename to infra/base-images/base-msan-builder/packages/systemd.py
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/tar.py b/infra/base-images/base-msan-builder/packages/tar.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/packages/tar.py
rename to infra/base-images/base-msan-builder/packages/tar.py
diff --git a/infra/base-images/base-msan-builder/patch_build.py b/infra/base-images/base-msan-builder/patch_build.py
new file mode 100755
index 0000000..04fc97c
--- /dev/null
+++ b/infra/base-images/base-msan-builder/patch_build.py
@@ -0,0 +1,139 @@
+#!/usr/bin/env python
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+from __future__ import print_function
+import argparse
+import os
+import re
+import shutil
+import subprocess
+import sys
+
+INSTRUMENTED_LIBRARIES_DIRNAME = 'instrumented_libraries'
+MSAN_LIBS_PATH = os.getenv('MSAN_LIBS_PATH', '/msan')
+
+
+def IsElf(file_path):
+  """Whether if the file is an elf file."""
+  with open(file_path) as f:
+    return f.read(4) == '\x7fELF'
+
+
+def Ldd(binary_path):
+  """Run ldd on a file."""
+  try:
+    output = subprocess.check_output(['ldd', binary_path], stderr=subprocess.STDOUT)
+  except subprocess.CalledProcessError:
+    print('Failed to call ldd on', binary_path, file=sys.stderr)
+    return []
+
+  libs = []
+
+  OUTPUT_PATTERN = re.compile(r'\s*([^\s]+)\s*=>\s*([^\s]+)')
+  for line in output.splitlines():
+    match = OUTPUT_PATTERN.match(line)
+    if not match:
+      continue
+
+    libs.append((match.group(1), match.group(2)))
+
+  return libs
+
+
+def FindLib(path):
+  """Find instrumented version of lib."""
+  candidate_path = os.path.join(MSAN_LIBS_PATH, path[1:])
+  if os.path.exists(candidate_path):
+    return candidate_path
+  
+  for lib_dir in os.listdir(MSAN_LIBS_PATH):
+    candidate_path = os.path.join(MSAN_LIBS_PATH, lib_dir, path[1:])
+    if os.path.exists(candidate_path):
+      return candidate_path
+
+  return None
+
+
+def PatchBinary(binary_path, instrumented_dir):
+  """Patch binary to link to instrumented libs."""
+  extra_rpaths = set()
+
+  for name, path in Ldd(binary_path):
+    if not os.path.isabs(path):
+      continue
+
+    instrumented_path = FindLib(path)
+    if not instrumented_path:
+      print('WARNING: Instrumented library not found for', path,
+            file=sys.stderr)
+      continue
+
+    target_path = os.path.join(instrumented_dir, path[1:])
+    if not os.path.exists(target_path):
+      print('Copying instrumented lib to', target_path)
+      target_dir = os.path.dirname(target_path)
+      if not os.path.exists(target_dir):
+        os.makedirs(target_dir)
+      shutil.copy2(instrumented_path, target_path)
+
+    extra_rpaths.add(
+        os.path.join('$ORIGIN', INSTRUMENTED_LIBRARIES_DIRNAME,
+                     os.path.dirname(path[1:])))
+
+  if not extra_rpaths:
+    return
+
+  existing_rpaths = subprocess.check_output(
+      ['patchelf', '--print-rpath', binary_path]).strip()
+  processed_rpaths = ':'.join(extra_rpaths)
+  if existing_rpaths:
+    processed_rpaths += ':' + existing_rpaths
+  print('Patching rpath for', binary_path, 'from', existing_rpaths, 'to',
+        processed_rpaths)
+
+  subprocess.check_call(
+      ['patchelf', '--force-rpath', '--set-rpath',
+       processed_rpaths, binary_path])
+
+
+def PatchBuild(output_directory):
+  """Patch build to use msan libs."""
+  instrumented_dir = os.path.join(output_directory,
+                                  INSTRUMENTED_LIBRARIES_DIRNAME)
+  if not os.path.exists(instrumented_dir):
+    os.mkdir(instrumented_dir)
+
+  for root_dir, _, filenames in os.walk(output_directory):
+    for filename in filenames:
+      file_path = os.path.join(root_dir, filename)
+      if not IsElf(file_path):
+        continue
+
+      PatchBinary(file_path, instrumented_dir)
+
+
+def main():
+  parser = argparse.ArgumentParser('patch_build.py', description='MSan build patcher.')
+  parser.add_argument('output_dir', help='Output directory.')
+
+  args = parser.parse_args()
+
+  PatchBuild(os.path.abspath(args.output_dir))
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/base-images/base-sanitizer-libs-builder/wrapper_utils.py b/infra/base-images/base-msan-builder/wrapper_utils.py
similarity index 100%
rename from infra/base-images/base-sanitizer-libs-builder/wrapper_utils.py
rename to infra/base-images/base-msan-builder/wrapper_utils.py
diff --git a/infra/base-images/base-runner-debug/Dockerfile b/infra/base-images/base-runner-debug/Dockerfile
index c7c7daa..3d22bd7 100644
--- a/infra/base-images/base-runner-debug/Dockerfile
+++ b/infra/base-images/base-runner-debug/Dockerfile
@@ -15,4 +15,4 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-runner
-RUN apt-get update && apt-get install -y gdb valgrind zip
+RUN apt-get install -y gdb valgrind zip
diff --git a/infra/base-images/base-runner/Dockerfile b/infra/base-images/base-runner/Dockerfile
old mode 100755
new mode 100644
index f847de0..ea29e1f
--- a/infra/base-images/base-runner/Dockerfile
+++ b/infra/base-images/base-runner/Dockerfile
@@ -14,95 +14,52 @@
 #
 ################################################################################
 
-# Build rust stuff in its own image. We only need the resulting binaries.
-# Keeping the rust toolchain in the image wastes 1 GB.
-FROM gcr.io/oss-fuzz-base/base-image as temp-runner-binary-builder
-
-RUN apt-get update && apt-get install -y cargo
-RUN cargo install rustfilt
-
 # Using multi-stage build to copy some LLVM binaries needed in the runner image.
 FROM gcr.io/oss-fuzz-base/base-clang AS base-clang
 
-# Real image that will be used later.
 FROM gcr.io/oss-fuzz-base/base-image
 
-COPY --from=temp-runner-binary-builder /root/.cargo/bin/rustfilt /usr/local/bin
-
 # Copy the binaries needed for code coverage and crash symbolization.
-COPY --from=base-clang /usr/local/bin/llvm-cov \
-     /usr/local/bin/llvm-profdata \
-     /usr/local/bin/llvm-symbolizer \
-     /usr/local/bin/
+COPY --from=base-clang /usr/local/bin/llvm-cov /usr/local/bin/
+COPY --from=base-clang /usr/local/bin/llvm-profdata /usr/local/bin/
+COPY --from=base-clang /usr/local/bin/llvm-symbolizer /usr/local/bin/
 
-RUN apt-get update && apt-get install -y \
+RUN apt-get install -y \
     binutils \
     file \
     fonts-dejavu \
     git \
-    lib32gcc1 \
-    libc6-i386 \
+    libc6-dev-i386 \
     libcap2 \
     python3 \
     python3-pip \
-    unzip \
     wget \
-    zip --no-install-recommends
+    zip
 
-RUN git clone https://chromium.googlesource.com/chromium/src/tools/code_coverage /opt/code_coverage && \
-    pip3 install -r /opt/code_coverage/requirements.txt
+RUN git clone https://chromium.googlesource.com/chromium/src/tools/code_coverage /opt/code_coverage
+RUN pip3 install -r /opt/code_coverage/requirements.txt
 
-# Default environment options for various sanitizers.
-# Note that these match the settings used in ClusterFuzz and
-# shouldn't be changed unless a corresponding change is made on
-# ClusterFuzz side as well.
-ENV ASAN_OPTIONS="alloc_dealloc_mismatch=0:allocator_may_return_null=1:allocator_release_to_os_interval_ms=500:check_malloc_usable_size=0:detect_container_overflow=1:detect_odr_violation=0:detect_leaks=1:detect_stack_use_after_return=1:fast_unwind_on_fatal=0:handle_abort=1:handle_segv=1:handle_sigill=1:max_uar_stack_size_log=16:print_scariness=1:quarantine_size_mb=10:strict_memcmp=1:strip_path_prefix=/workspace/:symbolize=1:use_sigaltstack=1:dedup_token_length=3"
-ENV MSAN_OPTIONS="print_stats=1:strip_path_prefix=/workspace/:symbolize=1:dedup_token_length=3"
-ENV UBSAN_OPTIONS="print_stacktrace=1:print_summary=1:silence_unsigned_overflow=1:strip_path_prefix=/workspace/:symbolize=1:dedup_token_length=3"
-ENV FUZZER_ARGS="-rss_limit_mb=2560 -timeout=25"
-ENV AFL_FUZZER_ARGS="-m none"
-
-# Download and install the latest stable Go.
-ADD https://storage.googleapis.com/golang/getgo/installer_linux $SRC/
-RUN chmod +x $SRC/installer_linux && \
-    SHELL="bash" $SRC/installer_linux && \
-    rm $SRC/installer_linux
-
-# Set up Golang environment variables (copied from /root/.bash_profile).
-ENV GOPATH /root/go
-
-# /root/.go/bin is for the standard Go binaries (i.e. go, gofmt, etc).
-# $GOPATH/bin is for the binaries from the dependencies installed via "go get".
-ENV PATH $PATH:/root/.go/bin:$GOPATH/bin
-
-# Set up Golang coverage modules.
-COPY gocoverage $GOPATH/gocoverage
-RUN cd $GOPATH/gocoverage && go install ./...
-
-# Install OpenJDK 15 and trim its size by removing unused components.
-ENV JAVA_HOME=/usr/lib/jvm/java-15-openjdk-amd64
-ENV JVM_LD_LIBRARY_PATH=$JAVA_HOME/lib/server
-ENV PATH=$PATH:$JAVA_HOME/bin
-
-RUN wget https://download.java.net/java/GA/jdk15.0.2/0d1cfde4252546c6931946de8db48ee2/7/GPL/openjdk-15.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk-15.0.2_linux-x64_bin.tar.gz && \
-    cd /tmp && \
-    mkdir -p $JAVA_HOME && \
-    tar -xzv --strip-components=1 -f openjdk-15.0.2_linux-x64_bin.tar.gz --directory $JAVA_HOME && \
-    rm -f openjdk-15.0.2_linux-x64_bin.tar.gz && \
-    rm -rf $JAVA_HOME/jmods $JAVA_HOME/lib/src.zip
-
-# Do this last to make developing these files easier/faster due to caching.
 COPY bad_build_check \
     collect_dft \
     coverage \
     coverage_helper \
     dataflow_tracer.py \
     download_corpus \
-    rcfilt \
+    minijail0 \
     reproduce \
     run_fuzzer \
-    parse_options.py \
+    run_minijail \
     targets_list \
-    test_all.py \
-    test_one.py \
+    test_all \
+    test_one \
     /usr/local/bin/
+
+# Default environment options for various sanitizers.
+# Note that these match the settings used in ClusterFuzz and
+# shouldn't be changed unless a corresponding change is made on
+# ClusterFuzz side as well.
+ENV ASAN_OPTIONS="alloc_dealloc_mismatch=0:allocator_may_return_null=1:allocator_release_to_os_interval_ms=500:check_malloc_usable_size=0:detect_container_overflow=1:detect_odr_violation=0:detect_leaks=1:detect_stack_use_after_return=1:fast_unwind_on_fatal=0:handle_abort=1:handle_segv=1:handle_sigill=1:max_uar_stack_size_log=16:print_scariness=1:quarantine_size_mb=10:strict_memcmp=1:strip_path_prefix=/workspace/:symbolize=1:use_sigaltstack=1"
+ENV MSAN_OPTIONS="print_stats=1:strip_path_prefix=/workspace/:symbolize=1"
+ENV UBSAN_OPTIONS="print_stacktrace=1:print_summary=1:silence_unsigned_overflow=1:strip_path_prefix=/workspace/:symbolize=1"
+ENV FUZZER_ARGS="-rss_limit_mb=2560 -timeout=25"
+ENV AFL_FUZZER_ARGS="-m none"
diff --git a/infra/base-images/base-runner/README.md b/infra/base-images/base-runner/README.md
index 734d587..94f7936 100644
--- a/infra/base-images/base-runner/README.md
+++ b/infra/base-images/base-runner/README.md
@@ -11,7 +11,7 @@
 |---------|-------------|
 | `reproduce <fuzzer_name> <fuzzer_options>` | build all fuzz targets and run specified one with testcase `/testcase` and given options.
 | `run_fuzzer <fuzzer_name> <fuzzer_options>` | runs specified fuzzer combining options with `.options` file |
-| `test_all.py` | runs every binary in `/out` as a fuzzer for a while to ensure it works. |
+| `test_all` | runs every binary in `/out` as a fuzzer for a while to ensure it works. |
 
 # Examples
 
diff --git a/infra/base-images/base-runner/bad_build_check b/infra/base-images/base-runner/bad_build_check
index 01f8fbb..c3fa68c 100755
--- a/infra/base-images/base-runner/bad_build_check
+++ b/infra/base-images/base-runner/bad_build_check
@@ -37,9 +37,7 @@
 DFSAN_CALLS_THRESHOLD_FOR_NON_DFSAN_BUILD=0
 
 MSAN_CALLS_THRESHOLD_FOR_MSAN_BUILD=1000
-# Some engines (e.g. honggfuzz) may make a very small number of calls to msan
-# for memory poisoning.
-MSAN_CALLS_THRESHOLD_FOR_NON_MSAN_BUILD=2
+MSAN_CALLS_THRESHOLD_FOR_NON_MSAN_BUILD=0
 
 # Usually, a non UBSan build (e.g. ASan) has 165 calls to UBSan runtime. The
 # majority of targets built with UBSan have 200+ UBSan calls, but there are
@@ -62,7 +60,7 @@
 fi
 
 
-# Verify that the given fuzz target is correctly built to run with a particular
+# Verify that the given fuzz target is corectly built to run with a particular
 # engine.
 function check_engine {
   local FUZZER=$1
@@ -100,14 +98,6 @@
       cat $FUZZER_OUTPUT
       return 1
     fi
-  elif [[ "$FUZZING_ENGINE" == honggfuzz ]]; then
-    SKIP_SEED_CORPUS=1 timeout --preserve-status -s INT 20s run_fuzzer $FUZZER_NAME &>$FUZZER_OUTPUT
-    CHECK_PASSED=$(egrep "^Sz:[0-9]+ Tm:[0-9]+" -c $FUZZER_OUTPUT)
-    if (( $CHECK_PASSED == 0 )); then
-      echo "BAD BUILD: fuzzing $FUZZER with honggfuzz failed."
-      cat $FUZZER_OUTPUT
-      return 1
-    fi
   elif [[ "$FUZZING_ENGINE" == dataflow ]]; then
     $FUZZER &> $FUZZER_OUTPUT
     local NUMBER_OF_FUNCTIONS=$(grep -Po "INFO:\s+\K[[:digit:]]+(?=\s+instrumented function.*)" $FUZZER_OUTPUT)
@@ -132,8 +122,7 @@
   local CHECK_PASSED=0
 
   if [[ "$FUZZING_ENGINE" = libfuzzer ]]; then
-    # Skip seed corpus as there is another explicit check that uses seed corpora.
-    SKIP_SEED_CORPUS=1 run_fuzzer $FUZZER_NAME -seed=1337 -runs=$MIN_NUMBER_OF_RUNS &>$FUZZER_OUTPUT
+    $FUZZER -seed=1337 -runs=$MIN_NUMBER_OF_RUNS &>$FUZZER_OUTPUT
     CHECK_PASSED=$(egrep "Done $MIN_NUMBER_OF_RUNS runs" -c $FUZZER_OUTPUT)
   elif [[ "$FUZZING_ENGINE" = afl ]]; then
     # TODO(https://github.com/google/oss-fuzz/issues/2470): Dont use
@@ -300,25 +289,13 @@
   local FUZZER=$1
   local result=0
   local CALL_INSN=
-
-  if [ "${FUZZING_LANGUAGE:-}" = "jvm" ]; then
-    # Sanitizer runtime is linked into the Jazzer driver, so this check does not
-    # apply.
-    return 0
-  fi
-
-  if [ "${FUZZING_LANGUAGE:-}" = "python" ]; then
-    # Sanitizer runtime is loaded via LD_PRELOAD, so this check does not apply.
-    return 0
-  fi
-
   if [[ $ARCHITECTURE == 'i386' ]]
   then
     CALL_INSN="call\s+[0-9a-f]+\s+<"
   else
     case $(uname -m) in
       x86_64)
-        CALL_INSN="callq?\s+[0-9a-f]+\s+<"
+        CALL_INSN="callq\s+[0-9a-f]+\s+<"
         ;;
       aarch64)
         CALL_INSN="bl\s+[0-9a-f]+\s+<"
@@ -334,7 +311,6 @@
   local MSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__msan" -c)
   local UBSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__ubsan" -c)
 
-
   if [[ "$SANITIZER" = address ]]; then
     check_asan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS
     result=$?
@@ -347,9 +323,6 @@
   elif [[ "$SANITIZER" = undefined ]]; then
     check_ubsan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS
     result=$?
-  elif [[ "$SANITIZER" = thread ]]; then
-    # TODO(metzman): Implement this.
-    result=0
   fi
 
   return $result
@@ -385,17 +358,6 @@
 function check_architecture {
   local FUZZER=$1
   local FUZZER_NAME=$(basename $FUZZER)
-
-  if [ "${FUZZING_LANGUAGE:-}" = "jvm" ]; then
-    # The native dependencies of a JVM project are not packaged, but loaded
-    # dynamically at runtime and thus cannot be checked here.
-    return 0;
-  fi
-
-  if [ "${FUZZING_LANGUAGE:-}" = "python" ]; then
-    FUZZER=${FUZZER}.pkg
-  fi
-
   FILE_OUTPUT=$(file $FUZZER)
   if [[ $ARCHITECTURE == "x86_64" ]]
   then
diff --git a/infra/base-images/base-runner/collect_dft b/infra/base-images/base-runner/collect_dft
index 3f6c689..e316c0d 100755
--- a/infra/base-images/base-runner/collect_dft
+++ b/infra/base-images/base-runner/collect_dft
@@ -23,9 +23,7 @@
 fi
 
 # Timeout for running a single fuzz target.
-if [ -z "$COLLECT_DFT_TIMEOUT" ]; then
-  COLLECT_DFT_TIMEOUT=1h
-fi
+TIMEOUT=1h
 
 # Number of CPUs available, this is needed for running targets in parallel.
 NPROC=$(nproc)
@@ -40,7 +38,7 @@
 
   rm -rf $traces && mkdir -p $traces
 
-  timeout $COLLECT_DFT_TIMEOUT dataflow_tracer.py $OUT/$target $corpus $traces &> $log
+  timeout $TIMEOUT dataflow_tracer.py $OUT/$target $corpus $traces &> $log
   if (( $? != 0 )); then
     echo "Error occured while collecting data flow traces for $target:"
     cat $log
diff --git a/infra/base-images/base-runner/coverage b/infra/base-images/base-runner/coverage
index a86b00d..acf7703 100755
--- a/infra/base-images/base-runner/coverage
+++ b/infra/base-images/base-runner/coverage
@@ -64,7 +64,7 @@
   local profdata_file="$DUMPS_DIR/$target.profdata"
   local corpus_real="/corpus/${target}"
 
-  # -merge=1 requires an output directory, create a new, empty dir for that.
+  # -merge=1 requires an output directory, create a dummy dir for that.
   local corpus_dummy="$OUT/dummy_corpus_dir_for_${target}"
   rm -rf $corpus_dummy && mkdir -p $corpus_dummy
 
@@ -96,61 +96,25 @@
   rm $profraw_file_mask
 
   shared_libraries=$(coverage_helper shared_libs -build-dir=$OUT -object=$target)
-
   llvm-cov export -summary-only -instr-profile=$profdata_file -object=$target \
       $shared_libraries $LLVM_COV_COMMON_ARGS > $FUZZER_STATS_DIR/$target.json
-
-  if [ -n "${FULL_SUMMARY_PER_TARGET-}" ]; then
-    # This is needed for dataflow strategy analysis, can be removed later. See
-    # - https://github.com/google/oss-fuzz/pull/3306
-    # - https://github.com/google/oss-fuzz/issues/1632
-    # Intentionally writing these to the logs dir in order to hide the dumps
-    # from the ClusterFuzz cron job.
-    llvm-cov export -instr-profile=$profdata_file -object=$target \
-      $shared_libraries $LLVM_COV_COMMON_ARGS > $LOGS_DIR/$target.json
-  fi
 }
 
-function run_go_fuzz_target {
-  local target=$1
-
-  echo "Running go target $target"
-  export FUZZ_CORPUS_DIR="/corpus/${target}/"
-  export FUZZ_PROFILE_NAME="$DUMPS_DIR/$target.perf"
-  $OUT/$target -test.coverprofile $DUMPS_DIR/$target.profdata &> $LOGS_DIR/$target.log
-  # translate from golangish paths to current absolute paths
-  cat $OUT/$target.gocovpath | while read i; do sed -i $i $DUMPS_DIR/$target.profdata; done
-  # cf PATH_EQUIVALENCE_ARGS
-  sed -i 's=/='$OUT'/=' $DUMPS_DIR/$target.profdata
-  $SYSGOPATH/bin/gocovsum $DUMPS_DIR/$target.profdata > $FUZZER_STATS_DIR/$target.json
-}
-
-export SYSGOPATH=$GOPATH
-export GOPATH=$OUT/$GOPATH
 # Run each fuzz target, generate raw coverage dumps.
 for fuzz_target in $FUZZ_TARGETS; do
-  # Test if fuzz target is a golang one.
-  if [[ $FUZZING_LANGUAGE == "go" ]]; then
-    # Continue if not a fuzz target.
-    if [[ $FUZZING_ENGINE != "none" ]]; then
-      grep "FUZZ_CORPUS_DIR" $fuzz_target > /dev/null 2>&1 || continue
-    fi
-    run_go_fuzz_target $fuzz_target &
+  # Continue if not a fuzz target.
+  if [[ $FUZZING_ENGINE != "none" ]]; then
+    grep "LLVMFuzzerTestOneInput" $fuzz_target > /dev/null 2>&1 || continue
+  fi
+
+  echo "Running $fuzz_target"
+  run_fuzz_target $fuzz_target &
+
+  if [[ -z $objects ]]; then
+    # The first object needs to be passed without -object= flag.
+    objects="$fuzz_target"
   else
-    # Continue if not a fuzz target.
-    if [[ $FUZZING_ENGINE != "none" ]]; then
-      grep "LLVMFuzzerTestOneInput" $fuzz_target > /dev/null 2>&1 || continue
-    fi
-
-    echo "Running $fuzz_target"
-    run_fuzz_target $fuzz_target &
-
-    if [[ -z $objects ]]; then
-      # The first object needs to be passed without -object= flag.
-      objects="$fuzz_target"
-    else
-      objects="$objects -object=$fuzz_target"
-    fi
+    objects="$objects -object=$fuzz_target"
   fi
 
   # Do not spawn more processes than the number of CPUs available.
@@ -164,47 +128,32 @@
 # Wait for background processes to finish.
 wait
 
-if [[ $FUZZING_LANGUAGE == "go" ]]; then
-  $SYSGOPATH/bin/gocovmerge $DUMPS_DIR/*.profdata > fuzz.cov
-  go tool cover -html=fuzz.cov -o $REPORT_ROOT_DIR/index.html
-  $SYSGOPATH/bin/gocovsum fuzz.cov > $SUMMARY_FILE
-  cp $REPORT_ROOT_DIR/index.html $REPORT_PLATFORM_DIR/index.html
-  $SYSGOPATH/bin/pprof-merge $DUMPS_DIR/*.perf.cpu.prof
-  mv merged.data $REPORT_ROOT_DIR/cpu.prof
-  $SYSGOPATH/bin/pprof-merge $DUMPS_DIR/*.perf.heap.prof
-  mv merged.data $REPORT_ROOT_DIR/heap.prof
-  #TODO some proxy for go tool pprof -http=127.0.0.1:8001 $DUMPS_DIR/cpu.prof
-  echo "Finished generating code coverage report for Go fuzz targets."
-else
+# From this point on the script does not tolerate any errors.
+set -e
 
-  # From this point on the script does not tolerate any errors.
-  set -e
+# Merge all dumps from the individual targets.
+rm -f $PROFILE_FILE
+llvm-profdata merge -sparse $DUMPS_DIR/*.profdata -o $PROFILE_FILE
 
-  # Merge all dumps from the individual targets.
-  rm -f $PROFILE_FILE
-  llvm-profdata merge -sparse $DUMPS_DIR/*.profdata -o $PROFILE_FILE
+# TODO(mmoroz): add script from Chromium for rendering directory view reports.
+# The first path in $objects does not have -object= prefix (llvm-cov format).
+shared_libraries=$(coverage_helper shared_libs -build-dir=$OUT -object=$objects)
+objects="$objects $shared_libraries"
 
-  # TODO(mmoroz): add script from Chromium for rendering directory view reports.
-  # The first path in $objects does not have -object= prefix (llvm-cov format).
-  shared_libraries=$(coverage_helper shared_libs -build-dir=$OUT -object=$objects)
-  objects="$objects $shared_libraries"
+# It's important to use $LLVM_COV_COMMON_ARGS as the last argument due to
+# positional arguments (SOURCES) that can be passed via $COVERAGE_EXTRA_ARGS.
+LLVM_COV_ARGS="-instr-profile=$PROFILE_FILE $objects $LLVM_COV_COMMON_ARGS"
 
-  # It's important to use $LLVM_COV_COMMON_ARGS as the last argument due to
-  # positional arguments (SOURCES) that can be passed via $COVERAGE_EXTRA_ARGS.
-  LLVM_COV_ARGS="-instr-profile=$PROFILE_FILE $objects $LLVM_COV_COMMON_ARGS"
+# Generate HTML report.
+llvm-cov show -format=html -output-dir=$REPORT_ROOT_DIR \
+    -Xdemangler c++filt -Xdemangler -n $LLVM_COV_ARGS
 
-  # Generate HTML report.
-  llvm-cov show -format=html -output-dir=$REPORT_ROOT_DIR \
-      -Xdemangler rcfilt $LLVM_COV_ARGS
+# Export coverage summary in JSON format.
+llvm-cov export -summary-only $LLVM_COV_ARGS > $SUMMARY_FILE
 
-  # Export coverage summary in JSON format.
-  llvm-cov export -summary-only $LLVM_COV_ARGS > $SUMMARY_FILE
-
-  # Post process HTML report.
-  coverage_helper -v post_process -src-root-dir=/ -summary-file=$SUMMARY_FILE \
-      -output-dir=$REPORT_ROOT_DIR $PATH_EQUIVALENCE_ARGS
-
-fi
+# Post process HTML report.
+coverage_helper -v post_process -src-root-dir=/ -summary-file=$SUMMARY_FILE \
+    -output-dir=$REPORT_ROOT_DIR $PATH_EQUIVALENCE_ARGS
 
 if [[ -n $HTTP_PORT ]]; then
   # Serve the report locally.
diff --git a/infra/base-images/base-runner/dataflow_tracer.py b/infra/base-images/base-runner/dataflow_tracer.py
index 92a48fa..7166bf4 100755
--- a/infra/base-images/base-runner/dataflow_tracer.py
+++ b/infra/base-images/base-runner/dataflow_tracer.py
@@ -24,12 +24,6 @@
 import subprocess
 import sys
 
-# pylint: skip-file
-
-# See https://github.com/google/oss-fuzz/pull/5024#discussion_r561313003 for why
-# we are disabling pylint for this file (we can't do it in .pylintrc, probably
-# because of weirdness with this file's package, so we do it here).
-
 # These can be controlled by the runner in order to change the values without
 # rebuilding OSS-Fuzz base images.
 FILE_SIZE_LIMIT = int(os.getenv('DFT_FILE_SIZE_LIMIT', 32 * 1024))
diff --git a/infra/base-images/base-runner/gocoverage/go.mod b/infra/base-images/base-runner/gocoverage/go.mod
deleted file mode 100644
index b0b5721..0000000
--- a/infra/base-images/base-runner/gocoverage/go.mod
+++ /dev/null
@@ -1,8 +0,0 @@
-module oss-fuzz.com/gocoverage
-
-go 1.14
-
-require (
-	github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5
-	golang.org/x/tools v0.1.0
-)
diff --git a/infra/base-images/base-runner/gocoverage/go.sum b/infra/base-images/base-runner/gocoverage/go.sum
deleted file mode 100644
index 3279af3..0000000
--- a/infra/base-images/base-runner/gocoverage/go.sum
+++ /dev/null
@@ -1,30 +0,0 @@
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5 h1:zIaiqGYDQwa4HVx5wGRTXbx38Pqxjemn4BP98wpzpXo=
-github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/infra/base-images/base-runner/gocoverage/gocovmerge/LICENSE b/infra/base-images/base-runner/gocoverage/gocovmerge/LICENSE
deleted file mode 100644
index 455fb10..0000000
--- a/infra/base-images/base-runner/gocoverage/gocovmerge/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2015, Wade Simmons
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/infra/base-images/base-runner/gocoverage/gocovmerge/gocovmerge.go b/infra/base-images/base-runner/gocoverage/gocovmerge/gocovmerge.go
deleted file mode 100644
index e809983..0000000
--- a/infra/base-images/base-runner/gocoverage/gocovmerge/gocovmerge.go
+++ /dev/null
@@ -1,111 +0,0 @@
-// gocovmerge takes the results from multiple `go test -coverprofile` runs and
-// merges them into one profile
-package main
-
-import (
-	"flag"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"sort"
-
-	"golang.org/x/tools/cover"
-)
-
-func mergeProfiles(p *cover.Profile, merge *cover.Profile) {
-	if p.Mode != merge.Mode {
-		log.Fatalf("cannot merge profiles with different modes")
-	}
-	// Since the blocks are sorted, we can keep track of where the last block
-	// was inserted and only look at the blocks after that as targets for merge
-	startIndex := 0
-	for _, b := range merge.Blocks {
-		startIndex = mergeProfileBlock(p, b, startIndex)
-	}
-}
-
-func mergeProfileBlock(p *cover.Profile, pb cover.ProfileBlock, startIndex int) int {
-	sortFunc := func(i int) bool {
-		pi := p.Blocks[i+startIndex]
-		return pi.StartLine >= pb.StartLine && (pi.StartLine != pb.StartLine || pi.StartCol >= pb.StartCol)
-	}
-
-	i := 0
-	if sortFunc(i) != true {
-		i = sort.Search(len(p.Blocks)-startIndex, sortFunc)
-	}
-	i += startIndex
-	if i < len(p.Blocks) && p.Blocks[i].StartLine == pb.StartLine && p.Blocks[i].StartCol == pb.StartCol {
-		if p.Blocks[i].EndLine != pb.EndLine || p.Blocks[i].EndCol != pb.EndCol {
-			log.Fatalf("OVERLAP MERGE: %v %v %v", p.FileName, p.Blocks[i], pb)
-		}
-		switch p.Mode {
-		case "set":
-			p.Blocks[i].Count |= pb.Count
-		case "count", "atomic":
-			p.Blocks[i].Count += pb.Count
-		default:
-			log.Fatalf("unsupported covermode: '%s'", p.Mode)
-		}
-	} else {
-		if i > 0 {
-			pa := p.Blocks[i-1]
-			if pa.EndLine >= pb.EndLine && (pa.EndLine != pb.EndLine || pa.EndCol > pb.EndCol) {
-				log.Fatalf("OVERLAP BEFORE: %v %v %v", p.FileName, pa, pb)
-			}
-		}
-		if i < len(p.Blocks)-1 {
-			pa := p.Blocks[i+1]
-			if pa.StartLine <= pb.StartLine && (pa.StartLine != pb.StartLine || pa.StartCol < pb.StartCol) {
-				log.Fatalf("OVERLAP AFTER: %v %v %v", p.FileName, pa, pb)
-			}
-		}
-		p.Blocks = append(p.Blocks, cover.ProfileBlock{})
-		copy(p.Blocks[i+1:], p.Blocks[i:])
-		p.Blocks[i] = pb
-	}
-	return i + 1
-}
-
-func addProfile(profiles []*cover.Profile, p *cover.Profile) []*cover.Profile {
-	i := sort.Search(len(profiles), func(i int) bool { return profiles[i].FileName >= p.FileName })
-	if i < len(profiles) && profiles[i].FileName == p.FileName {
-		mergeProfiles(profiles[i], p)
-	} else {
-		profiles = append(profiles, nil)
-		copy(profiles[i+1:], profiles[i:])
-		profiles[i] = p
-	}
-	return profiles
-}
-
-func dumpProfiles(profiles []*cover.Profile, out io.Writer) {
-	if len(profiles) == 0 {
-		return
-	}
-	fmt.Fprintf(out, "mode: %s\n", profiles[0].Mode)
-	for _, p := range profiles {
-		for _, b := range p.Blocks {
-			fmt.Fprintf(out, "%s:%d.%d,%d.%d %d %d\n", p.FileName, b.StartLine, b.StartCol, b.EndLine, b.EndCol, b.NumStmt, b.Count)
-		}
-	}
-}
-
-func main() {
-	flag.Parse()
-
-	var merged []*cover.Profile
-
-	for _, file := range flag.Args() {
-		profiles, err := cover.ParseProfiles(file)
-		if err != nil {
-			log.Fatalf("failed to parse profiles: %v", err)
-		}
-		for _, p := range profiles {
-			merged = addProfile(merged, p)
-		}
-	}
-
-	dumpProfiles(merged, os.Stdout)
-}
diff --git a/infra/base-images/base-runner/gocoverage/gocovsum/gocovsum.go b/infra/base-images/base-runner/gocoverage/gocovsum/gocovsum.go
deleted file mode 100644
index 973b7ae..0000000
--- a/infra/base-images/base-runner/gocoverage/gocovsum/gocovsum.go
+++ /dev/null
@@ -1,147 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"flag"
-	"fmt"
-	"log"
-
-	"go/ast"
-	"go/parser"
-	"go/token"
-
-	"golang.org/x/tools/cover"
-)
-
-type CoverageTotal struct {
-	Count     int     `json:"count"`
-	Covered   int     `json:"covered"`
-	Uncovered int     `json:"notcovered"`
-	Percent   float64 `json:"percent"`
-}
-
-type CoverageTotals struct {
-	Functions      CoverageTotal `json:"functions,omitempty"`
-	Lines          CoverageTotal `json:"lines,omitempty"`
-	Regions        CoverageTotal `json:"regions,omitempty"`
-	Instantiations CoverageTotal `json:"instantiations,omitempty"`
-	Branches       CoverageTotal `json:"branches,omitempty"`
-}
-
-type CoverageFile struct {
-	Summary  CoverageTotals `json:"summary,omitempty"`
-	Filename string         `json:"filename,omitempty"`
-}
-
-type CoverageData struct {
-	Totals CoverageTotals `json:"totals,omitempty"`
-	Files  []CoverageFile `json:"files,omitempty"`
-}
-
-type PositionInterval struct {
-	start token.Position
-	end   token.Position
-}
-
-type CoverageSummary struct {
-	Data    []CoverageData `json:"data,omitempty"`
-	Type    string         `json:"type,omitempty"`
-	Version string         `json:"version,omitempty"`
-}
-
-func isFunctionCovered(s token.Position, e token.Position, blocks []cover.ProfileBlock) bool {
-	for _, b := range blocks {
-		if b.StartLine >= s.Line && b.StartLine <= e.Line && b.EndLine >= s.Line && b.EndLine <= e.Line {
-			if b.Count > 0 {
-				return true
-			}
-		}
-	}
-	return false
-}
-
-func computePercent(s *CoverageTotals) {
-	s.Regions.Percent = float64(100*s.Regions.Covered) / float64(s.Regions.Count)
-	s.Lines.Percent = float64(100*s.Lines.Covered) / float64(s.Lines.Count)
-	s.Functions.Percent = float64(100*s.Functions.Covered) / float64(s.Functions.Count)
-}
-
-func main() {
-	flag.Parse()
-
-	if len(flag.Args()) != 1 {
-		log.Fatalf("needs exactly one argument")
-	}
-	profiles, err := cover.ParseProfiles(flag.Args()[0])
-	if err != nil {
-		log.Fatalf("failed to parse profiles: %v", err)
-	}
-	r := CoverageSummary{}
-	r.Type = "oss-fuzz.go.coverage.json.export"
-	r.Version = "2.0.1"
-	r.Data = make([]CoverageData, 1)
-	for _, p := range profiles {
-		fset := token.NewFileSet() // positions are relative to fset
-		f, err := parser.ParseFile(fset, p.FileName, nil, 0)
-		if err != nil {
-			panic(err)
-		}
-		fileCov := CoverageFile{}
-		fileCov.Filename = p.FileName
-		ast.Inspect(f, func(n ast.Node) bool {
-			switch x := n.(type) {
-			case *ast.FuncLit:
-				startf := fset.Position(x.Pos())
-				endf := fset.Position(x.End())
-				fileCov.Summary.Functions.Count++
-				if isFunctionCovered(startf, endf, p.Blocks) {
-					fileCov.Summary.Functions.Covered++
-				} else {
-					fileCov.Summary.Functions.Uncovered++
-				}
-			case *ast.FuncDecl:
-				startf := fset.Position(x.Pos())
-				endf := fset.Position(x.End())
-				fileCov.Summary.Functions.Count++
-				if isFunctionCovered(startf, endf, p.Blocks) {
-					fileCov.Summary.Functions.Covered++
-				} else {
-					fileCov.Summary.Functions.Uncovered++
-				}
-			}
-			return true
-		})
-
-		for _, b := range p.Blocks {
-			fileCov.Summary.Regions.Count++
-			if b.Count > 0 {
-				fileCov.Summary.Regions.Covered++
-			} else {
-				fileCov.Summary.Regions.Uncovered++
-			}
-
-			fileCov.Summary.Lines.Count += b.NumStmt
-			if b.Count > 0 {
-				fileCov.Summary.Lines.Covered += b.NumStmt
-			} else {
-				fileCov.Summary.Lines.Uncovered += b.NumStmt
-			}
-		}
-		r.Data[0].Totals.Regions.Count += fileCov.Summary.Regions.Count
-		r.Data[0].Totals.Regions.Covered += fileCov.Summary.Regions.Covered
-		r.Data[0].Totals.Regions.Uncovered += fileCov.Summary.Regions.Uncovered
-		r.Data[0].Totals.Lines.Count += fileCov.Summary.Lines.Count
-		r.Data[0].Totals.Lines.Covered += fileCov.Summary.Lines.Covered
-		r.Data[0].Totals.Lines.Uncovered += fileCov.Summary.Lines.Uncovered
-		r.Data[0].Totals.Functions.Count += fileCov.Summary.Functions.Count
-		r.Data[0].Totals.Functions.Covered += fileCov.Summary.Functions.Covered
-		r.Data[0].Totals.Functions.Uncovered += fileCov.Summary.Functions.Uncovered
-
-		computePercent(&fileCov.Summary)
-		r.Data[0].Files = append(r.Data[0].Files, fileCov)
-	}
-
-	computePercent(&r.Data[0].Totals)
-	o, _ := json.Marshal(r)
-	fmt.Printf(string(o))
-}
diff --git a/infra/base-images/base-runner/gocoverage/pprof-merge/LICENSE b/infra/base-images/base-runner/gocoverage/pprof-merge/LICENSE
deleted file mode 100644
index 8dada3e..0000000
--- a/infra/base-images/base-runner/gocoverage/pprof-merge/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/infra/base-images/base-runner/gocoverage/pprof-merge/main.go b/infra/base-images/base-runner/gocoverage/pprof-merge/main.go
deleted file mode 100644
index f351564..0000000
--- a/infra/base-images/base-runner/gocoverage/pprof-merge/main.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2019 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
-	"flag"
-	"log"
-	"os"
-
-	"github.com/google/pprof/profile"
-)
-
-var (
-	output string
-)
-
-func main() {
-	flag.StringVar(&output, "o", "merged.data", "")
-	flag.Parse()
-
-	files := os.Args[1:]
-	if len(files) == 0 {
-		log.Fatal("Give profiles files as arguments")
-	}
-
-	var profiles []*profile.Profile
-	for _, fname := range files {
-		f, err := os.Open(fname)
-		if err != nil {
-			log.Fatalf("Cannot open profile file at %q: %v", fname, err)
-		}
-		p, err := profile.Parse(f)
-		if err != nil {
-			log.Fatalf("Cannot parse profile at %q: %v", fname, err)
-		}
-		profiles = append(profiles, p)
-	}
-
-	merged, err := profile.Merge(profiles)
-	if err != nil {
-		log.Fatalf("Cannot merge profiles: %v", err)
-	}
-
-	out, err := os.OpenFile(output, os.O_RDWR|os.O_CREATE, 0755)
-	if err != nil {
-		log.Fatalf("Cannot open output to write: %v", err)
-	}
-
-	if err := merged.Write(out); err != nil {
-		log.Fatalf("Cannot write merged profile to file: %v", err)
-	}
-
-	if err := out.Close(); err != nil {
-		log.Printf("Error when closing the output file: %v", err)
-	}
-}
diff --git a/infra/base-images/base-runner/minijail0 b/infra/base-images/base-runner/minijail0
new file mode 100755
index 0000000..369e0bb
--- /dev/null
+++ b/infra/base-images/base-runner/minijail0
Binary files differ
diff --git a/infra/base-images/base-runner/parse_options.py b/infra/base-images/base-runner/parse_options.py
deleted file mode 100755
index 6612a30..0000000
--- a/infra/base-images/base-runner/parse_options.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Helper script for parsing custom fuzzing options."""
-import configparser
-import sys
-
-
-def parse_options(options_file_path, options_section):
-  """Parses the given file and returns options from the given section."""
-  parser = configparser.ConfigParser()
-  parser.read(options_file_path)
-
-  if not parser.has_section(options_section):
-    return None
-
-  options = parser[options_section]
-
-  if options_section == 'libfuzzer':
-    options_string = ' '.join(
-        '-%s=%s' % (key, value) for key, value in options.items())
-  else:
-    # Sanitizer options.
-    options_string = ':'.join(
-        '%s=%s' % (key, value) for key, value in options.items())
-
-  return options_string
-
-
-def main():
-  """Processes the arguments and prints the options in the correct format."""
-  if len(sys.argv) < 3:
-    sys.stderr.write('Usage: %s <path_to_options_file> <options_section>\n' %
-                     sys.argv[0])
-    return 1
-
-  options = parse_options(sys.argv[1], sys.argv[2])
-  if options is not None:
-    print(options)
-
-  return 0
-
-
-if __name__ == "__main__":
-  sys.exit(main())
diff --git a/infra/base-images/base-runner/rcfilt b/infra/base-images/base-runner/rcfilt
deleted file mode 100755
index 1c62110..0000000
--- a/infra/base-images/base-runner/rcfilt
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -u
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Symbol demangling for both C++ and Rust
-#
-################################################################################
-
-# simply pipe
-rustfilt | c++filt -n
diff --git a/infra/base-images/base-runner/reproduce b/infra/base-images/base-runner/reproduce
index 2c074d0..944376f 100755
--- a/infra/base-images/base-runner/reproduce
+++ b/infra/base-images/base-runner/reproduce
@@ -15,20 +15,17 @@
 #
 ################################################################################
 
+DEBUGGER=${DEBUGGER:-}
 FUZZER=$1
 shift
-
-if [ ! -v TESTCASE ]; then
-    TESTCASE="/testcase"
-fi
+TESTCASE="/testcase"
 
 if [ ! -f $TESTCASE ]; then
   echo "Error: $TESTCASE not found, use: docker run -v <path>:$TESTCASE ..."
   exit 1
 fi
 
-export RUN_FUZZER_MODE="interactive"
-export FUZZING_ENGINE="libfuzzer"
-export SKIP_SEED_CORPUS="1"
+export PATH=$OUT:$PATH
+cd $OUT
+$DEBUGGER $OUT/$FUZZER $FUZZER_ARGS $@ $TESTCASE
 
-run_fuzzer $FUZZER $@ $TESTCASE
diff --git a/infra/base-images/base-runner/run_fuzzer b/infra/base-images/base-runner/run_fuzzer
index b9bc8d9..37785db 100755
--- a/infra/base-images/base-runner/run_fuzzer
+++ b/infra/base-images/base-runner/run_fuzzer
@@ -21,19 +21,10 @@
 export PATH=$OUT:$PATH
 cd $OUT
 
-DEBUGGER=${DEBUGGER:-}
-
 FUZZER=$1
 shift
 
-CORPUS_DIR=${CORPUS_DIR:-"/tmp/${FUZZER}_corpus"}
-
-SANITIZER=${SANITIZER:-}
-if [ -z $SANITIZER ]; then
-  # If $SANITIZER is not specified (e.g. calling from `reproduce` command), it
-  # is not important and can be set to any value.
-  SANITIZER="default"
-fi
+CORPUS_DIR="/tmp/${FUZZER}_corpus"
 
 if [[ "$RUN_FUZZER_MODE" = interactive ]]; then
   FUZZER_OUT="$OUT/${FUZZER}_${FUZZING_ENGINE}_${SANITIZER}_out"
@@ -63,68 +54,26 @@
   fi
 }
 
-rm -rf $CORPUS_DIR && mkdir -p $CORPUS_DIR
-rm -rf $FUZZER_OUT && mkdir -p $FUZZER_OUT
+rm -rf $CORPUS_DIR && mkdir $CORPUS_DIR
+rm -rf $FUZZER_OUT && mkdir $FUZZER_OUT
 
 SEED_CORPUS="${FUZZER}_seed_corpus.zip"
-
 if [ -f $SEED_CORPUS ] && [ -z ${SKIP_SEED_CORPUS:-} ]; then
   echo "Using seed corpus: $SEED_CORPUS"
   unzip -d ${CORPUS_DIR}/ $SEED_CORPUS > /dev/null
 fi
 
-OPTIONS_FILE="${FUZZER}.options"
-CUSTOM_LIBFUZZER_OPTIONS=""
-
-if [ -f $OPTIONS_FILE ]; then
-  custom_asan_options=$(parse_options.py $OPTIONS_FILE asan)
-  if [ ! -z $custom_asan_options ]; then
-    export ASAN_OPTIONS="$ASAN_OPTIONS:$custom_asan_options"
-  fi
-
-  custom_msan_options=$(parse_options.py $OPTIONS_FILE msan)
-  if [ ! -z $custom_msan_options ]; then
-    export MSAN_OPTIONS="$MSAN_OPTIONS:$custom_msan_options"
-  fi
-
-  custom_ubsan_options=$(parse_options.py $OPTIONS_FILE ubsan)
-  if [ ! -z $custom_ubsan_options ]; then
-    export UBSAN_OPTIONS="$UBSAN_OPTIONS:$custom_ubsan_options"
-  fi
-
-  CUSTOM_LIBFUZZER_OPTIONS=$(parse_options.py $OPTIONS_FILE libfuzzer)
-fi
-
 if [[ "$FUZZING_ENGINE" = afl ]]; then
-
-  # Set afl++ environment options.
-  export ASAN_OPTIONS="$ASAN_OPTIONS:abort_on_error=1:symbolize=0:detect_odr_violation=0:"
+  # https://chromium.googlesource.com/chromium/src/+/master/third_party/afl/src/docs/env_variables.txt
+  export ASAN_OPTIONS="$ASAN_OPTIONS:abort_on_error=1:symbolize=0"
   export MSAN_OPTIONS="$MSAN_OPTIONS:exit_code=86:symbolize=0"
   export UBSAN_OPTIONS="$UBSAN_OPTIONS:symbolize=0"
   export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
   export AFL_SKIP_CPUFREQ=1
-  export AFL_NO_AFFINITY=1
-  export AFL_FAST_CAL=1
-  # If $OUT/afl_cmplog.txt is present this means the target was compiled for
-  # CMPLOG. So we have to add the proper parameters to afl-fuzz. `-l 2` is
-  # CMPLOG level 2, which will colorize larger files but not huge files and
-  # not enable transform analysis unless there have been several cycles without
-  # any finds.
-  test -e "$OUT/afl_cmplog.txt" && AFL_FUZZER_ARGS="$AFL_FUZZER_ARGS -l 2 -c $OUT/$FUZZER"
-  # If $OUT/afl++.dict we load it as a dictionary for afl-fuzz.
-  test -e "$OUT/afl++.dict" && AFL_FUZZER_ARGS="$AFL_FUZZER_ARGS -x $OUT/afl++.dict"
-  # Ensure timeout is a bit large than 1sec as some of the OSS-Fuzz fuzzers
-  # are slower than this. 
-  AFL_FUZZER_ARGS="$AFL_FUZZER_ARGS -t 5000+"
   # AFL expects at least 1 file in the input dir.
   echo input > ${CORPUS_DIR}/input
-  echo afl++ setup:
-  env|grep AFL_
-  cat "$OUT/afl_options.txt"
-  CMD_LINE="$OUT/afl-fuzz $AFL_FUZZER_ARGS -i $CORPUS_DIR -o $FUZZER_OUT $(get_dictionary) $* -- $OUT/$FUZZER"
-
+  CMD_LINE="$OUT/afl-fuzz $AFL_FUZZER_ARGS -i $CORPUS_DIR -o $FUZZER_OUT $(get_dictionary) $* $OUT/$FUZZER"
 elif [[ "$FUZZING_ENGINE" = honggfuzz ]]; then
-
   # Honggfuzz expects at least 1 file in the input dir.
   echo input > $CORPUS_DIR/input
   # --exit_upon_crash: exit whith a first crash seen
@@ -136,17 +85,13 @@
   # -f: location of the initial (and destination) file corpus
   # -n: number of fuzzing threads (and processes)
   CMD_LINE="$OUT/honggfuzz -n 1 --exit_upon_crash -R /tmp/${FUZZER}_honggfuzz.report -W $FUZZER_OUT -v -z -P -f \"$CORPUS_DIR\" $(get_dictionary) $* -- \"$OUT/$FUZZER\""
-
 else
+  CMD_LINE="$OUT/$FUZZER $FUZZER_ARGS $* $CORPUS_DIR"
 
-  CMD_LINE="$OUT/$FUZZER $FUZZER_ARGS $*"
-
-  if [ -z ${SKIP_SEED_CORPUS:-} ]; then
-    CMD_LINE="$CMD_LINE $CORPUS_DIR"
-  fi
-
-  if [ ! -z $CUSTOM_LIBFUZZER_OPTIONS ]; then
-    CMD_LINE="$CMD_LINE $CUSTOM_LIBFUZZER_OPTIONS"
+  OPTIONS_FILE="${FUZZER}.options"
+  if [ -f $OPTIONS_FILE ]; then
+    OPTIONS_ARGS=$(grep "=" $OPTIONS_FILE | sed 's/\(\w*\)\W*=\W*\(.*\)/-\1=\2 /g' | tr '\n' ' ')
+    CMD_LINE="$CMD_LINE $OPTIONS_ARGS"
   fi
 
   if [[ ! "$CMD_LINE" =~ "-dict=" ]]; then
@@ -156,7 +101,6 @@
   fi
 
   CMD_LINE="$CMD_LINE < /dev/null"
-
 fi
 
 echo $CMD_LINE
@@ -164,9 +108,5 @@
 # Unset OUT so the fuzz target can't rely on it.
 unset OUT
 
-if [ ! -z "$DEBUGGER" ]; then
-  CMD_LINE="$DEBUGGER $CMD_LINE"
-fi
-
 bash -c "$CMD_LINE"
 
diff --git a/infra/base-images/base-runner/run_minijail b/infra/base-images/base-runner/run_minijail
new file mode 100755
index 0000000..bf950b1
--- /dev/null
+++ b/infra/base-images/base-runner/run_minijail
@@ -0,0 +1,59 @@
+#!/bin/bash -eu
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+rm -rf /tmp/chroot
+mkdir /tmp/chroot
+
+mkdir /tmp/chroot/lib
+mkdir /tmp/chroot/lib64
+mkdir /tmp/chroot/lib32
+
+mkdir /tmp/chroot/usr
+mkdir /tmp/chroot/usr/lib
+mkdir /tmp/chroot/usr/lib32
+
+mkdir /tmp/chroot/dev
+mknod -m 666 /tmp/chroot/dev/null c 1 3
+mknod -m 666 /tmp/chroot/dev/urandom c 1 9
+
+mkdir /tmp/chroot/proc
+mkdir /tmp/chroot/tmp
+
+mkdir /tmp/chroot/bin
+cp /bin/sh /tmp/chroot/bin/sh
+cp $(which llvm-symbolizer) /tmp/chroot/bin/llvm-symbolizer
+
+FULL_EXE_PATH=$(readlink -f $1)
+EXE_DIR=$(dirname $FULL_EXE_PATH)
+mkdir -p /tmp/chroot/$EXE_DIR
+
+shift
+
+echo 'Running:'
+echo minijail0 -U -m \"0 $UID 1\" -T static \
+  -c 0 -n -v -p -l -I \
+  -k proc,/proc,proc,1 -P /tmp/chroot \
+  -b /lib,/lib,0 -b /lib64,/lib64,0 -b /lib32,/lib32,0 -b /usr/lib,/usr/lib,0 \
+  -b /usr/lib32,/usr/lib32,0 -b /tmp,/tmp,1 \
+  -b $EXE_DIR,$EXE_DIR,0 $FULL_EXE_PATH $@
+
+minijail0 -U -m "0 $UID 1" -T static \
+  -c 0 -n -v -p -l -I \
+  -k proc,/proc,proc,1 -P /tmp/chroot \
+  -b /lib,/lib,0 -b /lib64,/lib64,0 -b /lib32,/lib32,0 -b /usr/lib,/usr/lib,0 \
+  -b /usr/lib32,/usr/lib32,0 -b /tmp,/tmp,1 \
+  -b $EXE_DIR,$EXE_DIR,0 $FULL_EXE_PATH $@
diff --git a/infra/base-images/base-runner/test_all b/infra/base-images/base-runner/test_all
new file mode 100755
index 0000000..1cc45ca
--- /dev/null
+++ b/infra/base-images/base-runner/test_all
@@ -0,0 +1,148 @@
+#!/bin/bash -u
+# Copyright 2016 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+# Percentage threshold that needs to be reached for marking a build as failed.
+ALLOWED_BROKEN_TARGETS_PERCENTAGE=${ALLOWED_BROKEN_TARGETS_PERCENTAGE:-10}
+
+# Test all fuzz targets in the $OUT/ dir.
+TOTAL_TARGETS_COUNT=0
+
+# Number of CPUs available, this is needed for running tests in parallel.
+NPROC=$(nproc)
+
+# Directories where bad build check results will be written to.
+VALID_TARGETS_DIR="/tmp/valid_fuzz_targets"
+BROKEN_TARGETS_DIR="/tmp/broken_fuzz_targets"
+rm -rf $VALID_TARGETS_DIR
+rm -rf $BROKEN_TARGETS_DIR
+mkdir $VALID_TARGETS_DIR
+mkdir $BROKEN_TARGETS_DIR
+
+# Move the directory the fuzzer is located in to somewhere that doesn't exist
+# on the builder to make it more likely that hardcoding /out fails here (since
+# it will fail on ClusterFuzz).
+TMP_FUZZER_DIR=/tmp/not-out
+rm -rf $TMP_FUZZER_DIR
+mkdir $TMP_FUZZER_DIR
+# Move contents of $OUT/ into $TMP_FUZZER_DIR. We can't move the directory
+# itself because it is a mount.
+mv $OUT/* $TMP_FUZZER_DIR
+INITIAL_OUT=$OUT
+export OUT=$TMP_FUZZER_DIR
+
+
+# Main loop that iterates through all fuzz targets and runs the check.
+for FUZZER_BINARY in $(find $TMP_FUZZER_DIR -maxdepth 1 -executable -type f); do
+  if file "$FUZZER_BINARY" | grep -v ELF > /dev/null 2>&1; then
+    continue
+  fi
+
+  # Continue if not a fuzz target.
+  if [[ $FUZZING_ENGINE != "none" ]]; then
+    grep "LLVMFuzzerTestOneInput" $FUZZER_BINARY > /dev/null 2>&1 || continue
+  fi
+
+  FUZZER=$(basename $FUZZER_BINARY)
+  if [[ "$FUZZER" == afl-* ]]; then
+    continue
+  fi
+  if [[ "$FUZZER" == honggfuzz ]]; then
+    continue
+  fi
+
+  echo "INFO: performing bad build checks for $FUZZER_BINARY."
+
+  LOG_PATH_FOR_BROKEN_TARGET="${BROKEN_TARGETS_DIR}/${FUZZER}"
+
+  # Launch bad build check process in the background. Ignore the exit codes, as
+  # we check the percentage of broken fuzz targets after running all the checks.
+  bad_build_check $FUZZER_BINARY &> $LOG_PATH_FOR_BROKEN_TARGET &
+
+  # Count total number of fuzz targets being tested.
+  TOTAL_TARGETS_COUNT=$[$TOTAL_TARGETS_COUNT+1]
+
+  # Do not spawn more processes than the number of CPUs available.
+  n_child_proc=$(jobs -rp | wc -l)
+  while [ "$n_child_proc" -eq "$NPROC" ]; do
+    sleep 4
+    n_child_proc=$(jobs -rp | wc -l)
+  done
+done
+
+# Wait for background processes to finish.
+wait
+
+# Restore OUT
+export OUT=$INITIAL_OUT
+mv $TMP_FUZZER_DIR/* $OUT
+
+# Sanity check in case there are no fuzz targets in the $OUT/ dir.
+if [ "$TOTAL_TARGETS_COUNT" -eq "0" ]; then
+  echo "ERROR: no fuzzers found in $OUT/"
+  ls -al $OUT
+  exit 1
+fi
+
+# An empty log file indicated that corresponding fuzz target is not broken.
+find $BROKEN_TARGETS_DIR -empty -exec mv {} $VALID_TARGETS_DIR \;
+
+# Calculate number of valid and broken fuzz targets.
+VALID_TARGETS_COUNT=$(ls $VALID_TARGETS_DIR | wc -l)
+BROKEN_TARGETS_COUNT=$(ls $BROKEN_TARGETS_DIR | wc -l)
+
+# Sanity check to make sure that bad build check doesn't skip any fuzz target.
+if [ "$TOTAL_TARGETS_COUNT" -ne "$[$VALID_TARGETS_COUNT+$BROKEN_TARGETS_COUNT]" ]; then
+  echo "ERROR: bad_build_check seems to have a bug, total number of fuzz" \
+       "does not match number of fuzz targets tested."
+  echo "Total fuzz targets ($TOTAL_TARGETS_COUNT):"
+  ls -al $OUT
+  echo "Valid fuzz targets ($VALID_TARGETS_COUNT):"
+  ls -al $VALID_TARGETS_DIR
+  echo "Total fuzz targets ($BROKEN_TARGETS_COUNT):"
+  ls -al $BROKEN_TARGETS_DIR
+  exit 1
+fi
+
+# Build info about all broken fuzz targets (if any).
+if [ "$BROKEN_TARGETS_COUNT" -gt "0" ]; then
+  echo "Broken fuzz targets ($BROKEN_TARGETS_COUNT):"
+  for target in $(ls $BROKEN_TARGETS_DIR); do
+    echo "${target}:"
+    cat ${BROKEN_TARGETS_DIR}/${target}
+  done
+fi
+
+# Calculate the percentage of broken fuzz targets and make the finel decision.
+BROKEN_TARGETS_PERCENTAGE=$[$BROKEN_TARGETS_COUNT*100/$TOTAL_TARGETS_COUNT]
+
+
+if [ "$BROKEN_TARGETS_PERCENTAGE" -gt "$ALLOWED_BROKEN_TARGETS_PERCENTAGE" ]; then
+  echo "ERROR: $BROKEN_TARGETS_PERCENTAGE% of fuzz targets seem to be broken." \
+       "See the list above for a detailed information."
+
+  # TODO: figure out how to not fail the "special" cases handled below. Those
+  # are from "example" and "c-ares" projects and are too small targets to pass.
+  if [ "$(ls $OUT/do_stuff_fuzzer $OUT/ares_*_fuzzer $OUT/checksum_fuzzer $OUT/xmltest $OUT/fuzz_compression_sas_rle 2>/dev/null | wc -l)" -gt "0" ]; then
+    exit 0
+  fi
+
+  exit 1
+else
+  echo "$TOTAL_TARGETS_COUNT fuzzers total, $BROKEN_TARGETS_COUNT seem to be" \
+       "broken ($BROKEN_TARGETS_PERCENTAGE%)."
+  exit 0
+fi
diff --git a/infra/base-images/base-runner/test_all.py b/infra/base-images/base-runner/test_all.py
deleted file mode 100755
index 925ebde..0000000
--- a/infra/base-images/base-runner/test_all.py
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Does bad_build_check on all fuzz targets in $OUT."""
-
-import contextlib
-import multiprocessing
-import os
-import re
-import shutil
-import subprocess
-import stat
-import sys
-
-TMP_FUZZER_DIR = '/tmp/not-out'
-
-EXECUTABLE = stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH
-
-IGNORED_TARGETS = [
-    r'do_stuff_fuzzer', r'checksum_fuzzer', r'fuzz_dump', r'fuzz_keyring',
-    r'xmltest', r'fuzz_compression_sas_rle', r'ares_*_fuzzer'
-]
-
-IGNORED_TARGETS_RE = re.compile('^' + r'$|^'.join(IGNORED_TARGETS) + '$')
-
-
-def recreate_directory(directory):
-  """Creates |directory|. If it already exists than deletes it first before
-  creating."""
-  if os.path.exists(directory):
-    shutil.rmtree(directory)
-  os.mkdir(directory)
-
-
-def move_directory_contents(src_directory, dst_directory):
-  """Moves contents of |src_directory| to |dst_directory|."""
-  # Use mv because mv preserves file permissions. If we don't preserve file
-  # permissions that can mess up CheckFuzzerBuildTest in cifuzz_test.py and
-  # other cases where one is calling test_all on files not in OSS-Fuzz's real
-  # out directory.
-  src_contents = [
-      os.path.join(src_directory, filename)
-      for filename in os.listdir(src_directory)
-  ]
-  command = ['mv'] + src_contents + [dst_directory]
-  subprocess.check_call(command)
-
-
-def is_elf(filepath):
-  """Returns True if |filepath| is an ELF file."""
-  result = subprocess.run(['file', filepath],
-                          stdout=subprocess.PIPE,
-                          check=False)
-  return b'ELF' in result.stdout
-
-
-def find_fuzz_targets(directory, fuzzing_language):
-  """Returns paths to fuzz targets in |directory|."""
-  # TODO(https://github.com/google/oss-fuzz/issues/4585): Use libClusterFuzz for
-  # this.
-  fuzz_targets = []
-  for filename in os.listdir(directory):
-    path = os.path.join(directory, filename)
-    if filename == 'llvm-symbolizer':
-      continue
-    if filename.startswith('afl-'):
-      continue
-    if filename.startswith('jazzer_'):
-      continue
-    if not os.path.isfile(path):
-      continue
-    if not os.stat(path).st_mode & EXECUTABLE:
-      continue
-    # Fuzz targets are expected to be ELF binaries for languages other than
-    # Python and Java.
-    if (fuzzing_language != 'python' and fuzzing_language != 'jvm' and
-        not is_elf(path)):
-      continue
-    if os.getenv('FUZZING_ENGINE') != 'none':
-      with open(path, 'rb') as file_handle:
-        binary_contents = file_handle.read()
-        if b'LLVMFuzzerTestOneInput' not in binary_contents:
-          continue
-    fuzz_targets.append(path)
-  return fuzz_targets
-
-
-def do_bad_build_check(fuzz_target):
-  """Runs bad_build_check on |fuzz_target|. Returns a
-  Subprocess.ProcessResult."""
-  print('INFO: performing bad build checks for', fuzz_target)
-  command = ['bad_build_check', fuzz_target]
-  return subprocess.run(command,
-                        stderr=subprocess.PIPE,
-                        stdout=subprocess.PIPE,
-                        check=False)
-
-
-def get_broken_fuzz_targets(bad_build_results, fuzz_targets):
-  """Returns a list of broken fuzz targets and their process results in
-  |fuzz_targets| where each item in |bad_build_results| is the result of
-  bad_build_check on the corresponding element in |fuzz_targets|."""
-  broken = []
-  for result, fuzz_target in zip(bad_build_results, fuzz_targets):
-    if result.returncode != 0:
-      broken.append((fuzz_target, result))
-  return broken
-
-
-def has_ignored_targets(out_dir):
-  """Returns True if |out_dir| has any fuzz targets we are supposed to ignore
-  bad build checks of."""
-  out_files = set(os.listdir(out_dir))
-  for filename in out_files:
-    if re.match(IGNORED_TARGETS_RE, filename):
-      return True
-  return False
-
-
-@contextlib.contextmanager
-def use_different_out_dir():
-  """Context manager that moves OUT to TMP_FUZZER_DIR. This is useful for
-  catching hardcoding. Note that this sets the environment variable OUT and
-  therefore must be run before multiprocessing.Pool is created. Resets OUT at
-  the end."""
-  # Use a fake OUT directory to catch path hardcoding that breaks on
-  # ClusterFuzz.
-  out = os.getenv('OUT')
-  initial_out = out
-  recreate_directory(TMP_FUZZER_DIR)
-  out = TMP_FUZZER_DIR
-  # Set this so that run_fuzzer which is called by bad_build_check works
-  # properly.
-  os.environ['OUT'] = out
-  # We move the contents of the directory because we can't move the
-  # directory itself because it is a mount.
-  move_directory_contents(initial_out, out)
-  try:
-    yield out
-  finally:
-    move_directory_contents(out, initial_out)
-    shutil.rmtree(out)
-    os.environ['OUT'] = initial_out
-
-
-def test_all_outside_out(fuzzing_language, allowed_broken_targets_percentage):
-  """Wrapper around test_all that changes OUT and returns the result."""
-  with use_different_out_dir() as out:
-    return test_all(out, fuzzing_language, allowed_broken_targets_percentage)
-
-
-def test_all(out, fuzzing_language, allowed_broken_targets_percentage):
-  """Do bad_build_check on all fuzz targets."""
-  # TODO(metzman): Refactor so that we can convert test_one to python.
-  fuzz_targets = find_fuzz_targets(out, fuzzing_language)
-  if not fuzz_targets:
-    print('ERROR: No fuzz targets found.')
-    return False
-
-  pool = multiprocessing.Pool()
-  bad_build_results = pool.map(do_bad_build_check, fuzz_targets)
-  broken_targets = get_broken_fuzz_targets(bad_build_results, fuzz_targets)
-  broken_targets_count = len(broken_targets)
-  if not broken_targets_count:
-    return True
-
-  print('Broken fuzz targets', broken_targets_count)
-  total_targets_count = len(fuzz_targets)
-  broken_targets_percentage = 100 * broken_targets_count / total_targets_count
-  for broken_target, result in broken_targets:
-    print(broken_target)
-    # Use write because we can't print binary strings.
-    sys.stdout.buffer.write(result.stdout + result.stderr + b'\n')
-
-  if broken_targets_percentage > allowed_broken_targets_percentage:
-    print('ERROR: {broken_targets_percentage}% of fuzz targets seem to be '
-          'broken. See the list above for a detailed information.'.format(
-              broken_targets_percentage=broken_targets_percentage))
-    if has_ignored_targets(out):
-      print('Build check automatically passing because of ignored targets.')
-      return True
-    return False
-  print('{total_targets_count} fuzzers total, {broken_targets_count} '
-        'seem to be broken ({broken_targets_percentage}%).'.format(
-            total_targets_count=total_targets_count,
-            broken_targets_count=broken_targets_count,
-            broken_targets_percentage=broken_targets_percentage))
-  return True
-
-
-def get_allowed_broken_targets_percentage():
-  """Returns the value of the environment value
-  'ALLOWED_BROKEN_TARGETS_PERCENTAGE' as an int or returns a reasonable
-  default."""
-  return int(os.getenv('ALLOWED_BROKEN_TARGETS_PERCENTAGE') or '10')
-
-
-def main():
-  """Does bad_build_check on all fuzz targets in parallel. Returns 0 on success.
-  Returns 1 on failure."""
-  # Set these environment variables here so that stdout
-  fuzzing_language = os.getenv('FUZZING_LANGUAGE')
-  allowed_broken_targets_percentage = get_allowed_broken_targets_percentage()
-  if not test_all_outside_out(fuzzing_language,
-                              allowed_broken_targets_percentage):
-    return 1
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/infra/base-images/base-runner/test_all_test.py b/infra/base-images/base-runner/test_all_test.py
deleted file mode 100644
index 3771ec2..0000000
--- a/infra/base-images/base-runner/test_all_test.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Tests test_all.py"""
-import unittest
-from unittest import mock
-
-import test_all
-
-
-class TestTestAll(unittest.TestCase):
-  """Tests for the test_all_function."""
-
-  @mock.patch('test_all.find_fuzz_targets', return_value=[])
-  @mock.patch('builtins.print')
-  def test_test_all_no_fuzz_targets(self, mocked_print, _):
-    """Tests that test_all returns False when there are no fuzz targets."""
-    outdir = '/out'
-    fuzzing_language = 'c++'
-    allowed_broken_targets_percentage = 0
-    self.assertFalse(
-        test_all.test_all(outdir, fuzzing_language,
-                          allowed_broken_targets_percentage))
-    mocked_print.assert_called_with('ERROR: No fuzz targets found.')
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/base-images/base-runner/test_one b/infra/base-images/base-runner/test_one
new file mode 100755
index 0000000..23b7fd9
--- /dev/null
+++ b/infra/base-images/base-runner/test_one
@@ -0,0 +1,58 @@
+#!/bin/bash -u
+# Copyright 2020 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+# Wrapper around bad_build_check that moves the /out directory to /tmp/not-out.
+# This is useful when bad_build_check isn't called from test_all which does the
+# same thing.
+
+function main {
+  # Move the directory the fuzzer is located in to somewhere that doesn't exist
+  # on the builder to make it more likely that hardcoding /out fails here (since
+  # it will fail on ClusterFuzz).
+  local fuzzer=$1
+  fuzzer=$(realpath $fuzzer)
+  local initial_fuzzer_dir=$(dirname $fuzzer)
+
+  local tmp_fuzzer_dir=/tmp/not-out
+  rm -rf $tmp_fuzzer_dir
+  mkdir $tmp_fuzzer_dir
+  # Move the contents of $initial_fuzzer_dir rather than the directory itself in
+  # case it is a mount.
+  mv $initial_fuzzer_dir/* $tmp_fuzzer_dir
+  fuzzer="$tmp_fuzzer_dir/$(basename $fuzzer)"
+
+  # Change OUT to the temporary fuzzer dir.
+  local initial_out=$OUT
+  export OUT=$tmp_fuzzer_dir
+
+  bad_build_check $fuzzer
+  returncode=$?
+
+  # Restore OUT and $initial_fuzzer_dir
+  export OUT=$initial_out
+  mv $tmp_fuzzer_dir/* $initial_fuzzer_dir
+
+  return $returncode
+}
+
+if [ $# -ne 1 ]; then
+  echo "Usage: $0 <fuzz_target_binary>"
+  exit 1
+fi
+
+main $1
+exit $?
diff --git a/infra/base-images/base-runner/test_one.py b/infra/base-images/base-runner/test_one.py
deleted file mode 100755
index 9bdb75f..0000000
--- a/infra/base-images/base-runner/test_one.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Does bad_build_check on a fuzz target in $OUT."""
-import os
-import sys
-
-import test_all
-
-
-def test_one(fuzz_target):
-  """Does bad_build_check on one fuzz target. Returns True on success."""
-  with test_all.use_different_out_dir():
-    fuzz_target_path = os.path.join(os.environ['OUT'], fuzz_target)
-    return test_all.do_bad_build_check(fuzz_target_path).returncode == 0
-
-
-def main():
-  """Does bad_build_check on one fuzz target. Returns 1 on failure, 0 on
-  success."""
-  if len(sys.argv) != 2:
-    print('Usage: %d <fuzz_target>', sys.argv[0])
-    return 1
-
-  fuzz_target_binary = sys.argv[1]
-  return 0 if test_one(fuzz_target_binary) else 1
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/infra/base-images/base-sanitizer-libs-builder/Dockerfile b/infra/base-images/base-sanitizer-libs-builder/Dockerfile
deleted file mode 100644
index b1a17b9..0000000
--- a/infra/base-images/base-sanitizer-libs-builder/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-clang
-RUN sed -i -r 's/#\s*deb-src/deb-src/g' /etc/apt/sources.list
-RUN apt-get update && apt-get install -y python dpkg-dev patchelf python-apt zip
-
-COPY compiler_wrapper.py msan_build.py patch_build.py wrapper_utils.py /usr/local/bin/
-COPY packages /usr/local/bin/packages
diff --git a/infra/base-images/base-sanitizer-libs-builder/msan_build.py b/infra/base-images/base-sanitizer-libs-builder/msan_build.py
deleted file mode 100755
index 5ea00ab..0000000
--- a/infra/base-images/base-sanitizer-libs-builder/msan_build.py
+++ /dev/null
@@ -1,460 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-from __future__ import print_function
-import argparse
-import imp
-import os
-import multiprocessing
-import resource
-import shutil
-import subprocess
-import tempfile
-
-import apt
-from apt import debfile
-
-from packages import package
-import wrapper_utils
-
-SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
-PACKAGES_DIR = os.path.join(SCRIPT_DIR, 'packages')
-
-TRACK_ORIGINS_ARG = '-fsanitize-memory-track-origins='
-
-INJECTED_ARGS = [
-    '-fsanitize=memory',
-    '-fsanitize-recover=memory',
-    '-fPIC',
-    '-fno-omit-frame-pointer',
-]
-
-
-class MSanBuildException(Exception):
-  """Base exception."""
-
-
-def GetTrackOriginsFlag():
-  """Get the track origins flag."""
-  if os.getenv('MSAN_NO_TRACK_ORIGINS'):
-    return TRACK_ORIGINS_ARG + '0'
-
-  return TRACK_ORIGINS_ARG + '2'
-
-
-def GetInjectedFlags():
-  return INJECTED_ARGS + [GetTrackOriginsFlag()]
-
-
-def SetUpEnvironment(work_dir):
-  """Set up build environment."""
-  env = {}
-  env['REAL_CLANG_PATH'] = subprocess.check_output(['which', 'clang']).strip()
-  print('Real clang at', env['REAL_CLANG_PATH'])
-  compiler_wrapper_path = os.path.join(SCRIPT_DIR, 'compiler_wrapper.py')
-
-  # Symlink binaries into TMP/bin
-  bin_dir = os.path.join(work_dir, 'bin')
-  os.mkdir(bin_dir)
-
-  dpkg_host_architecture = wrapper_utils.DpkgHostArchitecture()
-  wrapper_utils.CreateSymlinks(
-      compiler_wrapper_path,
-      bin_dir,
-      [
-          'clang',
-          'clang++',
-          # Not all build rules respect $CC/$CXX, so make additional symlinks.
-          'gcc',
-          'g++',
-          'cc',
-          'c++',
-          dpkg_host_architecture + '-gcc',
-          dpkg_host_architecture + '-g++',
-      ])
-
-  env['CC'] = os.path.join(bin_dir, 'clang')
-  env['CXX'] = os.path.join(bin_dir, 'clang++')
-
-  MSAN_OPTIONS = ' '.join(GetInjectedFlags())
-
-  # We don't use nostrip because some build rules incorrectly break when it is
-  # passed. Instead we install our own no-op strip binaries.
-  env['DEB_BUILD_OPTIONS'] = ('nocheck parallel=%d' %
-                              multiprocessing.cpu_count())
-  env['DEB_CFLAGS_APPEND'] = MSAN_OPTIONS
-  env['DEB_CXXFLAGS_APPEND'] = MSAN_OPTIONS + ' -stdlib=libc++'
-  env['DEB_CPPFLAGS_APPEND'] = MSAN_OPTIONS
-  env['DEB_LDFLAGS_APPEND'] = MSAN_OPTIONS
-  env['DPKG_GENSYMBOLS_CHECK_LEVEL'] = '0'
-
-  # debian/rules can set DPKG_GENSYMBOLS_CHECK_LEVEL explicitly, so override it.
-  gen_symbols_wrapper = ('#!/bin/sh\n'
-                         'export DPKG_GENSYMBOLS_CHECK_LEVEL=0\n'
-                         '/usr/bin/dpkg-gensymbols "$@"\n')
-
-  wrapper_utils.InstallWrapper(bin_dir, 'dpkg-gensymbols', gen_symbols_wrapper)
-
-  # Install no-op strip binaries.
-  no_op_strip = ('#!/bin/sh\n' 'exit 0\n')
-  wrapper_utils.InstallWrapper(bin_dir, 'strip', no_op_strip,
-                               [dpkg_host_architecture + '-strip'])
-
-  env['PATH'] = bin_dir + ':' + os.environ['PATH']
-
-  # nocheck doesn't disable override_dh_auto_test. So we have this hack to try
-  # to disable "make check" or "make test" invocations.
-  make_wrapper = ('#!/bin/bash\n'
-                  'if [ "$1" = "test" ] || [ "$1" = "check" ]; then\n'
-                  '  exit 0\n'
-                  'fi\n'
-                  '/usr/bin/make "$@"\n')
-  wrapper_utils.InstallWrapper(bin_dir, 'make', make_wrapper)
-
-  # Prevent entire build from failing because of bugs/uninstrumented in tools
-  # that are part of the build.
-  msan_log_dir = os.path.join(work_dir, 'msan')
-  os.mkdir(msan_log_dir)
-  msan_log_path = os.path.join(msan_log_dir, 'log')
-  env['MSAN_OPTIONS'] = ('halt_on_error=0:exitcode=0:report_umrs=0:log_path=' +
-                         msan_log_path)
-
-  # Increase maximum stack size to prevent tests from failing.
-  limit = 128 * 1024 * 1024
-  resource.setrlimit(resource.RLIMIT_STACK, (limit, limit))
-  return env
-
-
-def FindPackageDebs(package_name, work_directory):
-  """Find package debs."""
-  deb_paths = []
-  cache = apt.Cache()
-
-  for filename in os.listdir(work_directory):
-    file_path = os.path.join(work_directory, filename)
-    if not file_path.endswith('.deb'):
-      continue
-
-    # Matching package name.
-    deb = debfile.DebPackage(file_path)
-    if deb.pkgname == package_name:
-      deb_paths.append(file_path)
-      continue
-
-    # Also include -dev packages that depend on the runtime package.
-    pkg = cache[deb.pkgname]
-    if pkg.section != 'libdevel' and pkg.section != 'universe/libdevel':
-      continue
-
-    # But ignore -dbg packages.
-    if deb.pkgname.endswith('-dbg'):
-      continue
-
-    for dependency in deb.depends:
-      if any(dep[0] == package_name for dep in dependency):
-        deb_paths.append(file_path)
-        break
-
-  return deb_paths
-
-
-def ExtractLibraries(deb_paths, work_directory, output_directory):
-  """Extract libraries from .deb packages."""
-  extract_directory = os.path.join(work_directory, 'extracted')
-  if os.path.exists(extract_directory):
-    shutil.rmtree(extract_directory, ignore_errors=True)
-
-  os.mkdir(extract_directory)
-
-  for deb_path in deb_paths:
-    subprocess.check_call(['dpkg-deb', '-x', deb_path, extract_directory])
-
-  extracted = []
-  for root, _, filenames in os.walk(extract_directory):
-    if 'libx32' in root or 'lib32' in root:
-      continue
-
-    for filename in filenames:
-      if (not filename.endswith('.so') and '.so.' not in filename and
-          not filename.endswith('.a') and '.a' not in filename):
-        continue
-
-      file_path = os.path.join(root, filename)
-      rel_file_path = os.path.relpath(file_path, extract_directory)
-      rel_directory = os.path.dirname(rel_file_path)
-
-      target_dir = os.path.join(output_directory, rel_directory)
-      if not os.path.exists(target_dir):
-        os.makedirs(target_dir)
-
-      target_file_path = os.path.join(output_directory, rel_file_path)
-      extracted.append(target_file_path)
-
-      if os.path.lexists(target_file_path):
-        os.remove(target_file_path)
-
-      if os.path.islink(file_path):
-        link_path = os.readlink(file_path)
-        if os.path.isabs(link_path):
-          # Make absolute links relative.
-          link_path = os.path.relpath(link_path,
-                                      os.path.join('/', rel_directory))
-
-        os.symlink(link_path, target_file_path)
-      else:
-        shutil.copy2(file_path, target_file_path)
-
-  return extracted
-
-
-def GetPackage(package_name):
-  apt_cache = apt.Cache()
-  version = apt_cache[package_name].candidate
-  source_name = version.source_name
-  local_source_name = source_name.replace('.', '_')
-
-  custom_package_path = os.path.join(PACKAGES_DIR, local_source_name) + '.py'
-  if not os.path.exists(custom_package_path):
-    print('Using default package build steps.')
-    return package.Package(source_name, version)
-
-  print('Using custom package build steps.')
-  module = imp.load_source('packages.' + local_source_name, custom_package_path)
-  return module.Package(version)
-
-
-def PatchRpath(path, output_directory):
-  """Patch rpath to be relative to $ORIGIN."""
-  try:
-    rpaths = subprocess.check_output(['patchelf', '--print-rpath',
-                                      path]).strip()
-  except subprocess.CalledProcessError:
-    return
-
-  if not rpaths:
-    return
-
-  processed_rpath = []
-  rel_directory = os.path.join(
-      '/', os.path.dirname(os.path.relpath(path, output_directory)))
-
-  for rpath in rpaths.split(':'):
-    if '$ORIGIN' in rpath:
-      # Already relative.
-      processed_rpath.append(rpath)
-      continue
-
-    processed_rpath.append(
-        os.path.join('$ORIGIN', os.path.relpath(rpath, rel_directory)))
-
-  processed_rpath = ':'.join(processed_rpath)
-  print('Patching rpath for', path, 'to', processed_rpath)
-  subprocess.check_call(
-      ['patchelf', '--force-rpath', '--set-rpath', processed_rpath, path])
-
-
-def _CollectDependencies(apt_cache, pkg, cache, dependencies):
-  """Collect dependencies that need to be built."""
-  C_OR_CXX_DEPS = [
-      'libc++1',
-      'libc6',
-      'libc++abi1',
-      'libgcc1',
-      'libstdc++6',
-  ]
-
-  BLACKLISTED_PACKAGES = [
-      'libcapnp-0.5.3',  # fails to compile on newer clang.
-      'libllvm5.0',
-      'libmircore1',
-      'libmircommon7',
-      'libmirclient9',
-      'libmirprotobuf3',
-      'multiarch-support',
-  ]
-
-  if pkg.name in BLACKLISTED_PACKAGES:
-    return False
-
-  if pkg.section != 'libs' and pkg.section != 'universe/libs':
-    return False
-
-  if pkg.name in C_OR_CXX_DEPS:
-    return True
-
-  is_c_or_cxx = False
-  for dependency in pkg.candidate.dependencies:
-    dependency = dependency[0]
-
-    if dependency.name in cache:
-      is_c_or_cxx |= cache[dependency.name]
-    else:
-      is_c_or_cxx |= _CollectDependencies(apt_cache, apt_cache[dependency.name],
-                                          cache, dependencies)
-  if is_c_or_cxx:
-    dependencies.append(pkg.name)
-
-  cache[pkg.name] = is_c_or_cxx
-  return is_c_or_cxx
-
-
-def GetBuildList(package_name):
-  """Get list of packages that need to be built including dependencies."""
-  apt_cache = apt.Cache()
-  pkg = apt_cache[package_name]
-
-  dependencies = []
-  _CollectDependencies(apt_cache, pkg, {}, dependencies)
-  return dependencies
-
-
-class MSanBuilder(object):
-  """MSan builder."""
-
-  def __init__(self,
-               debug=False,
-               log_path=None,
-               work_dir=None,
-               no_track_origins=False):
-    self.debug = debug
-    self.log_path = log_path
-    self.work_dir = work_dir
-    self.no_track_origins = no_track_origins
-    self.env = None
-
-  def __enter__(self):
-    if not self.work_dir:
-      self.work_dir = tempfile.mkdtemp(dir=self.work_dir)
-
-    if os.path.exists(self.work_dir):
-      shutil.rmtree(self.work_dir, ignore_errors=True)
-
-    os.makedirs(self.work_dir)
-    self.env = SetUpEnvironment(self.work_dir)
-
-    if self.debug and self.log_path:
-      self.env['WRAPPER_DEBUG_LOG_PATH'] = self.log_path
-
-    if self.no_track_origins:
-      self.env['MSAN_NO_TRACK_ORIGINS'] = '1'
-
-    return self
-
-  def __exit__(self, exc_type, exc_value, traceback):
-    if not self.debug:
-      shutil.rmtree(self.work_dir, ignore_errors=True)
-
-  def Build(self, package_name, output_directory, create_subdirs=False):
-    """Build the package and write results into the output directory."""
-    deb_paths = FindPackageDebs(package_name, self.work_dir)
-    if deb_paths:
-      print('Source package already built for', package_name)
-    else:
-      pkg = GetPackage(package_name)
-
-      pkg.InstallBuildDeps()
-      source_directory = pkg.DownloadSource(self.work_dir)
-      print('Source downloaded to', source_directory)
-
-      # custom bin directory for custom build scripts to write wrappers.
-      custom_bin_dir = os.path.join(self.work_dir, package_name + '_bin')
-      os.mkdir(custom_bin_dir)
-      env = self.env.copy()
-      env['PATH'] = custom_bin_dir + ':' + env['PATH']
-
-      pkg.Build(source_directory, env, custom_bin_dir)
-      shutil.rmtree(custom_bin_dir, ignore_errors=True)
-
-      deb_paths = FindPackageDebs(package_name, self.work_dir)
-
-    if not deb_paths:
-      raise MSanBuildException('Failed to find .deb packages.')
-
-    print('Extracting', ' '.join(deb_paths))
-
-    if create_subdirs:
-      extract_directory = os.path.join(output_directory, package_name)
-    else:
-      extract_directory = output_directory
-
-    extracted_paths = ExtractLibraries(deb_paths, self.work_dir,
-                                       extract_directory)
-    for extracted_path in extracted_paths:
-      if os.path.islink(extracted_path):
-        continue
-      if os.path.basename(extracted_path) == 'llvm-symbolizer':
-        continue
-      PatchRpath(extracted_path, extract_directory)
-
-
-def main():
-  parser = argparse.ArgumentParser('msan_build.py', description='MSan builder.')
-  parser.add_argument('package_names', nargs='+', help='Name of the packages.')
-  parser.add_argument('output_dir', help='Output directory.')
-  parser.add_argument('--create-subdirs',
-                      action='store_true',
-                      help=('Create subdirectories in the output '
-                            'directory for each package.'))
-  parser.add_argument('--work-dir', help='Work directory.')
-  parser.add_argument('--no-build-deps',
-                      action='store_true',
-                      help='Don\'t build dependencies.')
-  parser.add_argument('--debug', action='store_true', help='Enable debug mode.')
-  parser.add_argument('--log-path', help='Log path for debugging.')
-  parser.add_argument('--no-track-origins',
-                      action='store_true',
-                      help='Build with -fsanitize-memory-track-origins=0.')
-  args = parser.parse_args()
-
-  if args.no_track_origins:
-    os.environ['MSAN_NO_TRACK_ORIGINS'] = '1'
-
-  if not os.path.exists(args.output_dir):
-    os.makedirs(args.output_dir)
-
-  if args.no_build_deps:
-    package_names = args.package_names
-  else:
-    all_packages = set()
-    package_names = []
-
-    # Get list of packages to build, including all dependencies.
-    for package_name in args.package_names:
-      for dep in GetBuildList(package_name):
-        if dep in all_packages:
-          continue
-
-        if args.create_subdirs:
-          os.mkdir(os.path.join(args.output_dir, dep))
-
-        all_packages.add(dep)
-        package_names.append(dep)
-
-  print('Going to build:')
-  for package_name in package_names:
-    print('\t', package_name)
-
-  with MSanBuilder(debug=args.debug,
-                   log_path=args.log_path,
-                   work_dir=args.work_dir,
-                   no_track_origins=args.no_track_origins) as builder:
-    for package_name in package_names:
-      builder.Build(package_name, args.output_dir, args.create_subdirs)
-
-
-if __name__ == '__main__':
-  main()
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/pixman.py b/infra/base-images/base-sanitizer-libs-builder/packages/pixman.py
deleted file mode 100644
index 5251246..0000000
--- a/infra/base-images/base-sanitizer-libs-builder/packages/pixman.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-import os
-import shutil
-
-import package
-
-
-class Package(package.Package):
-  """pixman package."""
-
-  def __init__(self, apt_version):
-    super(Package, self).__init__('pixman', apt_version)
-
-  def PostDownload(self, source_directory):
-    # Incorrect checking of GCC vector extension availability.
-    os.system('sed s/support_for_gcc_vector_extensions=yes/'
-              'support_for_gcc_vector_extensions=no/ -i %s/configure.ac' %
-              source_directory)
-
-  def PreBuild(self, source_directory, env, custom_bin_dir):
-    blocklist_flag = ' -fsanitize-blacklist=' + os.path.join(
-        os.path.dirname(os.path.abspath(__file__)), 'pixman_blocklist.txt')
-    env['DEB_CXXFLAGS_APPEND'] += blocklist_flag
-    env['DEB_CFLAGS_APPEND'] += blocklist_flag
diff --git a/infra/base-images/base-sanitizer-libs-builder/packages/pulseaudio.py b/infra/base-images/base-sanitizer-libs-builder/packages/pulseaudio.py
deleted file mode 100644
index d3ce7a1..0000000
--- a/infra/base-images/base-sanitizer-libs-builder/packages/pulseaudio.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-from __future__ import print_function
-import glob
-import os
-import subprocess
-
-import package
-
-
-class Package(package.Package):
-  """PulseAudio package."""
-
-  def __init__(self, apt_version):
-    super(Package, self).__init__('pulseaudio', apt_version)
-
-  def PostDownload(self, source_directory):
-    """Remove blocklisted patches."""
-    # Fix *droid* patches.
-    bad_patch_path = os.path.join(
-        source_directory, 'debian', 'patches',
-        '0600-droid-sync-with-upstream-for-Android-5-support-and-b.patch')
-    if not os.path.exists(bad_patch_path):
-      return
-
-    print('Applying custom patches.')
-    package.ApplyPatch(source_directory, 'pulseaudio_fix_android.patch')
diff --git a/infra/base-images/base-sanitizer-libs-builder/patch_build.py b/infra/base-images/base-sanitizer-libs-builder/patch_build.py
deleted file mode 100755
index cb1f4b1..0000000
--- a/infra/base-images/base-sanitizer-libs-builder/patch_build.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-from __future__ import print_function
-import argparse
-import os
-import re
-import shutil
-import subprocess
-import sys
-
-INSTRUMENTED_LIBRARIES_DIRNAME = 'instrumented_libraries'
-MSAN_LIBS_PATH = os.getenv('MSAN_LIBS_PATH', '/msan')
-
-
-def IsElf(file_path):
-  """Whether if the file is an elf file."""
-  with open(file_path) as f:
-    return f.read(4) == '\x7fELF'
-
-
-def Ldd(binary_path):
-  """Run ldd on a file."""
-  try:
-    output = subprocess.check_output(['ldd', binary_path], stderr=subprocess.STDOUT)
-  except subprocess.CalledProcessError:
-    print('Failed to call ldd on', binary_path, file=sys.stderr)
-    return []
-
-  libs = []
-
-  OUTPUT_PATTERN = re.compile(r'\s*([^\s]+)\s*=>\s*([^\s]+)')
-  for line in output.splitlines():
-    match = OUTPUT_PATTERN.match(line)
-    if not match:
-      continue
-
-    libs.append((match.group(1), match.group(2)))
-
-  return libs
-
-
-def FindLib(path):
-  """Find instrumented version of lib."""
-  candidate_path = os.path.join(MSAN_LIBS_PATH, path[1:])
-  if os.path.exists(candidate_path):
-    return candidate_path
-  
-  for lib_dir in os.listdir(MSAN_LIBS_PATH):
-    candidate_path = os.path.join(MSAN_LIBS_PATH, lib_dir, path[1:])
-    if os.path.exists(candidate_path):
-      return candidate_path
-
-  return None
-
-
-def PatchBinary(binary_path, instrumented_dir):
-  """Patch binary to link to instrumented libs."""
-  extra_rpaths = set()
-
-  for name, path in Ldd(binary_path):
-    if not os.path.isabs(path):
-      continue
-
-    instrumented_path = FindLib(path)
-    if not instrumented_path:
-      print('WARNING: Instrumented library not found for', path,
-            file=sys.stderr)
-      continue
-
-    target_path = os.path.join(instrumented_dir, path[1:])
-    if not os.path.exists(target_path):
-      print('Copying instrumented lib to', target_path)
-      target_dir = os.path.dirname(target_path)
-      if not os.path.exists(target_dir):
-        os.makedirs(target_dir)
-      shutil.copy2(instrumented_path, target_path)
-
-    extra_rpaths.add(
-        os.path.join('$ORIGIN', INSTRUMENTED_LIBRARIES_DIRNAME,
-                     os.path.dirname(path[1:])))
-
-  if not extra_rpaths:
-    return
-
-  existing_rpaths = subprocess.check_output(
-      ['patchelf', '--print-rpath', binary_path]).strip()
-  processed_rpaths = ':'.join(extra_rpaths)
-  if existing_rpaths:
-    processed_rpaths += ':' + existing_rpaths
-  print('Patching rpath for', binary_path, 'from', existing_rpaths, 'to',
-        processed_rpaths)
-
-  subprocess.check_call(
-      ['patchelf', '--force-rpath', '--set-rpath',
-       processed_rpaths, binary_path])
-
-
-def PatchBuild(output_directory):
-  """Patch build to use msan libs."""
-  instrumented_dir = os.path.join(output_directory,
-                                  INSTRUMENTED_LIBRARIES_DIRNAME)
-  if not os.path.exists(instrumented_dir):
-    os.mkdir(instrumented_dir)
-
-  for root_dir, _, filenames in os.walk(output_directory):
-    for filename in filenames:
-      file_path = os.path.join(root_dir, filename)
-
-      if os.path.islink(file_path):
-        continue
-
-      if not IsElf(file_path):
-        continue
-
-      PatchBinary(file_path, instrumented_dir)
-
-
-def main():
-  parser = argparse.ArgumentParser('patch_build.py', description='MSan build patcher.')
-  parser.add_argument('output_dir', help='Output directory.')
-
-  args = parser.parse_args()
-
-  PatchBuild(os.path.abspath(args.output_dir))
-
-
-if __name__ == '__main__':
-  main()
diff --git a/infra/base-images/msan-builder/Dockerfile b/infra/base-images/msan-builder/Dockerfile
new file mode 100644
index 0000000..5f6091a
--- /dev/null
+++ b/infra/base-images/msan-builder/Dockerfile
@@ -0,0 +1,38 @@
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-msan-builder
+ENV PYTHONUNBUFFERED 1
+RUN msan_build.py --work-dir=$WORK \
+    libarchive13 \
+    libattr1 \
+    libbz2-1.0 \
+    libfontconfig1 \
+    libfreetype6 \
+    libfribidi0 \
+    libglib2.0-0 \
+    libicu55  \
+    liblz4-1 \
+    liblzma5 \
+    liblzo2-2 \
+    libnettle6 \
+    libpcre2-posix0 \
+    libpcre3 \
+    libpng12-0 \
+    libssl1.0.0 \
+    libxml2 \
+    zlib1g \
+    /msan
diff --git a/infra/base-images/msan-libs-builder/Dockerfile b/infra/base-images/msan-libs-builder/Dockerfile
deleted file mode 100644
index 7780c1f..0000000
--- a/infra/base-images/msan-libs-builder/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2017 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-sanitizer-libs-builder
-
-# Take all libraries from lib/msan
-RUN cp -R /usr/msan/lib/* /usr/lib/
-
-RUN mkdir /msan
-WORKDIR /msan
-
-ENV PYTHONUNBUFFERED 1
-RUN msan_build.py --work-dir=$WORK \
-    libarchive13 \
-    libattr1 \
-    libbz2-1.0 \
-    libfontconfig1 \
-    libfreetype6 \
-    libfribidi0 \
-    libglib2.0-0 \
-    libicu55  \
-    liblz4-1 \
-    liblzma5 \
-    liblzo2-2 \
-    libnettle6 \
-    libpcre2-posix0 \
-    libpcre3 \
-    libpng12-0 \
-    libssl1.0.0 \
-    libxml2 \
-    zlib1g \
-    /msan
diff --git a/infra/bisector.py b/infra/bisector.py
index 1438d0d..d1fd669 100644
--- a/infra/bisector.py
+++ b/infra/bisector.py
@@ -22,8 +22,8 @@
 
   Typical usage example:
         python3 infra/bisector.py
-          --old_commit 1e403e9259a1abedf108ab86f711ba52c907226d
-          --new_commit f79be4f2330f4b89ea2f42e1c44ca998c59a0c0f
+          --commit_old 1e403e9259a1abedf108ab86f711ba52c907226d
+          --commit_new f79be4f2330f4b89ea2f42e1c44ca998c59a0c0f
           --fuzz_target rules_fuzzer
           --project_name yara
           --testcase infra/yara_testcase
@@ -31,10 +31,7 @@
 """
 
 import argparse
-import collections
 import logging
-import os
-import sys
 import tempfile
 
 import build_specified_commit
@@ -42,31 +39,9 @@
 import repo_manager
 import utils
 
-Result = collections.namedtuple('Result', ['repo_url', 'commit'])
-
-START_MARKERS = [
-    '==ERROR',
-    '==WARNING',
-]
-
-END_MARKERS = [
-    'SUMMARY:',
-]
-
-DEDUP_TOKEN_MARKER = 'DEDUP_TOKEN:'
-
-
-class BisectError(Exception):
-  """Bisection error."""
-
-  def __init__(self, message, repo_url):
-    super().__init__(message)
-    self.repo_url = repo_url
-
 
 def main():
   """Finds the commit SHA where an error was initally introduced."""
-  logging.getLogger().setLevel(logging.INFO)
   utils.chdir_to_root()
   parser = argparse.ArgumentParser(
       description='git bisection for finding introduction of bugs')
@@ -92,10 +67,6 @@
   parser.add_argument('--sanitizer',
                       default='address',
                       help='The default is "address".')
-  parser.add_argument('--type',
-                      choices=['regressed', 'fixed'],
-                      help='The bisection type.',
-                      required=True)
   parser.add_argument('--architecture', default='x86_64')
   args = parser.parse_args()
 
@@ -104,186 +75,26 @@
                                                 sanitizer=args.sanitizer,
                                                 architecture=args.architecture)
 
-  result = bisect(args.type, args.old_commit, args.new_commit,
-                  args.test_case_path, args.fuzz_target, build_data)
-  if not result.commit:
-    logging.error('No error was found in commit range %s:%s', args.old_commit,
-                  args.new_commit)
+  error_sha = bisect(args.old_commit, args.new_commit, args.test_case_path,
+                     args.fuzz_target, build_data)
+  if not error_sha:
+    logging.error('No error was found in commit range %s:%s', args.commit_old,
+                  args.commit_new)
     return 1
-  if result.commit == args.old_commit:
+  if error_sha == args.commit_old:
     logging.error(
         'Bisection Error: Both the first and the last commits in'
         'the given range have the same behavior, bisection is not possible. ')
     return 1
-  print('Error was introduced at commit %s' % result.commit)
+  print('Error was introduced at commit %s' % error_sha)
   return 0
 
 
-def _get_dedup_token(output):
-  """Get dedup token."""
-  for line in output.splitlines():
-    token_location = line.find(DEDUP_TOKEN_MARKER)
-    if token_location == -1:
-      continue
-
-    return line[token_location + len(DEDUP_TOKEN_MARKER):].strip()
-
-  return None
-
-
-def _check_for_crash(project_name, fuzz_target, test_case_path):
-  """Check for crash."""
-
-  def docker_run(args):
-    command = ['docker', 'run', '--rm', '--privileged']
-    if sys.stdin.isatty():
-      command.append('-i')
-
-    return utils.execute(command + args)
-
-  logging.info('Checking for crash')
-  out, err, return_code = helper.reproduce_impl(project_name,
-                                                fuzz_target,
-                                                False, [], [],
-                                                test_case_path,
-                                                runner=docker_run,
-                                                err_result=(None, None, None))
-  if return_code is None:
-    return None
-
-  logging.info('stdout =\n%s', out)
-  logging.info('stderr =\n%s', err)
-
-  # pylint: disable=unsupported-membership-test
-  has_start_marker = any(
-      marker in out or marker in err for marker in START_MARKERS)
-  has_end_marker = any(marker in out or marker in err for marker in END_MARKERS)
-  if not has_start_marker or not has_end_marker:
-    return None
-
-  return _get_dedup_token(out + err)
-
-
-# pylint: disable=too-many-locals
-# pylint: disable=too-many-arguments
-# pylint: disable=too-many-statements
-def _bisect(bisect_type, old_commit, new_commit, test_case_path, fuzz_target,
-            build_data):
-  """Perform the bisect."""
-  # pylint: disable=too-many-branches
-  base_builder_repo = build_specified_commit.load_base_builder_repo()
-
-  with tempfile.TemporaryDirectory() as tmp_dir:
-    repo_url, repo_path = build_specified_commit.detect_main_repo(
-        build_data.project_name, commit=new_commit)
-    if not repo_url or not repo_path:
-      raise ValueError('Main git repo can not be determined.')
-
-    if old_commit == new_commit:
-      raise BisectError('old_commit is the same as new_commit', repo_url)
-
-    # Copy /src from the built Docker container to ensure all dependencies
-    # exist. This will be mounted when running them.
-    host_src_dir = build_specified_commit.copy_src_from_docker(
-        build_data.project_name, tmp_dir)
-
-    bisect_repo_manager = repo_manager.RepoManager(
-        os.path.join(host_src_dir, os.path.basename(repo_path)))
-    bisect_repo_manager.fetch_all_remotes()
-
-    commit_list = bisect_repo_manager.get_commit_list(new_commit, old_commit)
-
-    old_idx = len(commit_list) - 1
-    new_idx = 0
-    logging.info('Testing against new_commit (%s)', commit_list[new_idx])
-    if not build_specified_commit.build_fuzzers_from_commit(
-        commit_list[new_idx],
-        bisect_repo_manager,
-        host_src_dir,
-        build_data,
-        base_builder_repo=base_builder_repo):
-      raise BisectError('Failed to build new_commit', repo_url)
-
-    if bisect_type == 'fixed':
-      should_crash = False
-    elif bisect_type == 'regressed':
-      should_crash = True
-    else:
-      raise BisectError('Invalid bisect type ' + bisect_type, repo_url)
-
-    expected_error = _check_for_crash(build_data.project_name, fuzz_target,
-                                      test_case_path)
-    logging.info('new_commit result = %s', expected_error)
-
-    if not should_crash and expected_error:
-      logging.warning('new_commit crashed but not shouldn\'t. '
-                      'Continuing to see if stack changes.')
-
-    range_valid = False
-    for _ in range(2):
-      logging.info('Testing against old_commit (%s)', commit_list[old_idx])
-      if not build_specified_commit.build_fuzzers_from_commit(
-          commit_list[old_idx],
-          bisect_repo_manager,
-          host_src_dir,
-          build_data,
-          base_builder_repo=base_builder_repo):
-        raise BisectError('Failed to build old_commit', repo_url)
-
-      if _check_for_crash(build_data.project_name, fuzz_target,
-                          test_case_path) == expected_error:
-        logging.warning('old_commit %s had same result as new_commit %s',
-                        old_commit, new_commit)
-        # Try again on an slightly older commit.
-        old_commit = bisect_repo_manager.get_parent(old_commit, 64)
-        if not old_commit:
-          break
-
-        commit_list = bisect_repo_manager.get_commit_list(
-            new_commit, old_commit)
-        old_idx = len(commit_list) - 1
-        continue
-
-      range_valid = True
-      break
-
-    if not range_valid:
-      raise BisectError('old_commit had same result as new_commit', repo_url)
-
-    while old_idx - new_idx > 1:
-      curr_idx = (old_idx + new_idx) // 2
-      logging.info('Testing against %s (idx=%d)', commit_list[curr_idx],
-                   curr_idx)
-      if not build_specified_commit.build_fuzzers_from_commit(
-          commit_list[curr_idx],
-          bisect_repo_manager,
-          host_src_dir,
-          build_data,
-          base_builder_repo=base_builder_repo):
-        # Treat build failures as if we couldn't repo.
-        # TODO(ochang): retry nearby commits?
-        old_idx = curr_idx
-        continue
-
-      current_error = _check_for_crash(build_data.project_name, fuzz_target,
-                                       test_case_path)
-      logging.info('Current result = %s', current_error)
-      if expected_error == current_error:
-        new_idx = curr_idx
-      else:
-        old_idx = curr_idx
-    return Result(repo_url, commit_list[new_idx])
-
-
-# pylint: disable=too-many-locals
-# pylint: disable=too-many-arguments
-def bisect(bisect_type, old_commit, new_commit, test_case_path, fuzz_target,
-           build_data):
+def bisect(old_commit, new_commit, test_case_path, fuzz_target, build_data):
   """From a commit range, this function caluclates which introduced a
   specific error from a fuzz test_case_path.
 
   Args:
-    bisect_type: The type of the bisect ('regressed' or 'fixed').
     old_commit: The oldest commit in the error regression range.
     new_commit: The newest commit in the error regression range.
     test_case_path: The file path of the test case that triggers the error
@@ -296,15 +107,48 @@
   Raises:
     ValueError: when a repo url can't be determine from the project.
   """
-  try:
-    return _bisect(bisect_type, old_commit, new_commit, test_case_path,
-                   fuzz_target, build_data)
-  finally:
-    # Clean up projects/ as _bisect may have modified it.
-    oss_fuzz_repo_manager = repo_manager.RepoManager(helper.OSS_FUZZ_DIR)
-    oss_fuzz_repo_manager.git(['reset', 'projects'])
-    oss_fuzz_repo_manager.git(['checkout', 'projects'])
-    oss_fuzz_repo_manager.git(['clean', '-fxd', 'projects'])
+  with tempfile.TemporaryDirectory() as tmp_dir:
+    repo_url, repo_name = build_specified_commit.detect_main_repo(
+        build_data.project_name, commit=old_commit)
+    if not repo_url or not repo_name:
+      raise ValueError('Main git repo can not be determined.')
+    bisect_repo_manager = repo_manager.RepoManager(repo_url,
+                                                   tmp_dir,
+                                                   repo_name=repo_name)
+    commit_list = bisect_repo_manager.get_commit_list(old_commit, new_commit)
+    old_idx = len(commit_list) - 1
+    new_idx = 0
+    build_specified_commit.build_fuzzers_from_commit(commit_list[new_idx],
+                                                     bisect_repo_manager,
+                                                     build_data)
+    expected_error_code = helper.reproduce_impl(build_data.project_name,
+                                                fuzz_target, False, [], [],
+                                                test_case_path)
+
+    # Check if the error is persistent through the commit range
+    build_specified_commit.build_fuzzers_from_commit(
+        commit_list[old_idx],
+        bisect_repo_manager,
+        build_data,
+    )
+
+    if expected_error_code == helper.reproduce_impl(build_data.project_name,
+                                                    fuzz_target, False, [], [],
+                                                    test_case_path):
+      return commit_list[old_idx]
+
+    while old_idx - new_idx > 1:
+      curr_idx = (old_idx + new_idx) // 2
+      build_specified_commit.build_fuzzers_from_commit(commit_list[curr_idx],
+                                                       bisect_repo_manager,
+                                                       build_data)
+      error_code = helper.reproduce_impl(build_data.project_name, fuzz_target,
+                                         False, [], [], test_case_path)
+      if expected_error_code == error_code:
+        new_idx = curr_idx
+      else:
+        old_idx = curr_idx
+    return commit_list[new_idx]
 
 
 if __name__ == '__main__':
diff --git a/infra/bisector_test.py b/infra/bisector_test.py
index 5e3dc52..89d483e 100644
--- a/infra/bisector_test.py
+++ b/infra/bisector_test.py
@@ -29,12 +29,9 @@
 TEST_DIR_PATH = os.path.dirname(os.path.realpath(__file__))
 
 
-@unittest.skip('Test is too long to be run with presubmit.')
 class BisectIntegrationTests(unittest.TestCase):
   """Class to test the functionality of bisection method."""
 
-  BISECT_TYPE = 'regressed'
-
   def test_bisect_invalid_repo(self):
     """Test the bisection method on a project that does not exist."""
     test_repo = test_repos.INVALID_REPO
@@ -44,23 +41,22 @@
         sanitizer='address',
         architecture='x86_64')
     with self.assertRaises(ValueError):
-      bisector.bisect(self.BISECT_TYPE, test_repo.old_commit,
-                      test_repo.new_commit, test_repo.test_case_path,
-                      test_repo.fuzz_target, build_data)
+      bisector.bisect(test_repo.old_commit, test_repo.new_commit,
+                      test_repo.test_case_path, test_repo.fuzz_target,
+                      build_data)
 
   def test_bisect(self):
     """Test the bisect method on example projects."""
     for test_repo in test_repos.TEST_REPOS:
-      if test_repo.new_commit:
-        build_data = build_specified_commit.BuildData(
-            project_name=test_repo.project_name,
-            engine='libfuzzer',
-            sanitizer='address',
-            architecture='x86_64')
-        result = bisector.bisect(self.BISECT_TYPE, test_repo.old_commit,
-                                 test_repo.new_commit, test_repo.test_case_path,
-                                 test_repo.fuzz_target, build_data)
-        self.assertEqual(result.commit, test_repo.intro_commit)
+      build_data = build_specified_commit.BuildData(
+          project_name=test_repo.project_name,
+          engine='libfuzzer',
+          sanitizer='address',
+          architecture='x86_64')
+      error_sha = bisector.bisect(test_repo.old_commit, test_repo.new_commit,
+                                  test_repo.test_case_path,
+                                  test_repo.fuzz_target, build_data)
+      self.assertEqual(error_sha, test_repo.intro_commit)
 
 
 if __name__ == '__main__':
diff --git a/infra/build/functions/__init__.py b/infra/build/functions/__init__.py
deleted file mode 100644
index 9f76bf6..0000000
--- a/infra/build/functions/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
diff --git a/infra/build/functions/base_images.py b/infra/build/functions/base_images.py
deleted file mode 100644
index 8c9b2d8..0000000
--- a/infra/build/functions/base_images.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud function to build base images on Google Cloud Builder."""
-
-import datetime
-import logging
-
-import google.auth
-from googleapiclient.discovery import build
-
-BASE_IMAGES = [
-    'base-image',
-    'base-clang',
-    'base-builder',
-    'base-runner',
-    'base-runner-debug',
-]
-BASE_PROJECT = 'oss-fuzz-base'
-TAG_PREFIX = f'gcr.io/{BASE_PROJECT}/'
-
-BASE_SANITIZER_LIBS_IMAGE = TAG_PREFIX + 'base-sanitizer-libs-builder'
-MSAN_LIBS_IMAGE = TAG_PREFIX + 'msan-libs-builder'
-
-
-def _get_base_image_steps(images, tag_prefix=TAG_PREFIX):
-  """Returns build steps for given images."""
-  steps = [{
-      'args': [
-          'clone',
-          'https://github.com/google/oss-fuzz.git',
-      ],
-      'name': 'gcr.io/cloud-builders/git',
-  }]
-
-  for base_image in images:
-    steps.append({
-        'args': [
-            'build',
-            '-t',
-            tag_prefix + base_image,
-            '.',
-        ],
-        'dir': 'oss-fuzz/infra/base-images/' + base_image,
-        'name': 'gcr.io/cloud-builders/docker',
-    })
-
-  return steps
-
-
-def get_logs_url(build_id, project_id='oss-fuzz-base'):
-  """Returns url that displays the build logs."""
-  url_format = ('https://console.developers.google.com/logs/viewer?'
-                'resource=build%2Fbuild_id%2F{0}&project={1}')
-  return url_format.format(build_id, project_id)
-
-
-# pylint: disable=no-member
-def run_build(steps, images):
-  """Execute the retrieved build steps in gcp."""
-  credentials, _ = google.auth.default()
-  build_body = {
-      'steps': steps,
-      'timeout': str(6 * 3600) + 's',
-      'options': {
-          'machineType': 'N1_HIGHCPU_32'
-      },
-      'images': images
-  }
-  cloudbuild = build('cloudbuild',
-                     'v1',
-                     credentials=credentials,
-                     cache_discovery=False)
-  build_info = cloudbuild.projects().builds().create(projectId=BASE_PROJECT,
-                                                     body=build_body).execute()
-  build_id = build_info['metadata']['build']['id']
-  logging.info('Build ID: %s', build_id)
-  logging.info('Logs: %s', get_logs_url(build_id, BASE_PROJECT))
-
-
-def base_builder(event, context):
-  """Cloud function to build base images."""
-  del event, context
-
-  tag_prefix = f'gcr.io/{BASE_PROJECT}/'
-  steps = _get_base_image_steps(BASE_IMAGES, tag_prefix)
-  images = [tag_prefix + base_image for base_image in BASE_IMAGES]
-
-  run_build(steps, images)
-
-
-def _get_msan_steps(image):
-  """Get build steps for msan-libs-builder."""
-  timestamp = datetime.datetime.utcnow().strftime('%Y%m%d%H%M')
-  upload_name = 'msan-libs-' + timestamp + '.zip'
-
-  steps = _get_base_image_steps([
-      'base-sanitizer-libs-builder',
-      'msan-libs-builder',
-  ])
-  steps.extend([{
-      'name': image,
-      'args': [
-          'bash',
-          '-c',
-          'cd /msan && zip -r /workspace/libs.zip .',
-      ],
-  }, {
-      'name':
-          'gcr.io/cloud-builders/gsutil',
-      'args': [
-          'cp',
-          '/workspace/libs.zip',
-          'gs://oss-fuzz-msan-libs/' + upload_name,
-      ],
-  }])
-  return steps
-
-
-def base_msan_builder(event, context):
-  """Cloud function to build base images."""
-  del event, context
-  steps = _get_msan_steps(MSAN_LIBS_IMAGE)
-  images = [
-      BASE_SANITIZER_LIBS_IMAGE,
-      MSAN_LIBS_IMAGE,
-  ]
-
-  run_build(steps, images)
diff --git a/infra/build/functions/build_and_run_coverage.py b/infra/build/functions/build_and_run_coverage.py
deleted file mode 100644
index cc2de5a..0000000
--- a/infra/build/functions/build_and_run_coverage.py
+++ /dev/null
@@ -1,275 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-#!/usr/bin/python2
-"""Starts and runs coverage build on Google Cloud Builder.
-Usage: build_and_run_coverage.py <project_dir>
-"""
-import datetime
-import json
-import logging
-import os
-import sys
-
-import build_lib
-import build_project
-
-SANITIZER = 'coverage'
-CONFIGURATION = ['FUZZING_ENGINE=libfuzzer', 'SANITIZER=%s' % SANITIZER]
-PLATFORM = 'linux'
-
-COVERAGE_BUILD_TAG = 'coverage'
-
-# Where code coverage reports need to be uploaded to.
-COVERAGE_BUCKET_NAME = 'oss-fuzz-coverage'
-
-# Link to the code coverage report in HTML format.
-HTML_REPORT_URL_FORMAT = (build_lib.GCS_URL_BASENAME + COVERAGE_BUCKET_NAME +
-                          '/{project}/reports/{date}/{platform}/index.html')
-
-# This is needed for ClusterFuzz to pick up the most recent reports data.
-LATEST_REPORT_INFO_URL = ('/' + COVERAGE_BUCKET_NAME +
-                          '/latest_report_info/{project}.json')
-LATEST_REPORT_INFO_CONTENT_TYPE = 'application/json'
-
-# Link where to upload code coverage report files to.
-UPLOAD_URL_FORMAT = 'gs://' + COVERAGE_BUCKET_NAME + '/{project}/{type}/{date}'
-
-# Languages from project.yaml that have code coverage support.
-LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'c++', 'go', 'rust']
-
-
-def usage():
-  """Exit with code 1 and display syntax to use this file."""
-  sys.stderr.write("Usage: " + sys.argv[0] + " <project_dir>\n")
-  sys.exit(1)
-
-
-# pylint: disable=too-many-locals
-def get_build_steps(project_name, project_yaml_file, dockerfile_lines,
-                    image_project, base_images_project):
-  """Returns build steps for project."""
-  project_yaml = build_project.load_project_yaml(project_name,
-                                                 project_yaml_file,
-                                                 image_project)
-  if project_yaml['disabled']:
-    logging.info('Project "%s" is disabled.', project_name)
-    return []
-
-  if project_yaml['language'] not in LANGUAGES_WITH_COVERAGE_SUPPORT:
-    logging.info(
-        'Project "%s" is written in "%s", coverage is not supported yet.',
-        project_name, project_yaml['language'])
-    return []
-
-  name = project_yaml['name']
-  image = project_yaml['image']
-  language = project_yaml['language']
-  report_date = datetime.datetime.now().strftime('%Y%m%d')
-
-  build_steps = build_lib.project_image_steps(name, image, language)
-
-  env = CONFIGURATION[:]
-  out = '/workspace/out/' + SANITIZER
-  env.append('OUT=' + out)
-  env.append('FUZZING_LANGUAGE=' + language)
-
-  workdir = build_project.workdir_from_dockerfile(dockerfile_lines)
-  if not workdir:
-    workdir = '/src'
-
-  failure_msg = ('*' * 80 + '\nCoverage build failed.\nTo reproduce, run:\n'
-                 'python infra/helper.py build_image {name}\n'
-                 'python infra/helper.py build_fuzzers --sanitizer coverage '
-                 '{name}\n' + '*' * 80).format(name=name)
-
-  # Compilation step.
-  build_steps.append({
-      'name':
-          image,
-      'env':
-          env,
-      'args': [
-          'bash',
-          '-c',
-          # Remove /out to make sure there are non instrumented binaries.
-          # `cd /src && cd {workdir}` (where {workdir} is parsed from the
-          # Dockerfile). Container Builder overrides our workdir so we need
-          # to add this step to set it back.
-          ('rm -r /out && cd /src && cd {workdir} && mkdir -p {out} && '
-           'compile || (echo "{failure_msg}" && false)'
-          ).format(workdir=workdir, out=out, failure_msg=failure_msg),
-      ],
-  })
-
-  download_corpora_steps = build_lib.download_corpora_steps(project_name)
-  if not download_corpora_steps:
-    logging.info('Skipping code coverage build for %s.', project_name)
-    return []
-
-  build_steps.extend(download_corpora_steps)
-
-  failure_msg = ('*' * 80 + '\nCode coverage report generation failed.\n'
-                 'To reproduce, run:\n'
-                 'python infra/helper.py build_image {name}\n'
-                 'python infra/helper.py build_fuzzers --sanitizer coverage '
-                 '{name}\n'
-                 'python infra/helper.py coverage {name}\n' +
-                 '*' * 80).format(name=name)
-
-  # Unpack the corpus and run coverage script.
-  coverage_env = env + [
-      'HTTP_PORT=',
-      'COVERAGE_EXTRA_ARGS=%s' % project_yaml['coverage_extra_args'].strip(),
-  ]
-  if 'dataflow' in project_yaml['fuzzing_engines']:
-    coverage_env.append('FULL_SUMMARY_PER_TARGET=1')
-
-  build_steps.append({
-      'name': 'gcr.io/{0}/base-runner'.format(base_images_project),
-      'env': coverage_env,
-      'args': [
-          'bash', '-c',
-          ('for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*} || ('
-           'echo "Failed to unpack the corpus for $(basename ${f%%.*}). '
-           'This usually means that corpus backup for a particular fuzz '
-           'target does not exist. If a fuzz target was added in the last '
-           '24 hours, please wait one more day. Otherwise, something is '
-           'wrong with the fuzz target or the infrastructure, and corpus '
-           'pruning task does not finish successfully." && exit 1'
-           '); done && coverage || (echo "' + failure_msg + '" && false)')
-      ],
-      'volumes': [{
-          'name': 'corpus',
-          'path': '/corpus'
-      }],
-  })
-
-  # Upload the report.
-  upload_report_url = UPLOAD_URL_FORMAT.format(project=project_name,
-                                               type='reports',
-                                               date=report_date)
-
-  # Delete the existing report as gsutil cannot overwrite it in a useful way due
-  # to the lack of `-T` option (it creates a subdir in the destination dir).
-  build_steps.append(build_lib.gsutil_rm_rf_step(upload_report_url))
-  build_steps.append({
-      'name':
-          'gcr.io/cloud-builders/gsutil',
-      'args': [
-          '-m',
-          'cp',
-          '-r',
-          os.path.join(out, 'report'),
-          upload_report_url,
-      ],
-  })
-
-  # Upload the fuzzer stats. Delete the old ones just in case.
-  upload_fuzzer_stats_url = UPLOAD_URL_FORMAT.format(project=project_name,
-                                                     type='fuzzer_stats',
-                                                     date=report_date)
-  build_steps.append(build_lib.gsutil_rm_rf_step(upload_fuzzer_stats_url))
-  build_steps.append({
-      'name':
-          'gcr.io/cloud-builders/gsutil',
-      'args': [
-          '-m',
-          'cp',
-          '-r',
-          os.path.join(out, 'fuzzer_stats'),
-          upload_fuzzer_stats_url,
-      ],
-  })
-
-  # Upload the fuzzer logs. Delete the old ones just in case
-  upload_fuzzer_logs_url = UPLOAD_URL_FORMAT.format(project=project_name,
-                                                    type='logs',
-                                                    date=report_date)
-  build_steps.append(build_lib.gsutil_rm_rf_step(upload_fuzzer_logs_url))
-  build_steps.append({
-      'name':
-          'gcr.io/cloud-builders/gsutil',
-      'args': [
-          '-m',
-          'cp',
-          '-r',
-          os.path.join(out, 'logs'),
-          upload_fuzzer_logs_url,
-      ],
-  })
-
-  # Upload srcmap.
-  srcmap_upload_url = UPLOAD_URL_FORMAT.format(project=project_name,
-                                               type='srcmap',
-                                               date=report_date)
-  srcmap_upload_url = srcmap_upload_url.rstrip('/') + '.json'
-  build_steps.append({
-      'name': 'gcr.io/cloud-builders/gsutil',
-      'args': [
-          'cp',
-          '/workspace/srcmap.json',
-          srcmap_upload_url,
-      ],
-  })
-
-  # Update the latest report information file for ClusterFuzz.
-  latest_report_info_url = build_lib.get_signed_url(
-      LATEST_REPORT_INFO_URL.format(project=project_name),
-      content_type=LATEST_REPORT_INFO_CONTENT_TYPE)
-  latest_report_info_body = json.dumps({
-      'fuzzer_stats_dir':
-          upload_fuzzer_stats_url,
-      'html_report_url':
-          HTML_REPORT_URL_FORMAT.format(project=project_name,
-                                        date=report_date,
-                                        platform=PLATFORM),
-      'report_date':
-          report_date,
-      'report_summary_path':
-          os.path.join(upload_report_url, PLATFORM, 'summary.json'),
-  })
-
-  build_steps.append(
-      build_lib.http_upload_step(latest_report_info_body,
-                                 latest_report_info_url,
-                                 LATEST_REPORT_INFO_CONTENT_TYPE))
-  return build_steps
-
-
-def main():
-  """Build and run coverage for projects."""
-  if len(sys.argv) != 2:
-    usage()
-
-  image_project = 'oss-fuzz'
-  base_images_project = 'oss-fuzz-base'
-  project_dir = sys.argv[1].rstrip(os.path.sep)
-  project_name = os.path.basename(project_dir)
-  dockerfile_path = os.path.join(project_dir, 'Dockerfile')
-  project_yaml_path = os.path.join(project_dir, 'project.yaml')
-
-  with open(dockerfile_path) as docker_file:
-    dockerfile_lines = docker_file.readlines()
-
-  with open(project_yaml_path) as project_yaml_file:
-    steps = get_build_steps(project_name, project_yaml_file, dockerfile_lines,
-                            image_project, base_images_project)
-
-  build_project.run_build(steps, project_name, COVERAGE_BUILD_TAG)
-
-
-if __name__ == "__main__":
-  main()
diff --git a/infra/build/functions/build_lib.py b/infra/build/functions/build_lib.py
deleted file mode 100644
index 007579e..0000000
--- a/infra/build/functions/build_lib.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Utility module for Google Cloud Build scripts."""
-import base64
-import collections
-import os
-import six.moves.urllib.parse as urlparse
-import sys
-import time
-
-import requests
-
-import google.auth
-import googleapiclient.discovery
-from oauth2client.service_account import ServiceAccountCredentials
-
-BUILD_TIMEOUT = 12 * 60 * 60
-
-# Needed for reading public target.list.* files.
-GCS_URL_BASENAME = 'https://storage.googleapis.com/'
-
-GCS_UPLOAD_URL_FORMAT = '/{0}/{1}/{2}'
-
-# Where corpus backups can be downloaded from.
-CORPUS_BACKUP_URL = ('/{project}-backup.clusterfuzz-external.appspot.com/'
-                     'corpus/libFuzzer/{fuzzer}/latest.zip')
-
-# Cloud Builder has a limit of 100 build steps and 100 arguments for each step.
-CORPUS_DOWNLOAD_BATCH_SIZE = 100
-
-TARGETS_LIST_BASENAME = 'targets.list'
-
-EngineInfo = collections.namedtuple(
-    'EngineInfo',
-    ['upload_bucket', 'supported_sanitizers', 'supported_architectures'])
-
-ENGINE_INFO = {
-    'libfuzzer':
-        EngineInfo(upload_bucket='clusterfuzz-builds',
-                   supported_sanitizers=['address', 'memory', 'undefined'],
-                   supported_architectures=['x86_64', 'i386']),
-    'afl':
-        EngineInfo(upload_bucket='clusterfuzz-builds-afl',
-                   supported_sanitizers=['address'],
-                   supported_architectures=['x86_64']),
-    'honggfuzz':
-        EngineInfo(upload_bucket='clusterfuzz-builds-honggfuzz',
-                   supported_sanitizers=['address'],
-                   supported_architectures=['x86_64']),
-    'dataflow':
-        EngineInfo(upload_bucket='clusterfuzz-builds-dataflow',
-                   supported_sanitizers=['dataflow'],
-                   supported_architectures=['x86_64']),
-    'none':
-        EngineInfo(upload_bucket='clusterfuzz-builds-no-engine',
-                   supported_sanitizers=['address'],
-                   supported_architectures=['x86_64']),
-}
-
-
-def get_targets_list_filename(sanitizer):
-  """Returns target list filename."""
-  return TARGETS_LIST_BASENAME + '.' + sanitizer
-
-
-def get_targets_list_url(bucket, project, sanitizer):
-  """Returns target list url."""
-  filename = get_targets_list_filename(sanitizer)
-  url = GCS_UPLOAD_URL_FORMAT.format(bucket, project, filename)
-  return url
-
-
-def _get_targets_list(project_name):
-  """Returns target list."""
-  # libFuzzer ASan is the default configuration, get list of targets from it.
-  url = get_targets_list_url(ENGINE_INFO['libfuzzer'].upload_bucket,
-                             project_name, 'address')
-
-  url = urlparse.urljoin(GCS_URL_BASENAME, url)
-  response = requests.get(url)
-  if not response.status_code == 200:
-    sys.stderr.write('Failed to get list of targets from "%s".\n' % url)
-    sys.stderr.write('Status code: %d \t\tText:\n%s\n' %
-                     (response.status_code, response.text))
-    return None
-
-  return response.text.split()
-
-
-# pylint: disable=no-member
-def get_signed_url(path, method='PUT', content_type=''):
-  """Returns signed url."""
-  timestamp = int(time.time() + BUILD_TIMEOUT)
-  blob = '{0}\n\n{1}\n{2}\n{3}'.format(method, content_type, timestamp, path)
-
-  service_account_path = os.environ.get('GOOGLE_APPLICATION_CREDENTIALS')
-  if service_account_path:
-    creds = ServiceAccountCredentials.from_json_keyfile_name(
-        os.environ['GOOGLE_APPLICATION_CREDENTIALS'])
-    client_id = creds.service_account_email
-    signature = base64.b64encode(creds.sign_blob(blob)[1])
-  else:
-    credentials, project = google.auth.default()
-    iam = googleapiclient.discovery.build('iamcredentials',
-                                          'v1',
-                                          credentials=credentials,
-                                          cache_discovery=False)
-    client_id = project + '@appspot.gserviceaccount.com'
-    service_account = 'projects/-/serviceAccounts/{0}'.format(client_id)
-    response = iam.projects().serviceAccounts().signBlob(
-        name=service_account,
-        body={
-            'delegates': [],
-            'payload': base64.b64encode(blob.encode('utf-8')).decode('utf-8'),
-        }).execute()
-    signature = response['signedBlob']
-
-  values = {
-      'GoogleAccessId': client_id,
-      'Expires': timestamp,
-      'Signature': signature,
-  }
-  return ('https://storage.googleapis.com{0}?'.format(path) +
-          urlparse.urlencode(values))
-
-
-def download_corpora_steps(project_name):
-  """Returns GCB steps for downloading corpora backups for the given project.
-  """
-  fuzz_targets = _get_targets_list(project_name)
-  if not fuzz_targets:
-    sys.stderr.write('No fuzz targets found for project "%s".\n' % project_name)
-    return None
-
-  steps = []
-  # Split fuzz targets into batches of CORPUS_DOWNLOAD_BATCH_SIZE.
-  for i in range(0, len(fuzz_targets), CORPUS_DOWNLOAD_BATCH_SIZE):
-    download_corpus_args = []
-    for binary_name in fuzz_targets[i:i + CORPUS_DOWNLOAD_BATCH_SIZE]:
-      qualified_name = binary_name
-      qualified_name_prefix = '%s_' % project_name
-      if not binary_name.startswith(qualified_name_prefix):
-        qualified_name = qualified_name_prefix + binary_name
-
-      url = get_signed_url(CORPUS_BACKUP_URL.format(project=project_name,
-                                                    fuzzer=qualified_name),
-                           method='GET')
-
-      corpus_archive_path = os.path.join('/corpus', binary_name + '.zip')
-      download_corpus_args.append('%s %s' % (corpus_archive_path, url))
-
-    steps.append({
-        'name': 'gcr.io/oss-fuzz-base/base-runner',
-        'entrypoint': 'download_corpus',
-        'args': download_corpus_args,
-        'volumes': [{
-            'name': 'corpus',
-            'path': '/corpus'
-        }],
-    })
-
-  return steps
-
-
-def http_upload_step(data, signed_url, content_type):
-  """Returns a GCB step to upload data to the given URL via GCS HTTP API."""
-  step = {
-      'name':
-          'gcr.io/cloud-builders/curl',
-      'args': [
-          '-H',
-          'Content-Type: ' + content_type,
-          '-X',
-          'PUT',
-          '-d',
-          data,
-          signed_url,
-      ],
-  }
-  return step
-
-
-def gsutil_rm_rf_step(url):
-  """Returns a GCB step to recursively delete the object with given GCS url."""
-  step = {
-      'name': 'gcr.io/cloud-builders/gsutil',
-      'entrypoint': 'sh',
-      'args': [
-          '-c',
-          'gsutil -m rm -rf %s || exit 0' % url,
-      ],
-  }
-  return step
-
-
-def project_image_steps(name, image, language):
-  """Returns GCB steps to build OSS-Fuzz project image."""
-  steps = [{
-      'args': [
-          'clone',
-          'https://github.com/google/oss-fuzz.git',
-      ],
-      'name': 'gcr.io/cloud-builders/git',
-  }, {
-      'name': 'gcr.io/cloud-builders/docker',
-      'args': [
-          'build',
-          '-t',
-          image,
-          '.',
-      ],
-      'dir': 'oss-fuzz/projects/' + name,
-  }, {
-      'name':
-          image,
-      'args': [
-          'bash', '-c',
-          'srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json'
-      ],
-      'env': [
-          'OSSFUZZ_REVISION=$REVISION_ID',
-          'FUZZING_LANGUAGE=%s' % language,
-      ],
-  }]
-
-  return steps
diff --git a/infra/build/functions/build_project.py b/infra/build/functions/build_project.py
deleted file mode 100644
index 9115c85..0000000
--- a/infra/build/functions/build_project.py
+++ /dev/null
@@ -1,449 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-#!/usr/bin/python2
-"""Starts project build on Google Cloud Builder.
-
-Usage: build_project.py <project_dir>
-"""
-
-from __future__ import print_function
-
-import datetime
-import json
-import logging
-import os
-import re
-import sys
-
-import six
-import yaml
-
-from oauth2client.client import GoogleCredentials
-from googleapiclient.discovery import build
-
-import build_lib
-
-FUZZING_BUILD_TAG = 'fuzzing'
-
-GCB_LOGS_BUCKET = 'oss-fuzz-gcb-logs'
-
-CONFIGURATIONS = {
-    'sanitizer-address': ['SANITIZER=address'],
-    'sanitizer-dataflow': ['SANITIZER=dataflow'],
-    'sanitizer-memory': ['SANITIZER=memory'],
-    'sanitizer-undefined': ['SANITIZER=undefined'],
-    'engine-libfuzzer': ['FUZZING_ENGINE=libfuzzer'],
-    'engine-afl': ['FUZZING_ENGINE=afl'],
-    'engine-honggfuzz': ['FUZZING_ENGINE=honggfuzz'],
-    'engine-dataflow': ['FUZZING_ENGINE=dataflow'],
-    'engine-none': ['FUZZING_ENGINE=none'],
-}
-
-DEFAULT_ARCHITECTURES = ['x86_64']
-DEFAULT_ENGINES = ['libfuzzer', 'afl', 'honggfuzz']
-DEFAULT_SANITIZERS = ['address', 'undefined']
-
-LATEST_VERSION_FILENAME = 'latest.version'
-LATEST_VERSION_CONTENT_TYPE = 'text/plain'
-
-QUEUE_TTL_SECONDS = 60 * 60 * 24  # 24 hours.
-
-
-def usage():
-  """Exit with code 1 and display syntax to use this file."""
-  sys.stderr.write('Usage: ' + sys.argv[0] + ' <project_dir>\n')
-  sys.exit(1)
-
-
-def set_yaml_defaults(project_name, project_yaml, image_project):
-  """Set project.yaml's default parameters."""
-  project_yaml.setdefault('disabled', False)
-  project_yaml.setdefault('name', project_name)
-  project_yaml.setdefault('image',
-                          'gcr.io/{0}/{1}'.format(image_project, project_name))
-  project_yaml.setdefault('architectures', DEFAULT_ARCHITECTURES)
-  project_yaml.setdefault('sanitizers', DEFAULT_SANITIZERS)
-  project_yaml.setdefault('fuzzing_engines', DEFAULT_ENGINES)
-  project_yaml.setdefault('run_tests', True)
-  project_yaml.setdefault('coverage_extra_args', '')
-  project_yaml.setdefault('labels', {})
-
-
-def is_supported_configuration(fuzzing_engine, sanitizer, architecture):
-  """Check if the given configuration is supported."""
-  fuzzing_engine_info = build_lib.ENGINE_INFO[fuzzing_engine]
-  if architecture == 'i386' and sanitizer != 'address':
-    return False
-  return (sanitizer in fuzzing_engine_info.supported_sanitizers and
-          architecture in fuzzing_engine_info.supported_architectures)
-
-
-def get_sanitizers(project_yaml):
-  """Retrieve sanitizers from project.yaml."""
-  sanitizers = project_yaml['sanitizers']
-  assert isinstance(sanitizers, list)
-
-  processed_sanitizers = []
-  for sanitizer in sanitizers:
-    if isinstance(sanitizer, six.string_types):
-      processed_sanitizers.append(sanitizer)
-    elif isinstance(sanitizer, dict):
-      for key in sanitizer.keys():
-        processed_sanitizers.append(key)
-
-  return processed_sanitizers
-
-
-def workdir_from_dockerfile(dockerfile_lines):
-  """Parse WORKDIR from the Dockerfile."""
-  workdir_regex = re.compile(r'\s*WORKDIR\s*([^\s]+)')
-  for line in dockerfile_lines:
-    match = re.match(workdir_regex, line)
-    if match:
-      # We need to escape '$' since they're used for subsitutions in Container
-      # Builer builds.
-      return match.group(1).replace('$', '$$')
-
-  return None
-
-
-def load_project_yaml(project_name, project_yaml_file, image_project):
-  """Loads project yaml and sets default values."""
-  project_yaml = yaml.safe_load(project_yaml_file)
-  set_yaml_defaults(project_name, project_yaml, image_project)
-  return project_yaml
-
-
-# pylint: disable=too-many-locals, too-many-statements, too-many-branches
-def get_build_steps(project_name, project_yaml_file, dockerfile_lines,
-                    image_project, base_images_project):
-  """Returns build steps for project."""
-  project_yaml = load_project_yaml(project_name, project_yaml_file,
-                                   image_project)
-
-  if project_yaml['disabled']:
-    logging.info('Project "%s" is disabled.', project_name)
-    return []
-
-  name = project_yaml['name']
-  image = project_yaml['image']
-  language = project_yaml['language']
-  run_tests = project_yaml['run_tests']
-  time_stamp = datetime.datetime.now().strftime('%Y%m%d%H%M')
-
-  build_steps = build_lib.project_image_steps(name, image, language)
-  # Copy over MSan instrumented libraries.
-  build_steps.append({
-      'name': 'gcr.io/{0}/msan-libs-builder'.format(base_images_project),
-      'args': [
-          'bash',
-          '-c',
-          'cp -r /msan /workspace',
-      ],
-  })
-
-  for fuzzing_engine in project_yaml['fuzzing_engines']:
-    for sanitizer in get_sanitizers(project_yaml):
-      for architecture in project_yaml['architectures']:
-        if not is_supported_configuration(fuzzing_engine, sanitizer,
-                                          architecture):
-          continue
-
-        env = CONFIGURATIONS['engine-' + fuzzing_engine][:]
-        env.extend(CONFIGURATIONS['sanitizer-' + sanitizer])
-        out = '/workspace/out/' + sanitizer
-        stamped_name = '-'.join([name, sanitizer, time_stamp])
-        latest_version_file = '-'.join(
-            [name, sanitizer, LATEST_VERSION_FILENAME])
-        zip_file = stamped_name + '.zip'
-        stamped_srcmap_file = stamped_name + '.srcmap.json'
-        bucket = build_lib.ENGINE_INFO[fuzzing_engine].upload_bucket
-        if architecture != 'x86_64':
-          bucket += '-' + architecture
-
-        upload_url = build_lib.get_signed_url(
-            build_lib.GCS_UPLOAD_URL_FORMAT.format(bucket, name, zip_file))
-        srcmap_url = build_lib.get_signed_url(
-            build_lib.GCS_UPLOAD_URL_FORMAT.format(bucket, name,
-                                                   stamped_srcmap_file))
-        latest_version_url = build_lib.GCS_UPLOAD_URL_FORMAT.format(
-            bucket, name, latest_version_file)
-        latest_version_url = build_lib.get_signed_url(
-            latest_version_url, content_type=LATEST_VERSION_CONTENT_TYPE)
-
-        targets_list_filename = build_lib.get_targets_list_filename(sanitizer)
-        targets_list_url = build_lib.get_signed_url(
-            build_lib.get_targets_list_url(bucket, name, sanitizer))
-
-        env.append('OUT=' + out)
-        env.append('MSAN_LIBS_PATH=/workspace/msan')
-        env.append('ARCHITECTURE=' + architecture)
-        env.append('FUZZING_LANGUAGE=' + language)
-
-        workdir = workdir_from_dockerfile(dockerfile_lines)
-        if not workdir:
-          workdir = '/src'
-
-        failure_msg = ('*' * 80 + '\nFailed to build.\nTo reproduce, run:\n'
-                       'python infra/helper.py build_image {name}\n'
-                       'python infra/helper.py build_fuzzers --sanitizer '
-                       '{sanitizer} --engine {engine} --architecture '
-                       '{architecture} {name}\n' + '*' * 80).format(
-                           name=name,
-                           sanitizer=sanitizer,
-                           engine=fuzzing_engine,
-                           architecture=architecture)
-
-        build_steps.append(
-            # compile
-            {
-                'name':
-                    image,
-                'env':
-                    env,
-                'args': [
-                    'bash',
-                    '-c',
-                    # Remove /out to break loudly when a build script
-                    # incorrectly uses /out instead of $OUT.
-                    # `cd /src && cd {workdir}` (where {workdir} is parsed from
-                    # the Dockerfile). Container Builder overrides our workdir
-                    # so we need to add this step to set it back.
-                    ('rm -r /out && cd /src && cd {workdir} && mkdir -p {out} '
-                     '&& compile || (echo "{failure_msg}" && false)'
-                    ).format(workdir=workdir, out=out, failure_msg=failure_msg),
-                ],
-            })
-
-        if sanitizer == 'memory':
-          # Patch dynamic libraries to use instrumented ones.
-          build_steps.append({
-              'name':
-                  'gcr.io/{0}/msan-libs-builder'.format(base_images_project),
-              'args': [
-                  'bash',
-                  '-c',
-                  # TODO(ochang): Replace with just patch_build.py once
-                  # permission in image is fixed.
-                  'python /usr/local/bin/patch_build.py {0}'.format(out),
-              ],
-          })
-
-        if run_tests:
-          failure_msg = ('*' * 80 + '\nBuild checks failed.\n'
-                         'To reproduce, run:\n'
-                         'python infra/helper.py build_image {name}\n'
-                         'python infra/helper.py build_fuzzers --sanitizer '
-                         '{sanitizer} --engine {engine} --architecture '
-                         '{architecture} {name}\n'
-                         'python infra/helper.py check_build --sanitizer '
-                         '{sanitizer} --engine {engine} --architecture '
-                         '{architecture} {name}\n' + '*' * 80).format(
-                             name=name,
-                             sanitizer=sanitizer,
-                             engine=fuzzing_engine,
-                             architecture=architecture)
-
-          build_steps.append(
-              # test binaries
-              {
-                  'name':
-                      'gcr.io/{0}/base-runner'.format(base_images_project),
-                  'env':
-                      env,
-                  'args': [
-                      'bash', '-c',
-                      'test_all.py || (echo "{0}" && false)'.format(failure_msg)
-                  ],
-              })
-
-        if project_yaml['labels']:
-          # write target labels
-          build_steps.append({
-              'name':
-                  image,
-              'env':
-                  env,
-              'args': [
-                  '/usr/local/bin/write_labels.py',
-                  json.dumps(project_yaml['labels']),
-                  out,
-              ],
-          })
-
-        if sanitizer == 'dataflow' and fuzzing_engine == 'dataflow':
-          dataflow_steps = dataflow_post_build_steps(name, env,
-                                                     base_images_project)
-          if dataflow_steps:
-            build_steps.extend(dataflow_steps)
-          else:
-            sys.stderr.write('Skipping dataflow post build steps.\n')
-
-        build_steps.extend([
-            # generate targets list
-            {
-                'name':
-                    'gcr.io/{0}/base-runner'.format(base_images_project),
-                'env':
-                    env,
-                'args': [
-                    'bash',
-                    '-c',
-                    'targets_list > /workspace/{0}'.format(
-                        targets_list_filename),
-                ],
-            },
-            # zip binaries
-            {
-                'name':
-                    image,
-                'args': [
-                    'bash', '-c',
-                    'cd {out} && zip -r {zip_file} *'.format(out=out,
-                                                             zip_file=zip_file)
-                ],
-            },
-            # upload srcmap
-            {
-                'name': 'gcr.io/{0}/uploader'.format(base_images_project),
-                'args': [
-                    '/workspace/srcmap.json',
-                    srcmap_url,
-                ],
-            },
-            # upload binaries
-            {
-                'name': 'gcr.io/{0}/uploader'.format(base_images_project),
-                'args': [
-                    os.path.join(out, zip_file),
-                    upload_url,
-                ],
-            },
-            # upload targets list
-            {
-                'name':
-                    'gcr.io/{0}/uploader'.format(base_images_project),
-                'args': [
-                    '/workspace/{0}'.format(targets_list_filename),
-                    targets_list_url,
-                ],
-            },
-            # upload the latest.version file
-            build_lib.http_upload_step(zip_file, latest_version_url,
-                                       LATEST_VERSION_CONTENT_TYPE),
-            # cleanup
-            {
-                'name': image,
-                'args': [
-                    'bash',
-                    '-c',
-                    'rm -r ' + out,
-                ],
-            },
-        ])
-
-  return build_steps
-
-
-def dataflow_post_build_steps(project_name, env, base_images_project):
-  """Appends dataflow post build steps."""
-  steps = build_lib.download_corpora_steps(project_name)
-  if not steps:
-    return None
-
-  steps.append({
-      'name':
-          'gcr.io/{0}/base-runner'.format(base_images_project),
-      'env':
-          env + [
-              'COLLECT_DFT_TIMEOUT=2h',
-              'DFT_FILE_SIZE_LIMIT=65535',
-              'DFT_MIN_TIMEOUT=2.0',
-              'DFT_TIMEOUT_RANGE=6.0',
-          ],
-      'args': [
-          'bash', '-c',
-          ('for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*}; done && '
-           'collect_dft || (echo "DFT collection failed." && false)')
-      ],
-      'volumes': [{
-          'name': 'corpus',
-          'path': '/corpus'
-      }],
-  })
-  return steps
-
-
-def get_logs_url(build_id, image_project='oss-fuzz'):
-  """Returns url where logs are displayed for the build."""
-  url_format = ('https://console.developers.google.com/logs/viewer?'
-                'resource=build%2Fbuild_id%2F{0}&project={1}')
-  return url_format.format(build_id, image_project)
-
-
-# pylint: disable=no-member
-def run_build(build_steps, project_name, tag):
-  """Run the build for given steps on cloud build."""
-  options = {}
-  if 'GCB_OPTIONS' in os.environ:
-    options = yaml.safe_load(os.environ['GCB_OPTIONS'])
-
-  build_body = {
-      'steps': build_steps,
-      'timeout': str(build_lib.BUILD_TIMEOUT) + 's',
-      'options': options,
-      'logsBucket': GCB_LOGS_BUCKET,
-      'tags': [project_name + '-' + tag,],
-      'queueTtl': str(QUEUE_TTL_SECONDS) + 's',
-  }
-
-  credentials = GoogleCredentials.get_application_default()
-  cloudbuild = build('cloudbuild',
-                     'v1',
-                     credentials=credentials,
-                     cache_discovery=False)
-  build_info = cloudbuild.projects().builds().create(projectId='oss-fuzz',
-                                                     body=build_body).execute()
-  build_id = build_info['metadata']['build']['id']
-
-  print('Logs:', get_logs_url(build_id), file=sys.stderr)
-  print(build_id)
-
-
-def main():
-  """Build and run projects."""
-  if len(sys.argv) != 2:
-    usage()
-
-  image_project = 'oss-fuzz'
-  base_images_project = 'oss-fuzz-base'
-  project_dir = sys.argv[1].rstrip(os.path.sep)
-  dockerfile_path = os.path.join(project_dir, 'Dockerfile')
-  project_yaml_path = os.path.join(project_dir, 'project.yaml')
-  project_name = os.path.basename(project_dir)
-
-  with open(dockerfile_path) as dockerfile:
-    dockerfile_lines = dockerfile.readlines()
-
-  with open(project_yaml_path) as project_yaml_file:
-    steps = get_build_steps(project_name, project_yaml_file, dockerfile_lines,
-                            image_project, base_images_project)
-
-  run_build(steps, project_name, FUZZING_BUILD_TAG)
-
-
-if __name__ == '__main__':
-  main()
diff --git a/infra/build/functions/datastore_entities.py b/infra/build/functions/datastore_entities.py
deleted file mode 100644
index 550ab82..0000000
--- a/infra/build/functions/datastore_entities.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud datastore entity classes."""
-from google.cloud import ndb
-
-
-# pylint: disable=too-few-public-methods
-class Project(ndb.Model):
-  """Represents an integrated OSS-Fuzz project."""
-  name = ndb.StringProperty()
-  schedule = ndb.StringProperty()
-  project_yaml_contents = ndb.TextProperty()
-  dockerfile_contents = ndb.TextProperty()
-
-
-# pylint: disable=too-few-public-methods
-class GithubCreds(ndb.Model):
-  """Represents GitHub credentials."""
-  client_id = ndb.StringProperty()
-  client_secret = ndb.StringProperty()
-
-
-# pylint: disable=too-few-public-methods
-class BuildsHistory(ndb.Model):
-  """Container for build history of projects."""
-  build_tag = ndb.StringProperty()
-  project = ndb.StringProperty()
-  build_ids = ndb.StringProperty(repeated=True)
-
-
-class LastSuccessfulBuild(ndb.Model):
-  """Container for storing last successful build of project."""
-  build_tag = ndb.StringProperty()
-  project = ndb.StringProperty()
-  build_id = ndb.StringProperty()
-  finish_time = ndb.StringProperty()
diff --git a/infra/build/functions/deploy.sh b/infra/build/functions/deploy.sh
deleted file mode 100755
index ea094e3..0000000
--- a/infra/build/functions/deploy.sh
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/bin/bash -ex
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-BASE_IMAGE_JOB_TOPIC=schedule-base-image-build
-BASE_IMAGE_SCHEDULER_JOB=base-image-scheduler
-BASE_IMAGE_SCHEDULE="0 3 * * *"
-BASE_IMAGE_MESSAGE="Start base image build"
-
-BUILD_JOB_TOPIC=request-build
-
-COVERAGE_BUILD_JOB_TOPIC=request-coverage-build
-
-SYNC_JOB_TOPIC=schedule-project-sync
-SYNC_SCHEDULER_JOB=sync-scheduler
-SYNC_JOB_SCHEDULE="*/30 * * * *"
-SYNC_MESSAGE="Start Sync"
-
-UPDATE_BUILD_JOB_TOPIC=builds-status
-UPDATE_BUILD_SCHEDULER_JOB=builds-status-scheduler
-UPDATE_BUILD_JOB_SCHEDULE="*/30 * * * *"
-
-
-function deploy_pubsub_topic {
-	topic=$1
-	project=$2
-
-	if ! gcloud pubsub topics describe $topic --project $project ;
-		then
-			gcloud pubsub topics create $topic \
-			--project $project
-	fi
-}
-
-function deploy_scheduler {
-	scheduler_name=$1
-	schedule="$2"
-	topic=$3
-	message="$4"
-	project=$5
-
-	if gcloud scheduler jobs describe $scheduler_name --project $project ;
-		then
-			gcloud scheduler jobs update pubsub $scheduler_name \
-			--project $project \
-			--schedule "$schedule" \
-			--topic $topic \
-			--message-body "$message"
-		else
-			gcloud scheduler jobs create pubsub $scheduler_name \
-			--project $project \
-			--schedule "$schedule" \
-			--topic $topic \
-			--message-body "$message"
-	fi
-}
-
-function deploy_cloud_function {
-	name=$1
-	entry_point=$2
-	topic=$3
-	project=$4
-
-	gcloud functions deploy $name \
-	--entry-point $entry_point \
-	--trigger-topic $topic \
-	--runtime python38 \
-	--project $project \
-	--timeout 540 \
-  --region us-central1 \
-  --set-env-vars GCP_PROJECT=$project,FUNCTION_REGION=us-central1 \
-  --max-instances 1
-}
-
-if [ $# == 1 ]; then
-	PROJECT_ID=$1
-else
-	echo -e "\n Usage ./deploy.sh <project-name>"; exit;
-fi
-
-deploy_pubsub_topic $BUILD_JOB_TOPIC $PROJECT_ID
-deploy_pubsub_topic $SYNC_JOB_TOPIC $PROJECT_ID
-deploy_pubsub_topic $BASE_IMAGE_JOB_TOPIC $PROJECT_ID
-deploy_pubsub_topic $COVERAGE_BUILD_JOB_TOPIC $PROJECT_ID
-deploy_pubsub_topic $UPDATE_BUILD_JOB_TOPIC $PROJECT_ID
-
-deploy_scheduler $SYNC_SCHEDULER_JOB \
-				 "$SYNC_JOB_SCHEDULE" \
-				 $SYNC_JOB_TOPIC \
-				 "$SYNC_MESSAGE" \
-				  $PROJECT_ID
-
-deploy_scheduler $BASE_IMAGE_SCHEDULER_JOB \
-				 "$BASE_IMAGE_SCHEDULE" \
-				  $BASE_IMAGE_JOB_TOPIC \
-				  "$BASE_IMAGE_MESSAGE" \
-				  $PROJECT_ID
-
-deploy_scheduler $UPDATE_BUILD_SCHEDULER_JOB-fuzzing \
-				 "$UPDATE_BUILD_JOB_SCHEDULE" \
-				 $UPDATE_BUILD_JOB_TOPIC \
-				 "fuzzing" \
-				 $PROJECT_ID
-deploy_scheduler $UPDATE_BUILD_SCHEDULER_JOB-coverage \
-				 "$UPDATE_BUILD_JOB_SCHEDULE" \
-				 $UPDATE_BUILD_JOB_TOPIC \
-				 "coverage" \
-				 $PROJECT_ID
-deploy_scheduler $UPDATE_BUILD_SCHEDULER_JOB-badges \
-				 "$UPDATE_BUILD_JOB_SCHEDULE" \
-				 $UPDATE_BUILD_JOB_TOPIC \
-				 "badges" \
-				 $PROJECT_ID
-
-deploy_cloud_function sync \
-					  sync \
-					  $SYNC_JOB_TOPIC \
-					  $PROJECT_ID
-
-deploy_cloud_function base-image-build \
-					  build_base_images \
-					  $BASE_IMAGE_JOB_TOPIC \
-					  $PROJECT_ID
-
-deploy_cloud_function base-msan-build \
-					  build_msan \
-					  $BASE_IMAGE_JOB_TOPIC \
-					  $PROJECT_ID
-
-deploy_cloud_function request-build \
-					  build_project \
-					  $BUILD_JOB_TOPIC \
-					  $PROJECT_ID
-
-deploy_cloud_function request-coverage-build \
-					  coverage_build \
-					  $COVERAGE_BUILD_JOB_TOPIC \
-					  $PROJECT_ID
-
-deploy_cloud_function update-builds \
-					  builds_status \
-					  $UPDATE_BUILD_JOB_TOPIC \
-					  $PROJECT_ID
-
-gcloud datastore indexes create index.yaml --project $PROJECT_ID
diff --git a/infra/build/functions/expected_build_steps.json b/infra/build/functions/expected_build_steps.json
deleted file mode 100644
index da9c636..0000000
--- a/infra/build/functions/expected_build_steps.json
+++ /dev/null
@@ -1,330 +0,0 @@
-[
-  {
-    "args": [
-      "clone",
-      "https://github.com/google/oss-fuzz.git"
-    ],
-    "name": "gcr.io/cloud-builders/git"
-  },
-  {
-    "name": "gcr.io/cloud-builders/docker",
-    "args": [
-      "build",
-      "-t",
-      "gcr.io/oss-fuzz/test-project",
-      "."
-    ],
-    "dir": "oss-fuzz/projects/test-project"
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json"
-    ],
-    "env": [
-      "OSSFUZZ_REVISION=$REVISION_ID",
-      "FUZZING_LANGUAGE=c++"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/msan-libs-builder",
-    "args": [
-      "bash",
-      "-c",
-      "cp -r /msan /workspace"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "env": [
-      "FUZZING_ENGINE=libfuzzer",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/address && compile || (echo \"********************************************************************************\nFailed to build.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=libfuzzer",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "test_all.py || (echo \"********************************************************************************\nBuild checks failed.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine libfuzzer --architecture x86_64 test-project\npython infra/helper.py check_build --sanitizer address --engine libfuzzer --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=libfuzzer",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "targets_list > /workspace/targets.list.address"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "cd /workspace/out/address && zip -r test-project-address-202001010000.zip *"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/srcmap.json",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/out/address/test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/targets.list.address",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/curl",
-    "args": [
-      "-H",
-      "Content-Type: text/plain",
-      "-X",
-      "PUT",
-      "-d",
-      "test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /workspace/out/address"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "env": [
-      "FUZZING_ENGINE=afl",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/address && compile || (echo \"********************************************************************************\nFailed to build.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine afl --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=afl",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "test_all.py || (echo \"********************************************************************************\nBuild checks failed.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine afl --architecture x86_64 test-project\npython infra/helper.py check_build --sanitizer address --engine afl --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=afl",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "targets_list > /workspace/targets.list.address"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "cd /workspace/out/address && zip -r test-project-address-202001010000.zip *"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/srcmap.json",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/out/address/test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/targets.list.address",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/curl",
-    "args": [
-      "-H",
-      "Content-Type: text/plain",
-      "-X",
-      "PUT",
-      "-d",
-      "test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /workspace/out/address"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "env": [
-      "FUZZING_ENGINE=honggfuzz",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/address && compile || (echo \"********************************************************************************\nFailed to build.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine honggfuzz --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=honggfuzz",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "test_all.py || (echo \"********************************************************************************\nBuild checks failed.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer address --engine honggfuzz --architecture x86_64 test-project\npython infra/helper.py check_build --sanitizer address --engine honggfuzz --architecture x86_64 test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=honggfuzz",
-      "SANITIZER=address",
-      "OUT=/workspace/out/address",
-      "MSAN_LIBS_PATH=/workspace/msan",
-      "ARCHITECTURE=x86_64",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "targets_list > /workspace/targets.list.address"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "cd /workspace/out/address && zip -r test-project-address-202001010000.zip *"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/srcmap.json",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/out/address/test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/uploader",
-    "args": [
-      "/workspace/targets.list.address",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/curl",
-    "args": [
-      "-H",
-      "Content-Type: text/plain",
-      "-X",
-      "PUT",
-      "-d",
-      "test-project-address-202001010000.zip",
-      "test_url"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /workspace/out/address"
-    ]
-  }
-]
diff --git a/infra/build/functions/expected_coverage_build_steps.json b/infra/build/functions/expected_coverage_build_steps.json
deleted file mode 100644
index 19b1d5b..0000000
--- a/infra/build/functions/expected_coverage_build_steps.json
+++ /dev/null
@@ -1,144 +0,0 @@
-[
-  {
-    "args": [
-      "clone",
-      "https://github.com/google/oss-fuzz.git"
-    ],
-    "name": "gcr.io/cloud-builders/git"
-  },
-  {
-    "name": "gcr.io/cloud-builders/docker",
-    "args": [
-      "build",
-      "-t",
-      "gcr.io/oss-fuzz/test-project",
-      "."
-    ],
-    "dir": "oss-fuzz/projects/test-project"
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "args": [
-      "bash",
-      "-c",
-      "srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json"
-    ],
-    "env": [
-      "OSSFUZZ_REVISION=$REVISION_ID",
-      "FUZZING_LANGUAGE=c++"
-    ]
-  },
-  {
-    "name": "gcr.io/oss-fuzz/test-project",
-    "env": [
-      "FUZZING_ENGINE=libfuzzer",
-      "SANITIZER=coverage",
-      "OUT=/workspace/out/coverage",
-      "FUZZING_LANGUAGE=c++"
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "rm -r /out && cd /src && cd /src && mkdir -p /workspace/out/coverage && compile || (echo \"********************************************************************************\nCoverage build failed.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer coverage test-project\n********************************************************************************\" && false)"
-    ]
-  },
-  {
-    "url": "test_download"
-  },
-  {
-    "name": "gcr.io/oss-fuzz-base/base-runner",
-    "env": [
-      "FUZZING_ENGINE=libfuzzer",
-      "SANITIZER=coverage",
-      "OUT=/workspace/out/coverage",
-      "FUZZING_LANGUAGE=c++",
-      "HTTP_PORT=",
-      "COVERAGE_EXTRA_ARGS="
-    ],
-    "args": [
-      "bash",
-      "-c",
-      "for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*} || (echo \"Failed to unpack the corpus for $(basename ${f%%.*}). This usually means that corpus backup for a particular fuzz target does not exist. If a fuzz target was added in the last 24 hours, please wait one more day. Otherwise, something is wrong with the fuzz target or the infrastructure, and corpus pruning task does not finish successfully.\" && exit 1); done && coverage || (echo \"********************************************************************************\nCode coverage report generation failed.\nTo reproduce, run:\npython infra/helper.py build_image test-project\npython infra/helper.py build_fuzzers --sanitizer coverage test-project\npython infra/helper.py coverage test-project\n********************************************************************************\" && false)"
-    ],
-    "volumes": [
-      {
-        "name": "corpus",
-        "path": "/corpus"
-      }
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "entrypoint": "sh",
-    "args": [
-      "-c",
-      "gsutil -m rm -rf gs://oss-fuzz-coverage/test-project/reports/20200101 || exit 0"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "args": [
-      "-m",
-      "cp",
-      "-r",
-      "/workspace/out/coverage/report",
-      "gs://oss-fuzz-coverage/test-project/reports/20200101"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "entrypoint": "sh",
-    "args": [
-      "-c",
-      "gsutil -m rm -rf gs://oss-fuzz-coverage/test-project/fuzzer_stats/20200101 || exit 0"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "args": [
-      "-m",
-      "cp",
-      "-r",
-      "/workspace/out/coverage/fuzzer_stats",
-      "gs://oss-fuzz-coverage/test-project/fuzzer_stats/20200101"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "entrypoint": "sh",
-    "args": [
-      "-c",
-      "gsutil -m rm -rf gs://oss-fuzz-coverage/test-project/logs/20200101 || exit 0"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "args": [
-      "-m",
-      "cp",
-      "-r",
-      "/workspace/out/coverage/logs",
-      "gs://oss-fuzz-coverage/test-project/logs/20200101"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/gsutil",
-    "args": [
-      "cp",
-      "/workspace/srcmap.json",
-      "gs://oss-fuzz-coverage/test-project/srcmap/20200101.json"
-    ]
-  },
-  {
-    "name": "gcr.io/cloud-builders/curl",
-    "args": [
-      "-H",
-      "Content-Type: application/json",
-      "-X",
-      "PUT",
-      "-d",
-      "{\"fuzzer_stats_dir\": \"gs://oss-fuzz-coverage/test-project/fuzzer_stats/20200101\", \"html_report_url\": \"https://storage.googleapis.com/oss-fuzz-coverage/test-project/reports/20200101/linux/index.html\", \"report_date\": \"20200101\", \"report_summary_path\": \"gs://oss-fuzz-coverage/test-project/reports/20200101/linux/summary.json\"}",
-      "test_url"
-    ]
-  }
-]
\ No newline at end of file
diff --git a/infra/build/functions/index.yaml b/infra/build/functions/index.yaml
deleted file mode 100644
index 260bee2..0000000
--- a/infra/build/functions/index.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-indexes:
-  - kind: BuildsHistory
-    properties:
-      - name: build_tag
-      - name: project
diff --git a/infra/build/functions/main.py b/infra/build/functions/main.py
deleted file mode 100644
index 1bfd358..0000000
--- a/infra/build/functions/main.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud functions for build infrastructure."""
-
-import base_images
-import project_sync
-import request_build
-import request_coverage_build
-import update_build_status
-
-
-def build_project(event, context):
-  """Entry point for cloud function to requesting project builds."""
-  request_build.request_build(event, context)
-
-
-def sync(event, context):
-  """Entry point for cloud function that syncs projects from github."""
-  project_sync.sync(event, context)
-
-
-def build_base_images(event, context):
-  """Entry point for cloud function that builds base images."""
-  base_images.base_builder(event, context)
-
-
-def coverage_build(event, context):
-  """Entry point for cloud function to build coverage reports."""
-  request_coverage_build.request_coverage_build(event, context)
-
-
-def builds_status(event, context):
-  """Entry point for builds status cloud function."""
-  update_build_status.update_status(event, context)
-
-
-def build_msan(event, context):
-  """Entry point for base msan builder."""
-  base_images.base_msan_builder(event, context)
diff --git a/infra/build/functions/project_sync.py b/infra/build/functions/project_sync.py
deleted file mode 100644
index debdbbd..0000000
--- a/infra/build/functions/project_sync.py
+++ /dev/null
@@ -1,243 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud functions for build scheduling."""
-
-from collections import namedtuple
-import logging
-import os
-import re
-import yaml
-
-from github import Github
-from google.api_core import exceptions
-from google.cloud import ndb
-from google.cloud import scheduler_v1
-
-import build_and_run_coverage
-import build_project
-from datastore_entities import GithubCreds
-from datastore_entities import Project
-
-VALID_PROJECT_NAME = re.compile(r'^[a-zA-Z0-9_-]+$')
-DEFAULT_BUILDS_PER_DAY = 1
-MAX_BUILDS_PER_DAY = 4
-COVERAGE_SCHEDULE = '0 6 * * *'
-FUZZING_BUILD_TOPIC = 'request-build'
-COVERAGE_BUILD_TOPIC = 'request-coverage-build'
-
-ProjectMetadata = namedtuple(
-    'ProjectMetadata', 'schedule project_yaml_contents dockerfile_contents')
-
-
-class ProjectYamlError(Exception):
-  """Error in project.yaml format."""
-
-
-def create_scheduler(cloud_scheduler_client, project_name, schedule, tag,
-                     topic):
-  """Creates schedulers for new projects."""
-  project_id = os.environ.get('GCP_PROJECT')
-  location_id = os.environ.get('FUNCTION_REGION')
-  parent = cloud_scheduler_client.location_path(project_id, location_id)
-  job = {
-      'name': parent + '/jobs/' + project_name + '-scheduler-' + tag,
-      'pubsub_target': {
-          'topic_name': 'projects/' + project_id + '/topics/' + topic,
-          'data': project_name.encode()
-      },
-      'schedule': schedule
-  }
-
-  cloud_scheduler_client.create_job(parent, job)
-
-
-def delete_scheduler(cloud_scheduler_client, project_name, tag):
-  """Deletes schedulers for projects that were removed."""
-  project_id = os.environ.get('GCP_PROJECT')
-  location_id = os.environ.get('FUNCTION_REGION')
-  name = cloud_scheduler_client.job_path(project_id, location_id,
-                                         project_name + '-scheduler-' + tag)
-  cloud_scheduler_client.delete_job(name)
-
-
-def update_scheduler(cloud_scheduler_client, project, schedule, tag):
-  """Updates schedule in case schedule was changed."""
-  project_id = os.environ.get('GCP_PROJECT')
-  location_id = os.environ.get('FUNCTION_REGION')
-  parent = cloud_scheduler_client.location_path(project_id, location_id)
-  job = {
-      'name': parent + '/jobs/' + project.name + '-scheduler-' + tag,
-      'pubsub_target': {
-          'topic_name': 'projects/' + project_id + '/topics/request-build',
-          'data': project.name.encode()
-      },
-      'schedule': schedule,
-  }
-
-  update_mask = {'paths': ['schedule']}
-  cloud_scheduler_client.update_job(job, update_mask)
-
-
-def delete_project(cloud_scheduler_client, project):
-  """Delete the given project."""
-  logging.info('Deleting project %s', project.name)
-  for tag in (build_project.FUZZING_BUILD_TAG,
-              build_and_run_coverage.COVERAGE_BUILD_TAG):
-    try:
-      delete_scheduler(cloud_scheduler_client, project.name, tag)
-    except exceptions.NotFound:
-      # Already deleted.
-      continue
-    except exceptions.GoogleAPICallError as error:
-      logging.error('Scheduler deletion for %s failed with %s', project.name,
-                    error)
-      return
-
-  project.key.delete()
-
-
-# pylint: disable=too-many-branches
-def sync_projects(cloud_scheduler_client, projects):
-  """Sync projects with cloud datastore."""
-  for project in Project.query():
-    if project.name not in projects:
-      delete_project(cloud_scheduler_client, project)
-
-  existing_projects = {project.name for project in Project.query()}
-  for project_name in projects:
-    if project_name in existing_projects:
-      continue
-
-    try:
-      create_scheduler(cloud_scheduler_client, project_name,
-                       projects[project_name].schedule,
-                       build_project.FUZZING_BUILD_TAG, FUZZING_BUILD_TOPIC)
-      create_scheduler(cloud_scheduler_client, project_name, COVERAGE_SCHEDULE,
-                       build_and_run_coverage.COVERAGE_BUILD_TAG,
-                       COVERAGE_BUILD_TOPIC)
-      project_metadata = projects[project_name]
-      Project(name=project_name,
-              schedule=project_metadata.schedule,
-              project_yaml_contents=project_metadata.project_yaml_contents,
-              dockerfile_contents=project_metadata.dockerfile_contents).put()
-    except exceptions.GoogleAPICallError as error:
-      logging.error('Scheduler creation for %s failed with %s', project_name,
-                    error)
-
-  for project in Project.query():
-    if project.name not in projects:
-      continue
-
-    logging.info('Setting up project %s', project.name)
-    project_metadata = projects[project.name]
-    project_changed = False
-    if project.schedule != project_metadata.schedule:
-      try:
-        logging.info('Schedule changed.')
-        update_scheduler(cloud_scheduler_client, project,
-                         projects[project.name].schedule,
-                         build_project.FUZZING_BUILD_TAG)
-        project.schedule = project_metadata.schedule
-        project_changed = True
-      except exceptions.GoogleAPICallError as error:
-        logging.error('Updating scheduler for %s failed with %s', project.name,
-                      error)
-    if project.project_yaml_contents != project_metadata.project_yaml_contents:
-      project.project_yaml_contents = project_metadata.project_yaml_contents
-      project_changed = True
-
-    if project.dockerfile_contents != project_metadata.dockerfile_contents:
-      project.dockerfile_contents = project_metadata.dockerfile_contents
-      project_changed = True
-
-    if project_changed:
-      project.put()
-
-
-def _has_docker_file(project_contents):
-  """Checks if project has a Dockerfile."""
-  return any(
-      content_file.name == 'Dockerfile' for content_file in project_contents)
-
-
-def get_project_metadata(project_contents):
-  """Checks for schedule parameter in yaml file else uses DEFAULT_SCHEDULE."""
-  for content_file in project_contents:
-    if content_file.name == 'project.yaml':
-      project_yaml_contents = content_file.decoded_content.decode('utf-8')
-
-    if content_file.name == 'Dockerfile':
-      dockerfile_contents = content_file.decoded_content.decode('utf-8')
-
-  project_yaml = yaml.safe_load(project_yaml_contents)
-  builds_per_day = project_yaml.get('builds_per_day', DEFAULT_BUILDS_PER_DAY)
-  if not isinstance(builds_per_day, int) or builds_per_day not in range(
-      1, MAX_BUILDS_PER_DAY + 1):
-    raise ProjectYamlError('Parameter is not an integer in range [1-4]')
-
-  # Starting at 6:00 am, next build schedules are added at 'interval' slots
-  # Example for interval 2, hours = [6, 18] and schedule = '0 6,18 * * *'
-  interval = 24 // builds_per_day
-  hours = []
-  for hour in range(6, 30, interval):
-    hours.append(hour % 24)
-  schedule = '0 ' + ','.join(str(hour) for hour in hours) + ' * * *'
-
-  return ProjectMetadata(schedule, project_yaml_contents, dockerfile_contents)
-
-
-def get_projects(repo):
-  """Get project list from git repository."""
-  projects = {}
-  contents = repo.get_contents('projects')
-  for content_file in contents:
-    if content_file.type != 'dir' or not VALID_PROJECT_NAME.match(
-        content_file.name):
-      continue
-
-    project_contents = repo.get_contents(content_file.path)
-    if not _has_docker_file(project_contents):
-      continue
-
-    try:
-      projects[content_file.name] = get_project_metadata(project_contents)
-    except ProjectYamlError as error:
-      logging.error(
-          'Incorrect format for project.yaml file of %s with error %s',
-          content_file.name, error)
-
-  return projects
-
-
-def get_github_creds():
-  """Retrieves GitHub client credentials."""
-  git_creds = GithubCreds.query().get()
-  if git_creds is None:
-    raise RuntimeError('Git credentials not available.')
-  return git_creds
-
-
-def sync(event, context):
-  """Sync projects with cloud datastore."""
-  del event, context  #unused
-
-  with ndb.Client().context():
-    git_creds = get_github_creds()
-    github_client = Github(git_creds.client_id, git_creds.client_secret)
-    repo = github_client.get_repo('google/oss-fuzz')
-    projects = get_projects(repo)
-    cloud_scheduler_client = scheduler_v1.CloudSchedulerClient()
-    sync_projects(cloud_scheduler_client, projects)
diff --git a/infra/build/functions/project_sync_test.py b/infra/build/functions/project_sync_test.py
deleted file mode 100644
index f907338..0000000
--- a/infra/build/functions/project_sync_test.py
+++ /dev/null
@@ -1,319 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Unit tests for Cloud Function sync, which syncs the list of github projects
-and uploads them to the Cloud Datastore."""
-
-import os
-import sys
-import unittest
-
-from google.cloud import ndb
-
-sys.path.append(os.path.dirname(__file__))
-# pylint: disable=wrong-import-position
-
-from datastore_entities import Project
-from project_sync import get_github_creds
-from project_sync import get_projects
-from project_sync import ProjectMetadata
-from project_sync import sync_projects
-import test_utils
-
-# pylint: disable=no-member
-
-
-# pylint: disable=too-few-public-methods
-class Repository:
-  """Mocking Github Repository."""
-
-  def __init__(self, name, file_type, path, contents=None):
-    self.contents = contents or []
-    self.name = name
-    self.type = file_type
-    self.path = path
-    self.decoded_content = b"name: test"
-
-  def get_contents(self, path):
-    """"Get contents of repository."""
-    if self.path == path:
-      return self.contents
-
-    for content_file in self.contents:
-      if content_file.path == path:
-        return content_file.contents
-
-    return None
-
-  def set_yaml_contents(self, decoded_content):
-    """Set yaml_contents."""
-    self.decoded_content = decoded_content
-
-
-class CloudSchedulerClient:
-  """Mocking cloud scheduler client."""
-
-  def __init__(self):
-    self.schedulers = []
-
-  # pylint: disable=no-self-use
-  def location_path(self, project_id, location_id):
-    """Return project path."""
-    return 'projects/{}/location/{}'.format(project_id, location_id)
-
-  def create_job(self, parent, job):
-    """Simulate create job."""
-    del parent
-    self.schedulers.append(job)
-
-  # pylint: disable=no-self-use
-  def job_path(self, project_id, location_id, name):
-    """Return job path."""
-    return 'projects/{}/location/{}/jobs/{}'.format(project_id, location_id,
-                                                    name)
-
-  def delete_job(self, name):
-    """Simulate delete jobs."""
-    for job in self.schedulers:
-      if job['name'] == name:
-        self.schedulers.remove(job)
-        break
-
-  def update_job(self, job, update_mask):
-    """Simulate update jobs."""
-    for existing_job in self.schedulers:
-      if existing_job == job:
-        job['schedule'] = update_mask['schedule']
-
-
-class TestDataSync(unittest.TestCase):
-  """Unit tests for sync."""
-
-  @classmethod
-  def setUpClass(cls):
-    cls.ds_emulator = test_utils.start_datastore_emulator()
-    test_utils.wait_for_emulator_ready(cls.ds_emulator, 'datastore',
-                                       test_utils.DATASTORE_READY_INDICATOR)
-    test_utils.set_gcp_environment()
-
-  def setUp(self):
-    test_utils.reset_ds_emulator()
-
-  def test_sync_projects_update(self):
-    """Testing sync_projects() updating a schedule."""
-    cloud_scheduler_client = CloudSchedulerClient()
-
-    with ndb.Client().context():
-      Project(name='test1',
-              schedule='0 8 * * *',
-              project_yaml_contents='',
-              dockerfile_contents='').put()
-      Project(name='test2',
-              schedule='0 9 * * *',
-              project_yaml_contents='',
-              dockerfile_contents='').put()
-
-      projects = {
-          'test1': ProjectMetadata('0 8 * * *', '', ''),
-          'test2': ProjectMetadata('0 7 * * *', '', '')
-      }
-      sync_projects(cloud_scheduler_client, projects)
-
-      projects_query = Project.query()
-      self.assertEqual({
-          'test1': '0 8 * * *',
-          'test2': '0 7 * * *'
-      }, {project.name: project.schedule for project in projects_query})
-
-  def test_sync_projects_create(self):
-    """"Testing sync_projects() creating new schedule."""
-    cloud_scheduler_client = CloudSchedulerClient()
-
-    with ndb.Client().context():
-      Project(name='test1',
-              schedule='0 8 * * *',
-              project_yaml_contents='',
-              dockerfile_contents='').put()
-
-      projects = {
-          'test1': ProjectMetadata('0 8 * * *', '', ''),
-          'test2': ProjectMetadata('0 7 * * *', '', '')
-      }
-      sync_projects(cloud_scheduler_client, projects)
-
-      projects_query = Project.query()
-      self.assertEqual({
-          'test1': '0 8 * * *',
-          'test2': '0 7 * * *'
-      }, {project.name: project.schedule for project in projects_query})
-
-      self.assertCountEqual([
-          {
-              'name': 'projects/test-project/location/us-central1/jobs/'
-                      'test2-scheduler-fuzzing',
-              'pubsub_target': {
-                  'topic_name': 'projects/test-project/topics/request-build',
-                  'data': b'test2'
-              },
-              'schedule': '0 7 * * *'
-          },
-          {
-              'name': 'projects/test-project/location/us-central1/jobs/'
-                      'test2-scheduler-coverage',
-              'pubsub_target': {
-                  'topic_name':
-                      'projects/test-project/topics/request-coverage-build',
-                  'data':
-                      b'test2'
-              },
-              'schedule': '0 6 * * *'
-          },
-      ], cloud_scheduler_client.schedulers)
-
-  def test_sync_projects_delete(self):
-    """Testing sync_projects() deleting."""
-    cloud_scheduler_client = CloudSchedulerClient()
-
-    with ndb.Client().context():
-      Project(name='test1',
-              schedule='0 8 * * *',
-              project_yaml_contents='',
-              dockerfile_contents='').put()
-      Project(name='test2',
-              schedule='0 9 * * *',
-              project_yaml_contents='',
-              dockerfile_contents='').put()
-
-      projects = {'test1': ProjectMetadata('0 8 * * *', '', '')}
-      sync_projects(cloud_scheduler_client, projects)
-
-      projects_query = Project.query()
-      self.assertEqual(
-          {'test1': '0 8 * * *'},
-          {project.name: project.schedule for project in projects_query})
-
-  def test_get_projects_yaml(self):
-    """Testing get_projects() yaml get_schedule()."""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ]),
-        Repository('test1', 'dir', 'projects/test1', [
-            Repository('Dockerfile', 'file', 'projects/test1/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test1/project.yaml')
-        ])
-    ])
-    repo.contents[0].contents[1].set_yaml_contents(b'builds_per_day: 2')
-    repo.contents[1].contents[1].set_yaml_contents(b'builds_per_day: 3')
-
-    self.assertEqual(
-        get_projects(repo), {
-            'test0':
-                ProjectMetadata('0 6,18 * * *', 'builds_per_day: 2',
-                                'name: test'),
-            'test1':
-                ProjectMetadata('0 6,14,22 * * *', 'builds_per_day: 3',
-                                'name: test')
-        })
-
-  def test_get_projects_no_docker_file(self):
-    """Testing get_projects() with missing dockerfile"""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ]),
-        Repository('test1', 'dir', 'projects/test1')
-    ])
-
-    self.assertEqual(
-        get_projects(repo),
-        {'test0': ProjectMetadata('0 6 * * *', 'name: test', 'name: test')})
-
-  def test_get_projects_invalid_project_name(self):
-    """Testing get_projects() with invalid project name"""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ]),
-        Repository('test1@', 'dir', 'projects/test1', [
-            Repository('Dockerfile', 'file', 'projects/test1/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ])
-    ])
-
-    self.assertEqual(
-        get_projects(repo),
-        {'test0': ProjectMetadata('0 6 * * *', 'name: test', 'name: test')})
-
-  def test_get_projects_non_directory_type_project(self):
-    """Testing get_projects() when a file in projects/ is not of type 'dir'."""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ]),
-        Repository('test1', 'file', 'projects/test1')
-    ])
-
-    self.assertEqual(
-        get_projects(repo),
-        {'test0': ProjectMetadata('0 6 * * *', 'name: test', 'name: test')})
-
-  def test_invalid_yaml_format(self):
-    """Testing invalid yaml schedule parameter argument."""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ])
-    ])
-    repo.contents[0].contents[1].set_yaml_contents(
-        b'builds_per_day: some-string')
-
-    self.assertEqual(get_projects(repo), {})
-
-  def test_yaml_out_of_range(self):
-    """Testing invalid yaml schedule parameter argument."""
-
-    repo = Repository('oss-fuzz', 'dir', 'projects', [
-        Repository('test0', 'dir', 'projects/test0', [
-            Repository('Dockerfile', 'file', 'projects/test0/Dockerfile'),
-            Repository('project.yaml', 'file', 'projects/test0/project.yaml')
-        ])
-    ])
-    repo.contents[0].contents[1].set_yaml_contents(b'builds_per_day: 5')
-
-    self.assertEqual(get_projects(repo), {})
-
-  def test_get_github_creds(self):
-    """Testing get_github_creds()."""
-    with ndb.Client().context():
-      self.assertRaises(RuntimeError, get_github_creds)
-
-  @classmethod
-  def tearDownClass(cls):
-    test_utils.cleanup_emulator(cls.ds_emulator)
-
-
-if __name__ == '__main__':
-  unittest.main(exit=False)
diff --git a/infra/build/functions/request_build.py b/infra/build/functions/request_build.py
deleted file mode 100644
index 6f0ab62..0000000
--- a/infra/build/functions/request_build.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud function to request builds."""
-import base64
-import logging
-
-import google.auth
-from googleapiclient.discovery import build
-from google.cloud import ndb
-
-import build_lib
-import build_project
-from datastore_entities import BuildsHistory
-from datastore_entities import Project
-
-BASE_PROJECT = 'oss-fuzz-base'
-MAX_BUILD_HISTORY_LENGTH = 64
-QUEUE_TTL_SECONDS = 60 * 60 * 24  # 24 hours.
-
-
-def update_build_history(project_name, build_id, build_tag):
-  """Update build history of project."""
-  project_key = ndb.Key(BuildsHistory, project_name + '-' + build_tag)
-  project = project_key.get()
-
-  if not project:
-    project = BuildsHistory(id=project_name + '-' + build_tag,
-                            build_tag=build_tag,
-                            project=project_name,
-                            build_ids=[])
-
-  if len(project.build_ids) >= MAX_BUILD_HISTORY_LENGTH:
-    project.build_ids.pop(0)
-
-  project.build_ids.append(build_id)
-  project.put()
-
-
-def get_project_data(project_name):
-  """Retrieve project metadata from datastore."""
-  query = Project.query(Project.name == project_name)
-  project = query.get()
-  if not project:
-    raise RuntimeError(
-        'Project {0} not available in cloud datastore'.format(project_name))
-  project_yaml_contents = project.project_yaml_contents
-  dockerfile_lines = project.dockerfile_contents.split('\n')
-
-  return (project_yaml_contents, dockerfile_lines)
-
-
-def get_build_steps(project_name, image_project, base_images_project):
-  """Retrieve build steps."""
-  project_yaml_contents, dockerfile_lines = get_project_data(project_name)
-  return build_project.get_build_steps(project_name, project_yaml_contents,
-                                       dockerfile_lines, image_project,
-                                       base_images_project)
-
-
-# pylint: disable=no-member
-def run_build(project_name, image_project, build_steps, credentials, tag):
-  """Execute build on cloud build."""
-  build_body = {
-      'steps': build_steps,
-      'timeout': str(build_lib.BUILD_TIMEOUT) + 's',
-      'options': {
-          'machineType': 'N1_HIGHCPU_32'
-      },
-      'logsBucket': build_project.GCB_LOGS_BUCKET,
-      'tags': [project_name + '-' + tag,],
-      'queueTtl': str(QUEUE_TTL_SECONDS) + 's',
-  }
-
-  cloudbuild = build('cloudbuild',
-                     'v1',
-                     credentials=credentials,
-                     cache_discovery=False)
-  build_info = cloudbuild.projects().builds().create(projectId=image_project,
-                                                     body=build_body).execute()
-  build_id = build_info['metadata']['build']['id']
-
-  update_build_history(project_name, build_id, tag)
-  logging.info('Build ID: %s', build_id)
-  logging.info('Logs: %s', build_project.get_logs_url(build_id, image_project))
-
-
-# pylint: disable=no-member
-def request_build(event, context):
-  """Entry point for cloud function to request builds."""
-  del context  #unused
-  if 'data' in event:
-    project_name = base64.b64decode(event['data']).decode('utf-8')
-  else:
-    raise RuntimeError('Project name missing from payload')
-
-  with ndb.Client().context():
-    credentials, image_project = google.auth.default()
-    build_steps = get_build_steps(project_name, image_project, BASE_PROJECT)
-    if not build_steps:
-      return
-    run_build(project_name, image_project, build_steps, credentials,
-              build_project.FUZZING_BUILD_TAG)
diff --git a/infra/build/functions/request_build_test.py b/infra/build/functions/request_build_test.py
deleted file mode 100644
index 22a4a10..0000000
--- a/infra/build/functions/request_build_test.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Unit tests for Cloud Function request builds which builds projects."""
-import json
-import datetime
-import os
-import sys
-import unittest
-from unittest import mock
-
-from google.cloud import ndb
-
-sys.path.append(os.path.dirname(__file__))
-# pylint: disable=wrong-import-position
-
-from datastore_entities import BuildsHistory
-from datastore_entities import Project
-from request_build import get_build_steps
-from request_build import get_project_data
-from request_build import update_build_history
-import test_utils
-
-# pylint: disable=no-member
-
-
-class TestRequestBuilds(unittest.TestCase):
-  """Unit tests for sync."""
-
-  @classmethod
-  def setUpClass(cls):
-    cls.ds_emulator = test_utils.start_datastore_emulator()
-    test_utils.wait_for_emulator_ready(cls.ds_emulator, 'datastore',
-                                       test_utils.DATASTORE_READY_INDICATOR)
-    test_utils.set_gcp_environment()
-
-  def setUp(self):
-    test_utils.reset_ds_emulator()
-
-  @mock.patch('build_lib.get_signed_url', return_value='test_url')
-  @mock.patch('datetime.datetime')
-  def test_get_build_steps(self, mocked_url, mocked_time):
-    """Test for get_build_steps."""
-    del mocked_url, mocked_time
-    datetime.datetime = test_utils.SpoofedDatetime
-    project_yaml_contents = ('language: c++\n'
-                             'sanitizers:\n'
-                             '  - address\n'
-                             'architectures:\n'
-                             '  - x86_64\n')
-    image_project = 'oss-fuzz'
-    base_images_project = 'oss-fuzz-base'
-    testcase_path = os.path.join(os.path.dirname(__file__),
-                                 'expected_build_steps.json')
-    with open(testcase_path) as testcase_file:
-      expected_build_steps = json.load(testcase_file)
-
-    with ndb.Client().context():
-      Project(name='test-project',
-              project_yaml_contents=project_yaml_contents,
-              dockerfile_contents='test line').put()
-      build_steps = get_build_steps('test-project', image_project,
-                                    base_images_project)
-    self.assertEqual(build_steps, expected_build_steps)
-
-  def test_get_build_steps_no_project(self):
-    """Test for when project isn't available in datastore."""
-    with ndb.Client().context():
-      self.assertRaises(RuntimeError, get_build_steps, 'test-project',
-                        'oss-fuzz', 'oss-fuzz-base')
-
-  def test_build_history(self):
-    """Testing build history."""
-    with ndb.Client().context():
-      BuildsHistory(id='test-project-fuzzing',
-                    build_tag='fuzzing',
-                    project='test-project',
-                    build_ids=[str(i) for i in range(1, 65)]).put()
-      update_build_history('test-project', '65', 'fuzzing')
-      expected_build_ids = [str(i) for i in range(2, 66)]
-
-      self.assertEqual(BuildsHistory.query().get().build_ids,
-                       expected_build_ids)
-
-  def test_build_history_no_existing_project(self):
-    """Testing build history when build history object is missing."""
-    with ndb.Client().context():
-      update_build_history('test-project', '1', 'fuzzing')
-      expected_build_ids = ['1']
-
-      self.assertEqual(BuildsHistory.query().get().build_ids,
-                       expected_build_ids)
-
-  def test_get_project_data(self):
-    """Testing get project data."""
-    with ndb.Client().context():
-      self.assertRaises(RuntimeError, get_project_data, 'test-project')
-
-  @classmethod
-  def tearDownClass(cls):
-    test_utils.cleanup_emulator(cls.ds_emulator)
-
-
-if __name__ == '__main__':
-  unittest.main(exit=False)
diff --git a/infra/build/functions/request_coverage_build.py b/infra/build/functions/request_coverage_build.py
deleted file mode 100644
index 1b4ac0e..0000000
--- a/infra/build/functions/request_coverage_build.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud function that requests coverage builds."""
-import base64
-
-import google.auth
-from google.cloud import ndb
-
-import build_and_run_coverage
-import request_build
-
-BASE_PROJECT = 'oss-fuzz-base'
-
-
-def get_build_steps(project_name, image_project, base_images_project):
-  """Retrieve build steps."""
-  project_yaml_contents, dockerfile_lines = request_build.get_project_data(
-      project_name)
-  return build_and_run_coverage.get_build_steps(project_name,
-                                                project_yaml_contents,
-                                                dockerfile_lines, image_project,
-                                                base_images_project)
-
-
-def request_coverage_build(event, context):
-  """Entry point for coverage build cloud function."""
-  del context  #unused
-  if 'data' in event:
-    project_name = base64.b64decode(event['data']).decode('utf-8')
-  else:
-    raise RuntimeError('Project name missing from payload')
-
-  with ndb.Client().context():
-    credentials, image_project = google.auth.default()
-    build_steps = get_build_steps(project_name, image_project, BASE_PROJECT)
-    if not build_steps:
-      return
-    request_build.run_build(project_name, image_project, build_steps,
-                            credentials,
-                            build_and_run_coverage.COVERAGE_BUILD_TAG)
diff --git a/infra/build/functions/request_coverage_build_test.py b/infra/build/functions/request_coverage_build_test.py
deleted file mode 100644
index 1327e36..0000000
--- a/infra/build/functions/request_coverage_build_test.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Unit tests for Cloud Function that builds coverage reports."""
-import json
-import datetime
-import os
-import sys
-import unittest
-from unittest import mock
-
-from google.cloud import ndb
-
-sys.path.append(os.path.dirname(__file__))
-# pylint: disable=wrong-import-position
-
-from datastore_entities import Project
-from build_and_run_coverage import get_build_steps
-import test_utils
-
-# pylint: disable=no-member
-
-
-class TestRequestCoverageBuilds(unittest.TestCase):
-  """Unit tests for sync."""
-
-  @classmethod
-  def setUpClass(cls):
-    cls.ds_emulator = test_utils.start_datastore_emulator()
-    test_utils.wait_for_emulator_ready(cls.ds_emulator, 'datastore',
-                                       test_utils.DATASTORE_READY_INDICATOR)
-    test_utils.set_gcp_environment()
-
-  def setUp(self):
-    test_utils.reset_ds_emulator()
-
-  @mock.patch('build_lib.get_signed_url', return_value='test_url')
-  @mock.patch('build_lib.download_corpora_steps',
-              return_value=[{
-                  'url': 'test_download'
-              }])
-  @mock.patch('datetime.datetime')
-  def test_get_coverage_build_steps(self, mocked_url, mocked_corpora_steps,
-                                    mocked_time):
-    """Test for get_build_steps."""
-    del mocked_url, mocked_corpora_steps, mocked_time
-    datetime.datetime = test_utils.SpoofedDatetime
-    project_yaml_contents = ('language: c++\n'
-                             'sanitizers:\n'
-                             '  - address\n'
-                             'architectures:\n'
-                             '  - x86_64\n')
-    dockerfile_contents = 'test line'
-    image_project = 'oss-fuzz'
-    base_images_project = 'oss-fuzz-base'
-    testcase_path = os.path.join(os.path.dirname(__file__),
-                                 'expected_coverage_build_steps.json')
-    with open(testcase_path) as testcase_file:
-      expected_coverage_build_steps = json.load(testcase_file)
-
-    with ndb.Client().context():
-      Project(name='test-project',
-              project_yaml_contents=project_yaml_contents,
-              dockerfile_contents=dockerfile_contents).put()
-
-    dockerfile_lines = dockerfile_contents.split('\n')
-    build_steps = get_build_steps('test-project', project_yaml_contents,
-                                  dockerfile_lines, image_project,
-                                  base_images_project)
-    self.assertEqual(build_steps, expected_coverage_build_steps)
-
-  @classmethod
-  def tearDownClass(cls):
-    test_utils.cleanup_emulator(cls.ds_emulator)
-
-
-if __name__ == '__main__':
-  unittest.main(exit=False)
diff --git a/infra/build/functions/requirements.txt b/infra/build/functions/requirements.txt
deleted file mode 100644
index a60a032..0000000
--- a/infra/build/functions/requirements.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-Brotli==1.0.9
-hiredis==1.1.0
-PyYaml==5.4
-PyGithub==1.51
-grpcio==1.29.0
-google-auth==1.21.1
-google-cloud-datastore<2.0
-google-cloud-ndb==1.7.1
-google-cloud-scheduler==1.3.0
-google-cloud-storage==1.29.0
-google-api-core==1.22.2
-google-api-python-client==1.9.3
-oauth2client==4.1.3
-python-dateutil==2.8.1
diff --git a/infra/build/functions/test_utils.py b/infra/build/functions/test_utils.py
deleted file mode 100644
index 9aac8ea..0000000
--- a/infra/build/functions/test_utils.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Utility functions for testing cloud functions."""
-import datetime
-import os
-import subprocess
-import threading
-
-import requests
-
-DATASTORE_READY_INDICATOR = b'is now running'
-DATASTORE_EMULATOR_PORT = 8432
-EMULATOR_TIMEOUT = 20
-TEST_PROJECT_ID = 'test-project'
-
-
-# pylint: disable=arguments-differ
-class SpoofedDatetime(datetime.datetime):
-  """Mocking Datetime class for now() function."""
-
-  @classmethod
-  def now(cls):
-    return datetime.datetime(2020, 1, 1, 0, 0, 0)
-
-
-def start_datastore_emulator():
-  """Start Datastore emulator."""
-  return subprocess.Popen([
-      'gcloud',
-      'beta',
-      'emulators',
-      'datastore',
-      'start',
-      '--consistency=1.0',
-      '--host-port=localhost:' + str(DATASTORE_EMULATOR_PORT),
-      '--project=' + TEST_PROJECT_ID,
-      '--no-store-on-disk',
-  ],
-                          stdout=subprocess.PIPE,
-                          stderr=subprocess.STDOUT)
-
-
-def wait_for_emulator_ready(proc,
-                            emulator,
-                            indicator,
-                            timeout=EMULATOR_TIMEOUT):
-  """Wait for emulator to be ready."""
-
-  def _read_thread(proc, ready_event):
-    """Thread to continuously read from the process stdout."""
-    ready = False
-    while True:
-      line = proc.stdout.readline()
-      if not line:
-        break
-      if not ready and indicator in line:
-        ready = True
-        ready_event.set()
-
-  # Wait for process to become ready.
-  ready_event = threading.Event()
-  thread = threading.Thread(target=_read_thread, args=(proc, ready_event))
-  thread.daemon = True
-  thread.start()
-  if not ready_event.wait(timeout):
-    raise RuntimeError(
-        '{} emulator did not get ready in time.'.format(emulator))
-  return thread
-
-
-def reset_ds_emulator():
-  """Reset ds emulator/clean all entities."""
-  req = requests.post(
-      'http://localhost:{}/reset'.format(DATASTORE_EMULATOR_PORT))
-  req.raise_for_status()
-
-
-def cleanup_emulator(ds_emulator):
-  """Cleanup the system processes made by ds emulator."""
-  del ds_emulator  #To do, find a better way to cleanup emulator
-  os.system('pkill -f datastore')
-
-
-def set_gcp_environment():
-  """Set environment variables for simulating in google cloud platform."""
-  os.environ['DATASTORE_EMULATOR_HOST'] = 'localhost:' + str(
-      DATASTORE_EMULATOR_PORT)
-  os.environ['GOOGLE_CLOUD_PROJECT'] = TEST_PROJECT_ID
-  os.environ['DATASTORE_DATASET'] = TEST_PROJECT_ID
-  os.environ['GCP_PROJECT'] = TEST_PROJECT_ID
-  os.environ['FUNCTION_REGION'] = 'us-central1'
diff --git a/infra/build/functions/update_build_status.py b/infra/build/functions/update_build_status.py
deleted file mode 100644
index af65a41..0000000
--- a/infra/build/functions/update_build_status.py
+++ /dev/null
@@ -1,307 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Cloud function to request builds."""
-import base64
-import concurrent.futures
-import json
-import sys
-
-import google.auth
-from googleapiclient.discovery import build
-from google.cloud import ndb
-from google.cloud import storage
-
-import build_and_run_coverage
-import build_project
-from datastore_entities import BuildsHistory
-from datastore_entities import LastSuccessfulBuild
-from datastore_entities import Project
-
-BADGE_DIR = 'badge_images'
-BADGE_IMAGE_TYPES = {'svg': 'image/svg+xml', 'png': 'image/png'}
-DESTINATION_BADGE_DIR = 'badges'
-MAX_BUILD_LOGS = 7
-
-STATUS_BUCKET = 'oss-fuzz-build-logs'
-
-FUZZING_STATUS_FILENAME = 'status.json'
-COVERAGE_STATUS_FILENAME = 'status-coverage.json'
-
-# pylint: disable=invalid-name
-_client = None
-
-
-class MissingBuildLogError(Exception):
-  """Missing build log file in cloud storage."""
-
-
-# pylint: disable=global-statement
-def get_storage_client():
-  """Return storage client."""
-  global _client
-  if not _client:
-    _client = storage.Client()
-
-  return _client
-
-
-def is_build_successful(build_obj):
-  """Check build success."""
-  return build_obj['status'] == 'SUCCESS'
-
-
-def upload_status(data, status_filename):
-  """Upload json file to cloud storage."""
-  bucket = get_storage_client().get_bucket(STATUS_BUCKET)
-  blob = bucket.blob(status_filename)
-  blob.cache_control = 'no-cache'
-  blob.upload_from_string(json.dumps(data), content_type='application/json')
-
-
-def sort_projects(projects):
-  """Sort projects in order Failures, Successes, Not yet built."""
-
-  def key_func(project):
-    if not project['history']:
-      return 2  # Order projects without history last.
-
-    if project['history'][0]['success']:
-      # Successful builds come second.
-      return 1
-
-    # Build failures come first.
-    return 0
-
-  projects.sort(key=key_func)
-
-
-def get_build(cloudbuild, image_project, build_id):
-  """Get build object from cloudbuild."""
-  return cloudbuild.projects().builds().get(projectId=image_project,
-                                            id=build_id).execute()
-
-
-def update_last_successful_build(project, build_tag):
-  """Update last successful build."""
-  last_successful_build = ndb.Key(LastSuccessfulBuild,
-                                  project['name'] + '-' + build_tag).get()
-  if not last_successful_build and 'last_successful_build' not in project:
-    return
-
-  if 'last_successful_build' not in project:
-    project['last_successful_build'] = {
-        'build_id': last_successful_build.build_id,
-        'finish_time': last_successful_build.finish_time
-    }
-  else:
-    if last_successful_build:
-      last_successful_build.build_id = project['last_successful_build'][
-          'build_id']
-      last_successful_build.finish_time = project['last_successful_build'][
-          'finish_time']
-    else:
-      last_successful_build = LastSuccessfulBuild(
-          id=project['name'] + '-' + build_tag,
-          project=project['name'],
-          build_id=project['last_successful_build']['build_id'],
-          finish_time=project['last_successful_build']['finish_time'])
-    last_successful_build.put()
-
-
-# pylint: disable=no-member
-def get_build_history(build_ids):
-  """Returns build object for the last finished build of project."""
-  credentials, image_project = google.auth.default()
-  cloudbuild = build('cloudbuild',
-                     'v1',
-                     credentials=credentials,
-                     cache_discovery=False)
-
-  history = []
-  last_successful_build = None
-
-  for build_id in reversed(build_ids):
-    project_build = get_build(cloudbuild, image_project, build_id)
-    if project_build['status'] not in ('SUCCESS', 'FAILURE', 'TIMEOUT'):
-      continue
-
-    if (not last_successful_build and is_build_successful(project_build)):
-      last_successful_build = {
-          'build_id': build_id,
-          'finish_time': project_build['finishTime'],
-      }
-
-    if not upload_log(build_id):
-      log_name = 'log-{0}'.format(build_id)
-      raise MissingBuildLogError('Missing build log file {0}'.format(log_name))
-
-    history.append({
-        'build_id': build_id,
-        'finish_time': project_build['finishTime'],
-        'success': is_build_successful(project_build)
-    })
-
-    if len(history) == MAX_BUILD_LOGS:
-      break
-
-  project = {'history': history}
-  if last_successful_build:
-    project['last_successful_build'] = last_successful_build
-  return project
-
-
-# pylint: disable=too-many-locals
-def update_build_status(build_tag, status_filename):
-  """Update build statuses."""
-  projects = []
-
-  def process_project(project_build):
-    """Process a project."""
-    project = get_build_history(project_build.build_ids)
-    project['name'] = project_build.project
-    print('Processing project', project['name'])
-    return project
-
-  with concurrent.futures.ThreadPoolExecutor(max_workers=8) as executor:
-    futures = []
-    for project_build in BuildsHistory.query(
-        BuildsHistory.build_tag == build_tag).order('project'):
-      futures.append(executor.submit(process_project, project_build))
-
-    for future in concurrent.futures.as_completed(futures):
-      project = future.result()
-      update_last_successful_build(project, build_tag)
-      projects.append(project)
-
-  sort_projects(projects)
-  data = {'projects': projects}
-  upload_status(data, status_filename)
-
-
-def update_build_badges(project, last_build_successful,
-                        last_coverage_build_successful):
-  """Upload badges of given project."""
-  badge = 'building'
-  # last_coverage_build_successful is False if there was an unsuccessful build
-  # and None if the target does not support coverage (e.g. Python or Java
-  # targets).
-  if last_coverage_build_successful is False:
-    badge = 'coverage_failing'
-  if not last_build_successful:
-    badge = 'failing'
-
-  print("[badge] {}: {}".format(project, badge))
-
-  for extension in BADGE_IMAGE_TYPES:
-    badge_name = '{badge}.{extension}'.format(badge=badge, extension=extension)
-
-    # Copy blob from badge_images/badge_name to badges/project/
-    blob_name = '{badge_dir}/{badge_name}'.format(badge_dir=BADGE_DIR,
-                                                  badge_name=badge_name)
-
-    destination_blob_name = '{badge_dir}/{project_name}.{extension}'.format(
-        badge_dir=DESTINATION_BADGE_DIR,
-        project_name=project,
-        extension=extension)
-
-    status_bucket = get_storage_client().get_bucket(STATUS_BUCKET)
-    badge_blob = status_bucket.blob(blob_name)
-    status_bucket.copy_blob(badge_blob,
-                            status_bucket,
-                            new_name=destination_blob_name)
-
-
-def upload_log(build_id):
-  """Upload log file to GCS."""
-  status_bucket = get_storage_client().get_bucket(STATUS_BUCKET)
-  gcb_bucket = get_storage_client().get_bucket(build_project.GCB_LOGS_BUCKET)
-  log_name = 'log-{0}.txt'.format(build_id)
-  log = gcb_bucket.blob(log_name)
-  dest_log = status_bucket.blob(log_name)
-
-  if not log.exists():
-    print('Failed to find build log {0}'.format(log_name), file=sys.stderr)
-    return False
-
-  if dest_log.exists():
-    return True
-
-  gcb_bucket.copy_blob(log, status_bucket)
-  return True
-
-
-# pylint: disable=no-member
-def update_status(event, context):
-  """Entry point for cloud function to update build statuses and badges."""
-  del context
-
-  if 'data' in event:
-    status_type = base64.b64decode(event['data']).decode()
-  else:
-    raise RuntimeError('No data')
-
-  if status_type == 'badges':
-    update_badges()
-    return
-
-  if status_type == 'fuzzing':
-    tag = build_project.FUZZING_BUILD_TAG
-    status_filename = FUZZING_STATUS_FILENAME
-  elif status_type == 'coverage':
-    tag = build_and_run_coverage.COVERAGE_BUILD_TAG
-    status_filename = COVERAGE_STATUS_FILENAME
-  else:
-    raise RuntimeError('Invalid build status type ' + status_type)
-
-  with ndb.Client().context():
-    update_build_status(tag, status_filename)
-
-
-def load_status_from_gcs(filename):
-  """Load statuses from bucket."""
-  status_bucket = get_storage_client().get_bucket(STATUS_BUCKET)
-  status = json.loads(status_bucket.blob(filename).download_as_string())
-  result = {}
-
-  for project in status['projects']:
-    if project['history']:
-      result[project['name']] = project['history'][0]['success']
-
-  return result
-
-
-def update_badges():
-  """Update badges."""
-  project_build_statuses = load_status_from_gcs(FUZZING_STATUS_FILENAME)
-  coverage_build_statuses = load_status_from_gcs(COVERAGE_STATUS_FILENAME)
-
-  with concurrent.futures.ThreadPoolExecutor(max_workers=32) as executor:
-    futures = []
-    with ndb.Client().context():
-      for project in Project.query():
-        if project.name not in project_build_statuses:
-          continue
-        # Certain projects (e.g. JVM and Python) do not have any coverage
-        # builds, but should still receive a badge.
-        coverage_build_status = None
-        if project.name in coverage_build_statuses:
-          coverage_build_status = coverage_build_statuses[project.name]
-
-        futures.append(
-            executor.submit(update_build_badges, project.name,
-                            project_build_statuses[project.name],
-                            coverage_build_status))
-    concurrent.futures.wait(futures)
diff --git a/infra/build/functions/update_build_status_test.py b/infra/build/functions/update_build_status_test.py
deleted file mode 100644
index 6784fac..0000000
--- a/infra/build/functions/update_build_status_test.py
+++ /dev/null
@@ -1,305 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Unit tests for Cloud Function update builds status."""
-import os
-import sys
-import unittest
-from unittest import mock
-from unittest.mock import MagicMock
-
-from google.cloud import ndb
-
-sys.path.append(os.path.dirname(__file__))
-# pylint: disable=wrong-import-position
-
-from datastore_entities import BuildsHistory
-from datastore_entities import LastSuccessfulBuild
-import test_utils
-import update_build_status
-
-# pylint: disable=no-member
-
-
-# pylint: disable=too-few-public-methods
-class MockGetBuild:
-  """Spoofing get_builds function."""
-
-  def __init__(self, builds):
-    self.builds = builds
-
-  def get_build(self, cloudbuild, image_project, build_id):
-    """Mimic build object retrieval."""
-    del cloudbuild, image_project
-    for build in self.builds:
-      if build['build_id'] == build_id:
-        return build
-
-    return None
-
-
-@mock.patch('google.auth.default', return_value=['temp', 'temp'])
-@mock.patch('update_build_status.build', return_value='cloudbuild')
-@mock.patch('update_build_status.upload_log')
-class TestGetBuildHistory(unittest.TestCase):
-  """Unit tests for get_build_history."""
-
-  def test_get_build_history(self, mocked_upload_log, mocked_cloud_build,
-                             mocked_google_auth):
-    """Test for get_build_steps."""
-    del mocked_cloud_build, mocked_google_auth
-    mocked_upload_log.return_value = True
-    builds = [{'build_id': '1', 'finishTime': 'test_time', 'status': 'SUCCESS'}]
-    mocked_get_build = MockGetBuild(builds)
-    update_build_status.get_build = mocked_get_build.get_build
-
-    expected_projects = {
-        'history': [{
-            'build_id': '1',
-            'finish_time': 'test_time',
-            'success': True
-        }],
-        'last_successful_build': {
-            'build_id': '1',
-            'finish_time': 'test_time'
-        }
-    }
-    self.assertDictEqual(update_build_status.get_build_history(['1']),
-                         expected_projects)
-
-  def test_get_build_history_missing_log(self, mocked_upload_log,
-                                         mocked_cloud_build,
-                                         mocked_google_auth):
-    """Test for missing build log file."""
-    del mocked_cloud_build, mocked_google_auth
-    builds = [{'build_id': '1', 'finishTime': 'test_time', 'status': 'SUCCESS'}]
-    mocked_get_build = MockGetBuild(builds)
-    update_build_status.get_build = mocked_get_build.get_build
-    mocked_upload_log.return_value = False
-    self.assertRaises(update_build_status.MissingBuildLogError,
-                      update_build_status.get_build_history, ['1'])
-
-  def test_get_build_history_no_last_success(self, mocked_upload_log,
-                                             mocked_cloud_build,
-                                             mocked_google_auth):
-    """Test when there is no last successful build."""
-    del mocked_cloud_build, mocked_google_auth
-    builds = [{'build_id': '1', 'finishTime': 'test_time', 'status': 'FAILURE'}]
-    mocked_get_build = MockGetBuild(builds)
-    update_build_status.get_build = mocked_get_build.get_build
-    mocked_upload_log.return_value = True
-
-    expected_projects = {
-        'history': [{
-            'build_id': '1',
-            'finish_time': 'test_time',
-            'success': False
-        }]
-    }
-    self.assertDictEqual(update_build_status.get_build_history(['1']),
-                         expected_projects)
-
-
-class TestSortProjects(unittest.TestCase):
-  """Unit tests for testing sorting functionality."""
-
-  def test_sort_projects(self):
-    """Test sorting functionality."""
-    projects = [{
-        'name': '1',
-        'history': []
-    }, {
-        'name': '2',
-        'history': [{
-            'success': True
-        }]
-    }, {
-        'name': '3',
-        'history': [{
-            'success': False
-        }]
-    }]
-    expected_order = ['3', '2', '1']
-    update_build_status.sort_projects(projects)
-    self.assertEqual(expected_order, [project['name'] for project in projects])
-
-
-class TestUpdateLastSuccessfulBuild(unittest.TestCase):
-  """Unit tests for updating last successful build."""
-
-  @classmethod
-  def setUpClass(cls):
-    cls.ds_emulator = test_utils.start_datastore_emulator()
-    test_utils.wait_for_emulator_ready(cls.ds_emulator, 'datastore',
-                                       test_utils.DATASTORE_READY_INDICATOR)
-    test_utils.set_gcp_environment()
-
-  def setUp(self):
-    test_utils.reset_ds_emulator()
-
-  def test_update_last_successful_build_new(self):
-    """When last successful build isn't available in datastore."""
-    with ndb.Client().context():
-      project = {
-          'name': 'test-project',
-          'last_successful_build': {
-              'build_id': '1',
-              'finish_time': 'test_time'
-          }
-      }
-      update_build_status.update_last_successful_build(project, 'fuzzing')
-      expected_build_id = '1'
-      self.assertEqual(
-          expected_build_id,
-          ndb.Key(LastSuccessfulBuild, 'test-project-fuzzing').get().build_id)
-
-  def test_update_last_successful_build_datastore(self):
-    """When last successful build is only available in datastore."""
-    with ndb.Client().context():
-      project = {'name': 'test-project'}
-      LastSuccessfulBuild(id='test-project-fuzzing',
-                          build_tag='fuzzing',
-                          project='test-project',
-                          build_id='1',
-                          finish_time='test_time').put()
-
-      update_build_status.update_last_successful_build(project, 'fuzzing')
-      expected_project = {
-          'name': 'test-project',
-          'last_successful_build': {
-              'build_id': '1',
-              'finish_time': 'test_time'
-          }
-      }
-      self.assertDictEqual(project, expected_project)
-
-  def test_update_last_successful_build(self):
-    """When last successful build is available at both places."""
-    with ndb.Client().context():
-      project = {
-          'name': 'test-project',
-          'last_successful_build': {
-              'build_id': '2',
-              'finish_time': 'test_time'
-          }
-      }
-      LastSuccessfulBuild(id='test-project-fuzzing',
-                          build_tag='fuzzing',
-                          project='test-project',
-                          build_id='1',
-                          finish_time='test_time').put()
-
-      update_build_status.update_last_successful_build(project, 'fuzzing')
-      expected_build_id = '2'
-      self.assertEqual(
-          expected_build_id,
-          ndb.Key(LastSuccessfulBuild, 'test-project-fuzzing').get().build_id)
-
-  @classmethod
-  def tearDownClass(cls):
-    test_utils.cleanup_emulator(cls.ds_emulator)
-
-
-class TestUpdateBuildStatus(unittest.TestCase):
-  """Unit test for update build status."""
-
-  @classmethod
-  def setUpClass(cls):
-    cls.ds_emulator = test_utils.start_datastore_emulator()
-    test_utils.wait_for_emulator_ready(cls.ds_emulator, 'datastore',
-                                       test_utils.DATASTORE_READY_INDICATOR)
-    test_utils.set_gcp_environment()
-
-  def setUp(self):
-    test_utils.reset_ds_emulator()
-
-  # pylint: disable=no-self-use
-  @mock.patch('google.auth.default', return_value=['temp', 'temp'])
-  @mock.patch('update_build_status.build', return_value='cloudbuild')
-  @mock.patch('update_build_status.upload_log')
-  def test_update_build_status(self, mocked_upload_log, mocked_cloud_build,
-                               mocked_google_auth):
-    """Testing update build status as a whole."""
-    del self, mocked_cloud_build, mocked_google_auth
-    update_build_status.upload_status = MagicMock()
-    mocked_upload_log.return_value = True
-    status_filename = 'status.json'
-    with ndb.Client().context():
-      BuildsHistory(id='test-project-1-fuzzing',
-                    build_tag='fuzzing',
-                    project='test-project-1',
-                    build_ids=['1']).put()
-
-      BuildsHistory(id='test-project-2-fuzzing',
-                    build_tag='fuzzing',
-                    project='test-project-2',
-                    build_ids=['2']).put()
-
-      BuildsHistory(id='test-project-3-fuzzing',
-                    build_tag='fuzzing',
-                    project='test-project-3',
-                    build_ids=['3']).put()
-
-      builds = [{
-          'build_id': '1',
-          'finishTime': 'test_time',
-          'status': 'SUCCESS'
-      }, {
-          'build_id': '2',
-          'finishTime': 'test_time',
-          'status': 'FAILURE'
-      }, {
-          'build_id': '3',
-          'status': 'WORKING'
-      }]
-      mocked_get_build = MockGetBuild(builds)
-      update_build_status.get_build = mocked_get_build.get_build
-
-      expected_data = {
-          'projects': [{
-              'history': [{
-                  'build_id': '2',
-                  'finish_time': 'test_time',
-                  'success': False
-              }],
-              'name': 'test-project-2'
-          }, {
-              'history': [{
-                  'build_id': '1',
-                  'finish_time': 'test_time',
-                  'success': True
-              }],
-              'last_successful_build': {
-                  'build_id': '1',
-                  'finish_time': 'test_time'
-              },
-              'name': 'test-project-1'
-          }, {
-              'history': [],
-              'name': 'test-project-3'
-          }]
-      }
-
-      update_build_status.update_build_status('fuzzing', 'status.json')
-      update_build_status.upload_status.assert_called_with(
-          expected_data, status_filename)
-
-  @classmethod
-  def tearDownClass(cls):
-    test_utils.cleanup_emulator(cls.ds_emulator)
-
-
-if __name__ == '__main__':
-  unittest.main(exit=False)
diff --git a/infra/build/request_all_builds.sh b/infra/build/request_all_builds.sh
deleted file mode 100755
index 1527386..0000000
--- a/infra/build/request_all_builds.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -ex
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-for project in ../../projects/*; do
-  if [[ ! -f $project/Dockerfile ]]; then
-    continue
-  fi
-
-  ./request_build.sh $(basename $project) $1
-done
diff --git a/infra/build/request_build.sh b/infra/build/request_build.sh
deleted file mode 100755
index 36a9cb4..0000000
--- a/infra/build/request_build.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash -ex
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-if [ "$2" = "fuzzing" ]; then
-  topic=request-build
-elif [ "$2" = "coverage" ]; then
-  topic=request-coverage-build
-else
-  echo "Invalid build type $2."
-  exit 1
-fi
-
-gcloud pubsub topics publish $topic --message "$1" --project oss-fuzz
diff --git a/infra/build/status/deploy.sh b/infra/build/status/deploy.sh
deleted file mode 100755
index 060eba9..0000000
--- a/infra/build/status/deploy.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -ex
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-gsutil -h "Cache-Control:no-cache,max-age=0" -m cp -r bower_components index.html src manifest.json gs://oss-fuzz-build-logs
diff --git a/infra/build/status/index.html b/infra/build/status/index.html
deleted file mode 100644
index 25a3d8e..0000000
--- a/infra/build/status/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!-- Copyright 2020 Google Inc.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-     http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. -->
-
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
-    <title>OSS-Fuzz build status</title>
-    <meta name="description" content="OSS-Fuzz build status">
-
-    <!-- See https://goo.gl/OOhYW5 -->
-    <link rel="manifest" href="/manifest.json">
-
-    <script src="/bower_components/webcomponentsjs/webcomponents-loader.js"></script>
-
-
-    <link rel="import" href="/src/build-status/build-status.html">
-
-    <style>
-      body {
-        font-family: 'Roboto', 'Noto', sans-serif;
-        background: #f1f1f1;
-        margin: 0;
-      }
-    </style>
-  </head>
-  <body>
-    <build-status></build-status>
-  </body>
-</html>
diff --git a/infra/build/status/src/build-status/build-status.html b/infra/build/status/src/build-status/build-status.html
deleted file mode 100644
index 1170e57..0000000
--- a/infra/build/status/src/build-status/build-status.html
+++ /dev/null
@@ -1,355 +0,0 @@
-<!-- Copyright 2020 Google Inc.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-     http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. -->
-
-<link rel="import" href="../../bower_components/polymer/polymer-element.html">
-<link rel="import" href="../../bower_components/app-layout/app-drawer-layout/app-drawer-layout.html">
-<link rel="import" href="../../bower_components/app-layout/app-drawer/app-drawer.html">
-<link rel="import" href="../../bower_components/app-layout/app-scroll-effects/app-scroll-effects.html">
-<link rel="import" href="../../bower_components/app-layout/app-header/app-header.html">
-<link rel="import" href="../../bower_components/app-layout/app-header-layout/app-header-layout.html">
-<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">
-<link rel="import" href="../../bower_components/paper-item/paper-item.html">
-<link rel="import" href="../../bower_components/paper-item/paper-item-body.html">
-<link rel="import" href="../../bower_components/paper-button/paper-button.html">
-<link rel="import" href="../../bower_components/paper-card/paper-card.html">
-<link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html">
-<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
-<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
-<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">
-<link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="../../bower_components/polymer/lib/elements/dom-if.html">
-<link rel="import" href="../../bower_components/polymer/lib/elements/dom-repeat.html">
-<link rel="import" href="../../bower_components/app-route/app-location.html">
-<link rel="import" href="../../bower_components/app-route/app-route.html">
-
-<dom-module id="build-status">
-  <template>
-    <app-location route="{{route}}" use-hash-as-path></app-location>
-    <app-route route="{{route}}"
-      pattern=":project_name"
-      data="{{routeData}}">
-    </app-route>
-    <style is="custom-style" include="iron-flex iron-flex-alignment">
-    <style>
-      .paper-item-link {
-        color: inherit;
-        text-decoration: none;
-      }
-
-      a {
-        text-decoration: none;
-      }
-
-      app-header {
-        background-color: #2ba4ad;
-        color: #fff;
-      }
-
-      paper-button {
-        font-weight: normal;
-        font-size: 14px;
-        -webkit-font-smoothing: antialiased;
-      }
-
-      paper-button.green:hover {
-        background-color: var(--paper-green-400);
-      }
-
-      paper-button.green {
-        background-color: var(--paper-green-500);
-        color: white;
-      }
-
-      paper-card {
-        margin: 0.5em;
-      }
-
-      paper-item {
-        cursor: pointer;
-      }
-
-      paper-tabs {
-        -webkit-font-smoothing: antialiased;
-        width: 100%;
-        margin-bottom: 1px;
-        height: 40px;
-      }
-
-      :host {
-        display: block;
-      }
-
-      .icon-error {
-        color: #e83030;
-        margin-right: 0.2em;
-      }
-
-      .icon-success {
-        color: var(--paper-green-500);
-        margin-right: 0.2em;
-      }
-
-      .icon-waiting {
-        color: var(--paper-yellow-500);
-        margin-right: 0.2em;
-      }
-
-      .projects {
-        min-width: 10em;
-      }
-
-      .log {
-        width: 80%;
-        display: inline;
-      }
-
-      .buildHistory {
-        margin: 20px 0;
-      }
-
-      pre {
-        white-space: pre-wrap;
-      }
-    </style>
-    <app-header reveals>
-      <app-toolbar>
-        <div main-title>OSS-Fuzz build status</div>
-        <div><small>(Updated every 30 minutes)</small></div>
-      </app-toolbar>
-    </app-header>
-    <div class="layout horizontal">
-      <paper-card class="projects">
-        <div class="card-tabs">
-          <paper-tabs selected="fuzzing" id="build_type" attr-for-selected="type" on-click="onChanged">
-            <paper-tab type="fuzzing">Fuzzing Builds</paper-tab>
-            <paper-tab type="coverage">Coverage Builds</paper-tab>
-          </paper-tabs>
-        </div>
-        <div class="card-content">
-          <template is="dom-repeat" items="[[status.projects]]" as="project">
-            <paper-item on-tap="onTap">
-              <paper-item-body two-line>
-                <div>
-                  <template is="dom-if" if="[[!isSuccessful(project)]]">
-                    <iron-icon class="icon-error" icon="icons:error"></iron-icon>
-                  </template>
-                  <template is="dom-if" if="[[!project.history.length]]">
-                    <iron-icon class="icon-waiting" icon="icons:error"></iron-icon>
-                  </template>
-                  [[project.name]]
-                </div>
-                <template is="dom-if" if="[[project.history.length]]">
-                 <div secondary title$="Last built [[toLocalDate(project.finish_time)]]">
-                    Last built [[toLocalDate(project.history.0.finish_time)]]
-                 </div>
-                </template>
-                <template is="dom-if" if="[[!project.history.length]]">
-                  <div secondary title$="Not built yet">
-                    Not built yet
-                  </div>
-                </template>
-              </paper-item-body>
-            </paper-item>
-          </template>
-        </div>
-      </paper-card>
-      <paper-card class="log">
-        <div class="card-content">
-          <template is="dom-if" if="[[!project]]">
-            Select a project to see logs.
-          </template>
-          <template is="dom-if" if="[[build_history.length]]">
-            Last Successful build:
-            <template is="dom-if" if="[[last_successful_build]]">
-              <paper-button raised on-click="onLastBuildSuccessful" class="green">
-                [[getLocalDate(last_successful_build.finish_time)]]
-              </paper-button>
-            </template>
-            <template is="dom-if" if="[[!last_successful_build]]">
-              None yet.
-            </template>
-              <div class="buildHistory">
-                Build History: <br>
-                <template is="dom-repeat" items="[[build_history]]" as="history">
-                  <paper-button raised on-click="onBuildHistory">
-                    <template is="dom-if" if="[[history.success]]">
-                      <iron-icon class="icon-success" icon="icons:done"></iron-icon>
-                    </template>
-                    <template is="dom-if" if="[[!history.success]]">
-                      <iron-icon class="icon-error" icon="icons:error"></iron-icon>
-                    </template>
-                    [[getLocalDate(history.finish_time)]]
-                  </paper-button>
-                </template>
-              </div>
-              <template is="dom-if" if=[[!finish_time]]>
-              <pre>Select a build to see logs.</pre>
-            </template>
-              <template is="dom-if" if="[[finish_time]]">
-                <a href="/log-[[build_id]].txt" target="_blank" tabindex="-1">
-                  <paper-button raised>
-                    Open in new tab
-                    <iron-icon icon="icons:link"></iron-iron>
-                  </paper-button>
-                </a>
-                <pre>Finish Time : [[finish_time]]</pre>
-              </template>
-          </template>
-          <template is="dom-if" if="[[loading_log]]">
-            Loading...
-          </template>
-          <pre>[[log]]</pre>
-        </div>
-      </paper-card>
-    </div>
-      <iron-ajax id="status_fuzzing" auto handle-as="json" url="/status.json" on-response="onResponseForFuzzing"></iron-ajax>
-      <iron-ajax id="status_coverage" auto handle-as="json" url="/status-coverage.json" on-response="onResponseForCoverage"></iron-ajax>
-    <iron-ajax id="logxhr" handle-as="text" on-response="onLogResponse"></iron-ajax>
-  </template>
-
-  <script>
-    /** @polymerElement */
-    class BuildStatus extends Polymer.Element {
-      static get is() {
-        return "build-status";
-      }
-      static get properties() {
-        return {
-          log: {
-            type: String,
-            value: '',
-          },
-          loading_log: {
-            type: Boolean,
-            value: false,
-          },
-          finish_time: {
-            type: String,
-            value: '',
-          }
-        }
-      }
-      static get observers() {
-        return ["_routeChanged(route.*)"]
-      }
-
-      _routeChanged() {
-        if(!this.routeData.project_name)
-          this.project = "";
-        if (!this.status || !this.routeData.project_name) {
-          // If our status json is loaded and there is a project_name specified
-          // in the URL, we can proceed to load that project's log.
-          return
-        }
-        this.project = this.getProjectByName(this.routeData.project_name);
-        this.build_history = this.project.history;
-        if (this.project['last_successful_build']){
-          this.last_successful_build = this.project.last_successful_build;
-        } else{
-          this.last_successful_build = "";
-        }
-        this.log = "";
-        this.finish_time = "";
-      }
-
-      getProjectByName(project_name) {
-        return this.status.projects.find(
-          p => p.name === project_name
-        );
-      }
-
-      onResponseForFuzzing(e) {
-        this.status_fuzzing = e.detail.response;
-        if (!this.status) {
-          // Show status of the fuzzing builds by default.
-          this.status = this.status_fuzzing;
-          // Manually invoke a _routeChanged call, in order to load the log for
-          // someone going directly to a project's URL.
-          this._routeChanged();
-        }
-      }
-
-      onResponseForCoverage(e) {
-        this.status_coverage = e.detail.response;
-      }
-
-      onLogResponse(e) {
-        this.log = e.detail.response;
-        this.loading_log = false;
-      }
-
-      onTap(e) {
-        // Change the route, this should auto-magically update the url in the
-        // browser and invoke the _routeChanged method.
-        this.set("route.path", e.model.project.name);
-      }
-
-      onChanged(e) {
-        if (this.$.build_type.selected == "coverage") {
-          this.status = this.status_coverage;
-        } else {
-          this.status = this.status_fuzzing;
-        }
-      }
-
-      requestLog() {
-        var ajax = this.$.logxhr;
-        ajax.url = "/log-" + this.build_id + ".txt";
-        ajax.generateRequest();
-        this.loading_log = true;
-        this.log = "";
-        this.finish_time = this.toLocalDate(this.finish_time);
-      }
-
-      onLastBuildSuccessful(e) {
-        this.build_id = this.last_successful_build.build_id
-        this.finish_time = this.last_successful_build.finish_time
-        this.requestLog()
-      }
-
-      onBuildHistory(e) {
-        this.build_id = e.model.history.build_id
-        this.finish_time = e.model.history.finish_time
-        this.requestLog()
-      }
-
-      showLog(log) {
-        return log !== "";
-      }
-
-      showTabs() {
-        return this.tab_count !== 0;
-      }
-
-      toLocalDate(str) {
-        let date = new Date(str);
-        let ds = date.toString();
-        let timezone = ds.substring(ds.indexOf("("));
-        return date.toLocaleString() + " " + timezone;
-      }
-
-      pad(n) {
-        return n<10 ? '0'+n : n;
-      }
-
-      getLocalDate(str) {
-        let date = new Date(str);
-        return date.toLocaleString()
-      }
-
-      isSuccessful(project) {
-        return (!project.history.length || project.history[0].success)
-      }
-    }
-
-    window.customElements.define(BuildStatus.is, BuildStatus)
-  </script>
-</dom-module>
diff --git a/infra/build_fuzzers.Dockerfile b/infra/build_fuzzers.Dockerfile
deleted file mode 100644
index df06ff7..0000000
--- a/infra/build_fuzzers.Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-# Docker image to run the CIFuzz action build_fuzzers in.
-
-FROM gcr.io/oss-fuzz-base/cifuzz-base
-
-# Python file to execute when the docker container starts up
-# We can't use the env var $OSS_FUZZ_ROOT here. Since it's a constant env var,
-# just expand to '/opt/oss-fuzz'.
-ENTRYPOINT ["python3", "/opt/oss-fuzz/infra/cifuzz/build_fuzzers_entrypoint.py"]
-
-# Update infra source code.
-ADD . ${OSS_FUZZ_ROOT}/infra
diff --git a/infra/build_specified_commit.py b/infra/build_specified_commit.py
index b2130ea..823fd48 100644
--- a/infra/build_specified_commit.py
+++ b/infra/build_specified_commit.py
@@ -17,275 +17,38 @@
 from a specific point in time. This feature can be used for implementations
 like continuious integration fuzzing and bisection to find errors
 """
-import argparse
-import bisect
-import datetime
-from distutils import spawn
 import os
 import collections
-import json
 import logging
 import re
-import shutil
-import tempfile
 
 import helper
-import repo_manager
-import retry
 import utils
 
 BuildData = collections.namedtuple(
     'BuildData', ['project_name', 'engine', 'sanitizer', 'architecture'])
 
-_GIT_DIR_MARKER = 'gitdir: '
-_IMAGE_BUILD_TRIES = 3
 
-
-class BaseBuilderRepo:
-  """Repo of base-builder images."""
-
-  def __init__(self):
-    self.timestamps = []
-    self.digests = []
-
-  def add_digest(self, timestamp, digest):
-    """Add a digest."""
-    self.timestamps.append(timestamp)
-    self.digests.append(digest)
-
-  def find_digest(self, timestamp):
-    """Find the latest image before the given timestamp."""
-    index = bisect.bisect_right(self.timestamps, timestamp)
-    if index > 0:
-      return self.digests[index - 1]
-
-    logging.error('Failed to find suitable base-builder.')
-    return None
-
-
-def _replace_gitdir(src_dir, file_path):
-  """Replace gitdir with a relative path."""
-  with open(file_path) as handle:
-    lines = handle.readlines()
-
-  new_lines = []
-  for line in lines:
-    if line.startswith(_GIT_DIR_MARKER):
-      absolute_path = line[len(_GIT_DIR_MARKER):].strip()
-      if not os.path.isabs(absolute_path):
-        # Already relative.
-        return
-
-      current_dir = os.path.dirname(file_path)
-      # Rebase to /src rather than the host src dir.
-      base_dir = current_dir.replace(src_dir, '/src')
-      relative_path = os.path.relpath(absolute_path, base_dir)
-      logging.info('Replacing absolute submodule gitdir from %s to %s',
-                   absolute_path, relative_path)
-
-      line = _GIT_DIR_MARKER + relative_path
-
-    new_lines.append(line)
-
-  with open(file_path, 'w') as handle:
-    handle.write(''.join(new_lines))
-
-
-def _make_gitdirs_relative(src_dir):
-  """Make gitdirs relative."""
-  for root_dir, _, files in os.walk(src_dir):
-    for filename in files:
-      if filename != '.git':
-        continue
-
-      file_path = os.path.join(root_dir, filename)
-      _replace_gitdir(src_dir, file_path)
-
-
-def _replace_base_builder_digest(dockerfile_path, digest):
-  """Replace the base-builder digest in a Dockerfile."""
-  with open(dockerfile_path) as handle:
-    lines = handle.readlines()
-
-  new_lines = []
-  for line in lines:
-    if line.strip().startswith('FROM'):
-      line = 'FROM gcr.io/oss-fuzz-base/base-builder@' + digest + '\n'
-
-    new_lines.append(line)
-
-  with open(dockerfile_path, 'w') as handle:
-    handle.write(''.join(new_lines))
-
-
-def copy_src_from_docker(project_name, host_dir):
-  """Copy /src from docker to the host."""
-  # Copy /src to host.
-  image_name = 'gcr.io/oss-fuzz/' + project_name
-  src_dir = os.path.join(host_dir, 'src')
-  if os.path.exists(src_dir):
-    shutil.rmtree(src_dir, ignore_errors=True)
-
-  docker_args = [
-      '-v',
-      host_dir + ':/out',
-      image_name,
-      'cp',
-      '-r',
-      '-p',
-      '/src',
-      '/out',
-  ]
-  helper.docker_run(docker_args)
-
-  # Submodules can have gitdir entries which point to absolute paths. Make them
-  # relative, as otherwise we can't do operations on the checkout on the host.
-  _make_gitdirs_relative(src_dir)
-  return src_dir
-
-
-@retry.wrap(_IMAGE_BUILD_TRIES, 2)
-def _build_image_with_retries(project_name):
-  """Build image with retries."""
-  return helper.build_image_impl(project_name)
-
-
-def get_required_post_checkout_steps(dockerfile_path):
-  """Get required post checkout steps (best effort)."""
-
-  checkout_pattern = re.compile(r'\s*RUN\s*(git|svn|hg)')
-
-  # If the build.sh is copied from upstream, we need to copy it again after
-  # changing the revision to ensure correct building.
-  post_run_pattern = re.compile(r'\s*RUN\s*(.*build\.sh.*(\$SRC|/src).*)')
-
-  with open(dockerfile_path) as handle:
-    lines = handle.readlines()
-
-  subsequent_run_cmds = []
-  for i, line in enumerate(lines):
-    if checkout_pattern.match(line):
-      subsequent_run_cmds = []
-      continue
-
-    match = post_run_pattern.match(line)
-    if match:
-      workdir = helper.workdir_from_lines(lines[:i])
-      command = match.group(1)
-      subsequent_run_cmds.append((workdir, command))
-
-  return subsequent_run_cmds
-
-
-# pylint: disable=too-many-locals
-def build_fuzzers_from_commit(commit,
-                              build_repo_manager,
-                              host_src_path,
-                              build_data,
-                              base_builder_repo=None):
-  """Builds a OSS-Fuzz fuzzer at a specific commit SHA.
+def build_fuzzers_from_commit(commit, build_repo_manager, build_data):
+  """Builds a OSS-Fuzz fuzzer at a  specific commit SHA.
 
   Args:
     commit: The commit SHA to build the fuzzers at.
     build_repo_manager: The OSS-Fuzz project's repo manager to be built at.
     build_data: A struct containing project build information.
-    base_builder_repo: A BaseBuilderRepo.
   Returns:
     0 on successful build or error code on failure.
   """
-  oss_fuzz_repo_manager = repo_manager.RepoManager(helper.OSS_FUZZ_DIR)
-  num_retry = 1
-
-  def cleanup():
-    # Re-copy /src for a clean checkout every time.
-    copy_src_from_docker(build_data.project_name,
-                         os.path.dirname(host_src_path))
-    build_repo_manager.fetch_all_remotes()
-
-  projects_dir = os.path.join('projects', build_data.project_name)
-  dockerfile_path = os.path.join(projects_dir, 'Dockerfile')
-
-  for i in range(num_retry + 1):
-    build_repo_manager.checkout_commit(commit, clean=False)
-
-    post_checkout_steps = get_required_post_checkout_steps(dockerfile_path)
-    for workdir, post_checkout_step in post_checkout_steps:
-      logging.info('Running post-checkout step `%s` in %s.', post_checkout_step,
-                   workdir)
-      helper.docker_run([
-          '-w',
-          workdir,
-          '-v',
-          host_src_path + ':' + '/src',
-          'gcr.io/oss-fuzz/' + build_data.project_name,
-          '/bin/bash',
-          '-c',
-          post_checkout_step,
-      ])
-
-    result = helper.build_fuzzers_impl(project_name=build_data.project_name,
-                                       clean=True,
-                                       engine=build_data.engine,
-                                       sanitizer=build_data.sanitizer,
-                                       architecture=build_data.architecture,
-                                       env_to_add=None,
-                                       source_path=host_src_path,
-                                       mount_location='/src')
-    if result == 0 or i == num_retry:
-      break
-
-    # Retry with an OSS-Fuzz builder container that's closer to the project
-    # commit date.
-    commit_date = build_repo_manager.commit_date(commit)
-
-    # Find first change in the projects/<PROJECT> directory before the project
-    # commit date.
-    oss_fuzz_commit, _, _ = oss_fuzz_repo_manager.git([
-        'log', '--before=' + commit_date.isoformat(), '-n1', '--format=%H',
-        projects_dir
-    ],
-                                                      check_result=True)
-    oss_fuzz_commit = oss_fuzz_commit.strip()
-    if not oss_fuzz_commit:
-      logging.info(
-          'Could not find first OSS-Fuzz commit prior to upstream commit. '
-          'Falling back to oldest integration commit.')
-
-      # Find the oldest commit.
-      oss_fuzz_commit, _, _ = oss_fuzz_repo_manager.git(
-          ['log', '--reverse', '--format=%H', projects_dir], check_result=True)
-
-      oss_fuzz_commit = oss_fuzz_commit.splitlines()[0].strip()
-
-    if not oss_fuzz_commit:
-      logging.error('Failed to get oldest integration commit.')
-      break
-
-    logging.info('Build failed. Retrying on earlier OSS-Fuzz commit %s.',
-                 oss_fuzz_commit)
-
-    # Check out projects/<PROJECT> dir to the commit that was found.
-    oss_fuzz_repo_manager.git(['checkout', oss_fuzz_commit, projects_dir],
-                              check_result=True)
-
-    # Also use the closest base-builder we can find.
-    if base_builder_repo:
-      base_builder_digest = base_builder_repo.find_digest(commit_date)
-      if not base_builder_digest:
-        return False
-
-      logging.info('Using base-builder with digest %s.', base_builder_digest)
-      _replace_base_builder_digest(dockerfile_path, base_builder_digest)
-
-    # Rebuild image and re-copy src dir since things in /src could have changed.
-    if not _build_image_with_retries(build_data.project_name):
-      logging.error('Failed to rebuild image.')
-      return False
-
-    cleanup()
-
-  cleanup()
-  return result == 0
+  build_repo_manager.checkout_commit(commit)
+  return helper.build_fuzzers_impl(project_name=build_data.project_name,
+                                   clean=True,
+                                   engine=build_data.engine,
+                                   sanitizer=build_data.sanitizer,
+                                   architecture=build_data.architecture,
+                                   env_to_add=None,
+                                   source_path=build_repo_manager.repo_dir,
+                                   mount_location=os.path.join(
+                                       '/src', build_repo_manager.repo_name))
 
 
 def detect_main_repo(project_name, repo_name=None, commit=None):
@@ -313,99 +76,20 @@
 
   # Change to oss-fuzz main directory so helper.py runs correctly.
   utils.chdir_to_root()
-  if not _build_image_with_retries(project_name):
+  if not helper.build_image_impl(project_name):
     logging.error('Error: building %s image failed.', project_name)
     return None, None
   docker_image_name = 'gcr.io/oss-fuzz/' + project_name
   command_to_run = [
       'docker', 'run', '--rm', '-t', docker_image_name, 'python3',
-      os.path.join('/opt', 'cifuzz', 'detect_repo.py')
+      os.path.join('/src', 'detect_repo.py')
   ]
   if repo_name:
     command_to_run.extend(['--repo_name', repo_name])
   else:
     command_to_run.extend(['--example_commit', commit])
-  out, _, _ = utils.execute(command_to_run)
+  out, _ = utils.execute(command_to_run)
   match = re.search(r'\bDetected repo: ([^ ]+) ([^ ]+)', out.rstrip())
   if match and match.group(1) and match.group(2):
     return match.group(1), match.group(2)
-
-  logging.error('Failed to detect repo:\n%s', out)
   return None, None
-
-
-def load_base_builder_repo():
-  """Get base-image digests."""
-  gcloud_path = spawn.find_executable('gcloud')
-  if not gcloud_path:
-    logging.warning('gcloud not found in PATH.')
-    return None
-
-  result, _, _ = utils.execute([
-      gcloud_path,
-      'container',
-      'images',
-      'list-tags',
-      'gcr.io/oss-fuzz-base/base-builder',
-      '--format=json',
-      '--sort-by=timestamp',
-  ],
-                               check_result=True)
-  result = json.loads(result)
-
-  repo = BaseBuilderRepo()
-  for image in result:
-    timestamp = datetime.datetime.fromisoformat(
-        image['timestamp']['datetime']).astimezone(datetime.timezone.utc)
-    repo.add_digest(timestamp, image['digest'])
-
-  return repo
-
-
-def main():
-  """Main function."""
-  logging.getLogger().setLevel(logging.INFO)
-
-  parser = argparse.ArgumentParser(
-      description='Build fuzzers at a specific commit')
-  parser.add_argument('--project_name',
-                      help='The name of the project where the bug occurred.',
-                      required=True)
-  parser.add_argument('--commit',
-                      help='The newest commit SHA to be bisected.',
-                      required=True)
-  parser.add_argument('--engine',
-                      help='The default is "libfuzzer".',
-                      default='libfuzzer')
-  parser.add_argument('--sanitizer',
-                      default='address',
-                      help='The default is "address".')
-  parser.add_argument('--architecture', default='x86_64')
-
-  args = parser.parse_args()
-
-  repo_url, repo_path = detect_main_repo(args.project_name, commit=args.commit)
-
-  if not repo_url or not repo_path:
-    raise ValueError('Main git repo can not be determined.')
-
-  with tempfile.TemporaryDirectory() as tmp_dir:
-    host_src_dir = copy_src_from_docker(args.project_name, tmp_dir)
-    build_repo_manager = repo_manager.RepoManager(
-        os.path.join(host_src_dir, os.path.basename(repo_path)))
-    base_builder_repo = load_base_builder_repo()
-
-    build_data = BuildData(project_name=args.project_name,
-                           engine=args.engine,
-                           sanitizer=args.sanitizer,
-                           architecture=args.architecture)
-    if not build_fuzzers_from_commit(args.commit,
-                                     build_repo_manager,
-                                     host_src_dir,
-                                     build_data,
-                                     base_builder_repo=base_builder_repo):
-      raise RuntimeError('Failed to build.')
-
-
-if __name__ == '__main__':
-  main()
diff --git a/infra/build_specified_commit_test.py b/infra/build_specified_commit_test.py
index a865045..808bcc2 100644
--- a/infra/build_specified_commit_test.py
+++ b/infra/build_specified_commit_test.py
@@ -31,27 +31,21 @@
 TEST_DIR_PATH = os.path.dirname(os.path.realpath(__file__))
 
 
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class BuildImageIntegrationTest(unittest.TestCase):
-  """Tests if an image can be built from different states e.g. a commit."""
+class BuildImageIntegrationTests(unittest.TestCase):
+  """Testing if an image can be built from different states e.g. a commit."""
 
-  @unittest.skip('Test is failing (spuriously?).')
   def test_build_fuzzers_from_commit(self):
-    """Tests if the fuzzers can build at a specified commit.
+    """Tests if the fuzzers can build at a proper commit.
 
     This is done by using a known regression range for a specific test case.
     The old commit should show the error when its fuzzers run and the new one
     should not.
     """
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      test_case = test_repos.TEST_REPOS[1]
-      self.assertTrue(helper.build_image_impl(test_case.project_name))
-      host_src_dir = build_specified_commit.copy_src_from_docker(
-          test_case.project_name, tmp_dir)
 
-      test_repo_manager = repo_manager.clone_repo_and_get_manager(
-          test_case.git_url, host_src_dir, test_case.oss_repo_name)
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_case = test_repos.TEST_REPOS[0]
+      test_repo_manager = repo_manager.RepoManager(
+          test_case.git_url, tmp_dir, repo_name=test_case.oss_repo_name)
       build_data = build_specified_commit.BuildData(
           sanitizer='address',
           architecture='x86_64',
@@ -60,13 +54,13 @@
 
       build_specified_commit.build_fuzzers_from_commit(test_case.old_commit,
                                                        test_repo_manager,
-                                                       host_src_dir, build_data)
+                                                       build_data)
       old_error_code = helper.reproduce_impl(test_case.project_name,
                                              test_case.fuzz_target, False, [],
                                              [], test_case.test_case_path)
       build_specified_commit.build_fuzzers_from_commit(test_case.new_commit,
                                                        test_repo_manager,
-                                                       host_src_dir, build_data)
+                                                       build_data)
       new_error_code = helper.reproduce_impl(test_case.project_name,
                                              test_case.fuzz_target, False, [],
                                              [], test_case.test_case_path)
@@ -74,17 +68,12 @@
 
   def test_detect_main_repo_from_commit(self):
     """Test the detect main repo function from build specific commit module."""
-    # TODO(metzman): Fix these tests so they don't randomly break because of
-    # changes in the outside world.
     for example_repo in test_repos.TEST_REPOS:
-      if example_repo.new_commit:
-        # TODO(metzman): This function calls _build_image_with_retries which
-        # has a long delay (30 seconds). Figure out how to make this quicker.
-        repo_origin, repo_name = build_specified_commit.detect_main_repo(
-            example_repo.project_name, commit=example_repo.new_commit)
-        self.assertEqual(repo_origin, example_repo.git_url)
-        self.assertEqual(repo_name,
-                         os.path.join('/src', example_repo.oss_repo_name))
+      repo_origin, repo_name = build_specified_commit.detect_main_repo(
+          example_repo.project_name, commit=example_repo.new_commit)
+      self.assertEqual(repo_origin, example_repo.git_url)
+      self.assertEqual(repo_name,
+                       os.path.join('/src', example_repo.oss_repo_name))
 
     repo_origin, repo_name = build_specified_commit.detect_main_repo(
         test_repos.INVALID_REPO.project_name,
@@ -95,16 +84,11 @@
   def test_detect_main_repo_from_name(self):
     """Test the detect main repo function from build specific commit module."""
     for example_repo in test_repos.TEST_REPOS:
-      if example_repo.project_name == 'gonids':
-        # It's unclear how this test ever passed, but we can't infer the repo
-        # because gonids doesn't really check it out, it uses "go get".
-        continue
       repo_origin, repo_name = build_specified_commit.detect_main_repo(
           example_repo.project_name, repo_name=example_repo.git_repo_name)
       self.assertEqual(repo_origin, example_repo.git_url)
-      self.assertEqual(
-          repo_name,
-          os.path.join(example_repo.image_location, example_repo.oss_repo_name))
+      self.assertEqual(repo_name,
+                       os.path.join('/src', example_repo.oss_repo_name))
 
     repo_origin, repo_name = build_specified_commit.detect_main_repo(
         test_repos.INVALID_REPO.project_name,
@@ -114,6 +98,7 @@
 
 
 if __name__ == '__main__':
+
   # Change to oss-fuzz main directory so helper.py runs correctly.
   if os.getcwd() != os.path.dirname(TEST_DIR_PATH):
     os.chdir(os.path.dirname(TEST_DIR_PATH))
diff --git a/infra/ci/build.py b/infra/ci/build.py
deleted file mode 100755
index addeb78..0000000
--- a/infra/ci/build.py
+++ /dev/null
@@ -1,262 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Build modified projects."""
-
-from __future__ import print_function
-
-import enum
-import os
-import re
-import sys
-import subprocess
-import yaml
-
-CANARY_PROJECT = 'skcms'
-
-DEFAULT_ARCHITECTURES = ['x86_64']
-DEFAULT_ENGINES = ['afl', 'honggfuzz', 'libfuzzer']
-DEFAULT_SANITIZERS = ['address', 'undefined']
-
-# Languages from project.yaml that have code coverage support.
-LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'c++', 'go', 'rust']
-
-
-def get_changed_files_output():
-  """Returns the output of a git command that discovers changed files."""
-  branch_commit_hash = subprocess.check_output(
-      ['git', 'merge-base', 'FETCH_HEAD', 'origin/HEAD']).strip().decode()
-
-  return subprocess.check_output(
-      ['git', 'diff', '--name-only', branch_commit_hash + '..']).decode()
-
-
-def get_modified_buildable_projects():
-  """Returns a list of all the projects modified in this commit that have a
-  build.sh file."""
-  git_output = get_changed_files_output()
-  projects_regex = '.*projects/(?P<name>.*)/.*\n'
-  modified_projects = set(re.findall(projects_regex, git_output))
-  projects_dir = os.path.join(get_oss_fuzz_root(), 'projects')
-  # Filter out projects without Dockerfile files since new projects and reverted
-  # projects frequently don't have them. In these cases we don't want Travis's
-  # builds to fail.
-  modified_buildable_projects = []
-  for project in modified_projects:
-    if not os.path.exists(os.path.join(projects_dir, project, 'Dockerfile')):
-      print('Project {0} does not have Dockerfile. skipping build.'.format(
-          project))
-      continue
-    modified_buildable_projects.append(project)
-  return modified_buildable_projects
-
-
-def get_oss_fuzz_root():
-  """Get the absolute path of the root of the oss-fuzz checkout."""
-  script_path = os.path.realpath(__file__)
-  return os.path.abspath(
-      os.path.dirname(os.path.dirname(os.path.dirname(script_path))))
-
-
-def execute_helper_command(helper_command):
-  """Execute |helper_command| using helper.py."""
-  root = get_oss_fuzz_root()
-  script_path = os.path.join(root, 'infra', 'helper.py')
-  command = ['python', script_path] + helper_command
-  print('Running command: %s' % ' '.join(command))
-  subprocess.check_call(command)
-
-
-def build_fuzzers(project, engine, sanitizer, architecture):
-  """Execute helper.py's build_fuzzers command on |project|. Build the fuzzers
-  with |engine| and |sanitizer| for |architecture|."""
-  execute_helper_command([
-      'build_fuzzers', project, '--engine', engine, '--sanitizer', sanitizer,
-      '--architecture', architecture
-  ])
-
-
-def check_build(project, engine, sanitizer, architecture):
-  """Execute helper.py's check_build command on |project|, assuming it was most
-  recently built with |engine| and |sanitizer| for |architecture|."""
-  execute_helper_command([
-      'check_build', project, '--engine', engine, '--sanitizer', sanitizer,
-      '--architecture', architecture
-  ])
-
-
-def should_build_coverage(project_yaml):
-  """Returns True if a coverage build should be done based on project.yaml
-  contents."""
-  # Enable coverage builds on projects that use engines. Those that don't use
-  # engines shouldn't get coverage builds.
-  engines = project_yaml.get('fuzzing_engines', DEFAULT_ENGINES)
-  engineless = 'none' in engines
-  if engineless:
-    assert_message = ('Forbidden to specify multiple engines for '
-                      '"fuzzing_engines" if "none" is specified.')
-    assert len(engines) == 1, assert_message
-    return False
-
-  language = project_yaml.get('language')
-  if language not in LANGUAGES_WITH_COVERAGE_SUPPORT:
-    print(('Project is written in "{language}", '
-           'coverage is not supported yet.').format(language=language))
-    return False
-
-  return True
-
-
-def should_build(project_yaml):
-  """Returns True on if the build specified is enabled in the project.yaml."""
-
-  if os.getenv('SANITIZER') == 'coverage':
-    # This assumes we only do coverage builds with libFuzzer on x86_64.
-    return should_build_coverage(project_yaml)
-
-  def is_enabled(env_var, yaml_name, defaults):
-    """Is the value of |env_var| enabled in |project_yaml| (in the |yaml_name|
-    section)? Uses |defaults| if |yaml_name| section is unspecified."""
-    return os.getenv(env_var) in project_yaml.get(yaml_name, defaults)
-
-  return (is_enabled('ENGINE', 'fuzzing_engines', DEFAULT_ENGINES) and
-          is_enabled('SANITIZER', 'sanitizers', DEFAULT_SANITIZERS) and
-          is_enabled('ARCHITECTURE', 'architectures', DEFAULT_ARCHITECTURES))
-
-
-def build_project(project):
-  """Do the build of |project| that is specified by the environment variables -
-  SANITIZER, ENGINE, and ARCHITECTURE."""
-  root = get_oss_fuzz_root()
-  project_yaml_path = os.path.join(root, 'projects', project, 'project.yaml')
-  with open(project_yaml_path) as file_handle:
-    project_yaml = yaml.safe_load(file_handle)
-
-  if project_yaml.get('disabled', False):
-    print('Project {0} is disabled, skipping build.'.format(project))
-    return
-
-  engine = os.getenv('ENGINE')
-  sanitizer = os.getenv('SANITIZER')
-  architecture = os.getenv('ARCHITECTURE')
-
-  if not should_build(project_yaml):
-    print(('Specified build: engine: {0}, sanitizer: {1}, architecture: {2} '
-           'not enabled for this project: {3}. Skipping build.').format(
-               engine, sanitizer, architecture, project))
-
-    return
-
-  print('Building project', project)
-  build_fuzzers(project, engine, sanitizer, architecture)
-
-  if engine != 'none' and sanitizer != 'coverage':
-    check_build(project, engine, sanitizer, architecture)
-
-
-class BuildModifiedProjectsResult(enum.Enum):
-  """Enum containing the return values of build_modified_projects()."""
-  NONE_BUILT = 0
-  BUILD_SUCCESS = 1
-  BUILD_FAIL = 2
-
-
-def build_modified_projects():
-  """Build modified projects. Returns BuildModifiedProjectsResult.NONE_BUILT if
-  no builds were attempted. Returns BuildModifiedProjectsResult.BUILD_SUCCESS if
-  all attempts succeed, otherwise returns
-  BuildModifiedProjectsResult.BUILD_FAIL."""
-  projects = get_modified_buildable_projects()
-  if not projects:
-    return BuildModifiedProjectsResult.NONE_BUILT
-
-  failed_projects = []
-  for project in projects:
-    try:
-      build_project(project)
-    except subprocess.CalledProcessError:
-      failed_projects.append(project)
-
-  if failed_projects:
-    print('Failed projects:', ' '.join(failed_projects))
-    return BuildModifiedProjectsResult.BUILD_FAIL
-
-  return BuildModifiedProjectsResult.BUILD_SUCCESS
-
-
-def is_infra_changed():
-  """Returns True if the infra directory was changed."""
-  git_output = get_changed_files_output()
-  infra_code_regex = '.*infra/.*\n'
-  return re.search(infra_code_regex, git_output) is not None
-
-
-def build_base_images():
-  """Builds base images."""
-  # TODO(jonathanmetzman): Investigate why caching fails so often and
-  # when we improve it, build base-clang as well. Also, move this function
-  # to a helper command when we can support base-clang.
-  execute_helper_command(['pull_images'])
-  images = [
-      'base-image',
-      'base-builder',
-      'base-runner',
-  ]
-  for image in images:
-    try:
-      execute_helper_command(['build_image', image, '--no-pull'])
-    except subprocess.CalledProcessError:
-      return 1
-
-  return 0
-
-
-def build_canary_project():
-  """Builds a specific project when infra/ is changed to verify that infra/
-  changes don't break things. Returns False if build was attempted but
-  failed."""
-
-  try:
-    build_project('skcms')
-  except subprocess.CalledProcessError:
-    return False
-
-  return True
-
-
-def main():
-  """Build modified projects or canary project."""
-  infra_changed = is_infra_changed()
-  if infra_changed:
-    print('Pulling and building base images first.')
-    if build_base_images():
-      return 1
-
-  result = build_modified_projects()
-  if result == BuildModifiedProjectsResult.BUILD_FAIL:
-    return 1
-
-  # It's unnecessary to build the canary if we've built any projects already.
-  no_projects_built = result == BuildModifiedProjectsResult.NONE_BUILT
-  should_build_canary = no_projects_built and infra_changed
-  if should_build_canary and not build_canary_project():
-    return 1
-
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/infra/ci/build_test.py b/infra/ci/build_test.py
deleted file mode 100644
index 9da67e2..0000000
--- a/infra/ci/build_test.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Tests for build.py"""
-
-import os
-import sys
-import unittest
-from unittest import mock
-
-# pylint: disable=wrong-import-position
-INFRA_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-sys.path.append(INFRA_DIR)
-
-from ci import build
-
-
-def patch_environ(testcase_obj):
-  """Patch environment."""
-  env = {}
-  patcher = mock.patch.dict(os.environ, env)
-  testcase_obj.addCleanup(patcher.stop)
-  patcher.start()
-
-
-def _set_coverage_build():
-  """Set the right environment variables for a coverage build."""
-  os.environ['SANITIZER'] = 'coverage'
-  os.environ['ENGINE'] = 'libfuzzer'
-  os.environ['ARCHITECTURE'] = 'x86_64'
-
-
-class TestShouldBuild(unittest.TestCase):
-  """Tests that should_build() works as intended."""
-
-  def setUp(self):
-    patch_environ(self)
-
-  def test_none_engine_coverage_build(self):
-    """Tests that should_build returns False for a coverage build of a
-    project that specifies 'none' for fuzzing_engines."""
-    _set_coverage_build()
-    project_yaml = {
-        'language': 'c++',
-        'fuzzing_engines': ['none'],
-        'sanitizers': ['address']
-    }
-    self.assertFalse(build.should_build(project_yaml))
-
-  def test_unspecified_engines_coverage_build(self):
-    """Tests that should_build returns True for a coverage build of a
-    project that doesn't specify fuzzing_engines."""
-    _set_coverage_build()
-    project_yaml = {'language': 'c++'}
-    self.assertTrue(build.should_build(project_yaml))
-
-  def test_libfuzzer_coverage_build(self):
-    """Tests that should_build returns True for coverage build of a project
-    specifying 'libfuzzer' and for fuzzing_engines."""
-    _set_coverage_build()
-    project_yaml = {
-        'language': 'c++',
-        'fuzzing_engines': ['libfuzzer'],
-        'sanitizers': ['address']
-    }
-    self.assertTrue(build.should_build(project_yaml))
-
-  def test_go_coverage_build(self):
-    """Tests that should_build returns True for coverage build of a project
-    specifying 'libfuzzer' and for fuzzing_engines."""
-    _set_coverage_build()
-    project_yaml = {'language': 'go'}
-    self.assertTrue(build.should_build(project_yaml))
-
-  def test_engine_project_none_build(self):
-    """Tests that should_build returns False for an engine: 'none' build when
-    the project doesn't specify engines."""
-    os.environ['SANITIZER'] = 'address'
-    os.environ['ENGINE'] = 'none'
-    os.environ['ARCHITECTURE'] = 'x86_64'
-    project_yaml = {
-        'language': 'c++',
-        'fuzzing_engines': ['libfuzzer'],
-        'sanitizers': ['address']
-    }
-    self.assertFalse(build.should_build(project_yaml))
diff --git a/infra/ci/requirements.txt b/infra/ci/requirements.txt
deleted file mode 100644
index f0a8be0..0000000
--- a/infra/ci/requirements.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Requirements for submitting code changes to infra/ (needed by presubmit.py).
-parameterized==0.7.4
-pyfakefs==4.1.0
-pylint==2.5.3
-pytest==6.2.1
-pytest-xdist==2.2.0
-PyYAML==5.4
-yapf==0.30.0
diff --git a/infra/cifuzz/actions/Dockerfile b/infra/cifuzz/actions/Dockerfile
new file mode 100644
index 0000000..fe69d00
--- /dev/null
+++ b/infra/cifuzz/actions/Dockerfile
@@ -0,0 +1,44 @@
+# Copyright 2020 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+# Docker image to run CIFuzz in.
+
+FROM ubuntu:16.04
+
+RUN apt-get update && apt-get install -y git \
+    apt-transport-https \
+    ca-certificates \
+    curl \
+    gnupg2 \
+    software-properties-common \
+    python3
+
+
+RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && apt-key fingerprint 0EBFCD88
+RUN add-apt-repository \
+   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
+   xenial \
+   stable"
+
+RUN apt-get update && apt-get install docker-ce docker-ce-cli containerd.io -y
+
+ENV OSS_FUZZ_ROOT=/opt/oss-fuzz
+RUN git clone https://github.com/google/oss-fuzz.git ${OSS_FUZZ_ROOT}
+
+# Copies your code file from  action repository to the container
+COPY entrypoint.py /opt/entrypoint.py
+
+# Python file to execute when the docker container starts up
+ENTRYPOINT ["python3", "/opt/entrypoint.py"]
diff --git a/infra/cifuzz/actions/action.yml b/infra/cifuzz/actions/action.yml
new file mode 100644
index 0000000..7af4bd4
--- /dev/null
+++ b/infra/cifuzz/actions/action.yml
@@ -0,0 +1,17 @@
+# action.yml
+name: 'build-fuzzers'
+description: "Builds an OSS-Fuzz project's fuzzers."
+inputs:
+  project-name:
+    description: 'Name of the corresponding OSS-Fuzz project.'
+    required: true
+  fuzz-seconds:
+    description: 'The total time allotted for fuzzing in seconds.'
+    required: true
+    default: 360
+runs:
+  using: 'docker'
+  image: 'Dockerfile'
+  env:
+    PROJECT_NAME: ${{ inputs.project-name }}
+    FUZZ_SECONDS: ${{ inputs.fuzz-seconds }}
diff --git a/infra/cifuzz/actions/build_fuzzers/action.yml b/infra/cifuzz/actions/build_fuzzers/action.yml
deleted file mode 100644
index 835b7b4..0000000
--- a/infra/cifuzz/actions/build_fuzzers/action.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# action.yml
-name: 'build-fuzzers'
-description: "Builds an OSS-Fuzz project's fuzzers."
-inputs:
-  oss-fuzz-project-name:
-    description: 'Name of the corresponding OSS-Fuzz project.'
-    required: true
-  language:
-    description: 'Programming language project is written in.'
-    required: false
-    default: 'c++'
-  dry-run:
-    description: 'If set, run the action without actually reporting a failure.'
-    default: false
-  allowed-broken-targets-percentage:
-    description: 'The percentage of broken targets allowed in bad_build_check.'
-    required: false
-  sanitizer:
-    description: 'The sanitizer to build the fuzzers with.'
-    default: 'address'
-  project-src-path:
-    description: "The path to the project's source code checkout."
-    required: false
-  build-integration-path:
-    description: "The path to the the project's build integration."
-    required: false
-  bad-build-check:
-    description: "Whether or not OSS-Fuzz's check for bad builds should be done."
-    required: false
-    default: true
-runs:
-  using: 'docker'
-  image: '../../../build_fuzzers.Dockerfile'
-  env:
-    OSS_FUZZ_PROJECT_NAME: ${{ inputs.oss-fuzz-project-name }}
-    LANGUAGE: ${{ inputs.language }}
-    DRY_RUN: ${{ inputs.dry-run}}
-    ALLOWED_BROKEN_TARGETS_PERCENTAGE: ${{ inputs.allowed-broken-targets-percentage}}
-    SANITIZER: ${{ inputs.sanitizer }}
-    PROJECT_SRC_PATH: ${{ inputs.project-src-path }}
-    BUILD_INTEGRATION_PATH: ${{ inputs.build-integration-path }}
-    LOW_DISK_SPACE: 'True'
-    BAD_BUILD_CHECK: ${{ inputs.bad-build-check }}
diff --git a/infra/cifuzz/actions/entrypoint.py b/infra/cifuzz/actions/entrypoint.py
new file mode 100644
index 0000000..e680207
--- /dev/null
+++ b/infra/cifuzz/actions/entrypoint.py
@@ -0,0 +1,86 @@
+# Copyright 2020 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Builds and runs specific OSS-Fuzz project's fuzzers for CI tools."""
+import logging
+import os
+import sys
+
+# pylint: disable=wrong-import-position
+sys.path.append(os.path.join(os.environ['OSS_FUZZ_ROOT'], 'infra', 'cifuzz'))
+import cifuzz
+
+# TODO: Turn default logging to INFO when CIFuzz is stable
+logging.basicConfig(
+    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
+    level=logging.DEBUG)
+
+
+def main():
+  """Runs OSS-Fuzz project's fuzzers for CI tools.
+  This script is used to kick off the Github Actions CI tool. It is the
+  entrypoint  of the Dockerfile in this directory. This action can be added to
+  any OSS-Fuzz project's workflow that uses Github.
+
+  Required environment variables:
+    PROJECT_NAME: The name of OSS-Fuzz project.
+    FUZZ_TIME: The length of time in seconds that fuzzers are to be run.
+    GITHUB_REPOSITORY: The name of the Github repo that called this script.
+    GITHUB_SHA: The commit SHA that triggered this script.
+    GITHUB_REF: The pull request reference that triggered this script.
+    GITHUB_EVENT_NAME: The name of the hook event that triggered this script.
+
+  Returns:
+    0 on success or 1 on Failure.
+  """
+  oss_fuzz_project_name = os.environ.get('PROJECT_NAME')
+  fuzz_seconds = int(os.environ.get('FUZZ_SECONDS', 360))
+  github_repo_name = os.path.basename(os.environ.get('GITHUB_REPOSITORY'))
+  pr_ref = os.environ.get('GITHUB_REF')
+  commit_sha = os.environ.get('GITHUB_SHA')
+  event = os.environ.get('GITHUB_EVENT_NAME')
+
+  # Get the shared volume directory and create required directorys.
+  workspace = os.environ.get('GITHUB_WORKSPACE')
+  if not workspace:
+    logging.error('This script needs to be run in the Github action context.')
+    return 1
+
+  if event == 'push' and not cifuzz.build_fuzzers(
+      oss_fuzz_project_name, github_repo_name, workspace,
+      commit_sha=commit_sha):
+    logging.error('Error building fuzzers for project %s with commit %s.',
+                  oss_fuzz_project_name, commit_sha)
+    return 1
+  if event == 'pull_request' and not cifuzz.build_fuzzers(
+      oss_fuzz_project_name, github_repo_name, workspace, pr_ref=pr_ref):
+    logging.error('Error building fuzzers for project %s with pull request %s.',
+                  oss_fuzz_project_name, pr_ref)
+    return 1
+
+  # Run the specified project's fuzzers from the build.
+  run_status, bug_found = cifuzz.run_fuzzers(oss_fuzz_project_name,
+                                             fuzz_seconds, workspace)
+  if not run_status:
+    logging.error('Error occured while running fuzzers for project %s.',
+                  oss_fuzz_project_name)
+    return 1
+  if bug_found:
+    logging.info('Bug found.')
+    # Return 2 when a bug was found by a fuzzer causing the CI to fail.
+    return 2
+  return 0
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/infra/cifuzz/actions/run_fuzzers/action.yml b/infra/cifuzz/actions/run_fuzzers/action.yml
deleted file mode 100644
index d1c03c8..0000000
--- a/infra/cifuzz/actions/run_fuzzers/action.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-# action.yml
-name: 'run-fuzzers'
-description: 'Runs fuzz target binaries for a specified length of time.'
-inputs:
-  oss-fuzz-project-name:
-    description: 'The OSS-Fuzz project name.'
-    required: true
-  language:
-    description: 'Programming language project is written in.'
-    required: false
-    default: 'c++'
-  fuzz-seconds:
-    description: 'The total time allotted for fuzzing in seconds.'
-    required: true
-    default: 600
-  dry-run:
-    description: 'If set, run the action without actually reporting a failure.'
-    default: false
-  sanitizer:
-    description: 'The sanitizer to run the fuzzers with.'
-    default: 'address'
-  build-integration-path:
-    description: "The path to the the project's build integration."
-    required: false
-  run-fuzzers-mode:
-    description: |
-      The mode to run the fuzzers with ("ci" or "batch").
-      "ci" is for fuzzing a pull request or commit.
-      "batch" is for non-interactive fuzzing of an entire project.
-      "batch" is in alpha and should not be used in production.
-    required: false
-    default: 'ci'
-runs:
-  using: 'docker'
-  image: '../../../run_fuzzers.Dockerfile'
-  env:
-    OSS_FUZZ_PROJECT_NAME: ${{ inputs.oss-fuzz-project-name }}
-    LANGUAGE: ${{ inputs.language }}
-    FUZZ_SECONDS: ${{ inputs.fuzz-seconds }}
-    DRY_RUN: ${{ inputs.dry-run}}
-    SANITIZER: ${{ inputs.sanitizer }}
-    RUN_FUZZERS_MODE: ${{ inputs.run-fuzzers-mode }}
-    # TODO(metzman): Even though this param is used for building, it's needed
-    # for running because we use it to distinguish OSS-Fuzz from non-OSS-Fuzz.
-    # We should do something explicit instead.
-    BUILD_INTEGRATION_PATH: ${{ inputs.build-integration-path }}
-    LOW_DISK_SPACE: 'True'
diff --git a/infra/cifuzz/affected_fuzz_targets.py b/infra/cifuzz/affected_fuzz_targets.py
deleted file mode 100644
index f9f2242..0000000
--- a/infra/cifuzz/affected_fuzz_targets.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for dealing with fuzz targets affected by the change-under-test
-(CUT)."""
-import logging
-import os
-import sys
-
-import coverage
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-import utils
-
-
-def remove_unaffected_fuzz_targets(project_name, out_dir, files_changed,
-                                   repo_path):
-  """Removes all non affected fuzz targets in the out directory.
-
-  Args:
-    project_name: The name of the relevant OSS-Fuzz project.
-    out_dir: The location of the fuzz target binaries.
-    files_changed: A list of files changed compared to HEAD.
-    repo_path: The location of the OSS-Fuzz repo in the docker image.
-
-  This function will not delete fuzz targets unless it knows that the fuzz
-  targets are unaffected. For example, this means that fuzz targets which don't
-  have coverage data on will not be deleted.
-  """
-  # TODO(metzman): Make this use clusterfuzz deployment.
-  if not files_changed:
-    # Don't remove any fuzz targets if there is no difference from HEAD.
-    logging.info('No files changed compared to HEAD.')
-    return
-
-  logging.info('Files changed in PR: %s', files_changed)
-
-  fuzz_target_paths = utils.get_fuzz_targets(out_dir)
-  if not fuzz_target_paths:
-    # Nothing to remove.
-    logging.error('No fuzz targets found in out dir.')
-    return
-
-  coverage_getter = coverage.OssFuzzCoverageGetter(project_name, repo_path)
-  if not coverage_getter.fuzzer_stats_url:
-    # Don't remove any fuzz targets unless we have data.
-    logging.error('Could not find latest coverage report.')
-    return
-
-  affected_fuzz_targets = get_affected_fuzz_targets(coverage_getter,
-                                                    fuzz_target_paths,
-                                                    files_changed)
-
-  if not affected_fuzz_targets:
-    logging.info('No affected fuzz targets detected, keeping all as fallback.')
-    return
-
-  logging.info('Using affected fuzz targets: %s.', affected_fuzz_targets)
-  unaffected_fuzz_targets = set(fuzz_target_paths) - affected_fuzz_targets
-  logging.info('Removing unaffected fuzz targets: %s.', unaffected_fuzz_targets)
-
-  # Remove all the targets that are not affected.
-  for fuzz_target_path in unaffected_fuzz_targets:
-    try:
-      os.remove(fuzz_target_path)
-    except OSError as error:
-      logging.error('%s occurred while removing file %s', error,
-                    fuzz_target_path)
-
-
-def is_fuzz_target_affected(coverage_getter, fuzz_target_path, files_changed):
-  """Returns True if a fuzz target (|fuzz_target_path|) is affected by
-  |files_changed|."""
-  fuzz_target = os.path.basename(fuzz_target_path)
-  covered_files = coverage_getter.get_files_covered_by_target(fuzz_target)
-  if not covered_files:
-    # Assume a fuzz target is affected if we can't get its coverage from
-    # OSS-Fuzz.
-    # TODO(metzman): Figure out what we should do if covered_files is [].
-    # Should we act as if we couldn't get the coverage?
-    logging.info('Could not get coverage for %s. Treating as affected.',
-                 fuzz_target)
-    return True
-
-  logging.info('Fuzz target %s is affected by: %s', fuzz_target, covered_files)
-  for filename in files_changed:
-    if filename in covered_files:
-      logging.info('Fuzz target %s is affected by changed file: %s',
-                   fuzz_target, filename)
-      return True
-
-  logging.info('Fuzz target %s is not affected.', fuzz_target)
-  return False
-
-
-def get_affected_fuzz_targets(coverage_getter, fuzz_target_paths,
-                              files_changed):
-  """Returns a list of paths of affected targets."""
-  affected_fuzz_targets = set()
-  for fuzz_target_path in fuzz_target_paths:
-    if is_fuzz_target_affected(coverage_getter, fuzz_target_path,
-                               files_changed):
-      affected_fuzz_targets.add(fuzz_target_path)
-
-  return affected_fuzz_targets
diff --git a/infra/cifuzz/affected_fuzz_targets_test.py b/infra/cifuzz/affected_fuzz_targets_test.py
deleted file mode 100644
index 05f27c0..0000000
--- a/infra/cifuzz/affected_fuzz_targets_test.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for affected_fuzz_targets.py"""
-import os
-import shutil
-import tempfile
-import unittest
-from unittest import mock
-
-import parameterized
-
-import affected_fuzz_targets
-
-# pylint: disable=protected-access
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-EXAMPLE_FILE_CHANGED = 'test.txt'
-
-TEST_DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                              'test_data')
-
-
-class RemoveUnaffectedFuzzTargets(unittest.TestCase):
-  """Tests remove_unaffected_fuzzers."""
-
-  TEST_FUZZER_1 = os.path.join(TEST_DATA_PATH, 'out', 'example_crash_fuzzer')
-  TEST_FUZZER_2 = os.path.join(TEST_DATA_PATH, 'out', 'example_nocrash_fuzzer')
-
-  # yapf: disable
-  @parameterized.parameterized.expand([
-      # Tests a specific affected fuzzers is kept.
-      ([[EXAMPLE_FILE_CHANGED], None], 2,),
-
-      # Tests specific affected fuzzer is kept.
-      ([[EXAMPLE_FILE_CHANGED], ['not/a/real/file']], 1),
-
-      # Tests all fuzzers are kept if none are deemed affected.
-      ([None, None], 2),
-
-      # Tests that multiple fuzzers are kept if multiple fuzzers are affected.
-      ([[EXAMPLE_FILE_CHANGED], [EXAMPLE_FILE_CHANGED]], 2),
-      ])
-  # yapf: enable
-  def test_remove_unaffected_fuzz_targets(self, side_effect, expected_dir_len):
-    """Tests that remove_unaffected_fuzzers has the intended effect."""
-    # We can't use fakefs in this test because this test executes
-    # utils.is_fuzz_target_local. This function relies on the executable bit
-    # being set, which doesn't work properly in fakefs.
-    with tempfile.TemporaryDirectory() as tmp_dir, mock.patch(
-        'coverage.OssFuzzCoverageGetter.get_files_covered_by_target'
-    ) as mocked_get_files:
-      with mock.patch('coverage._get_fuzzer_stats_dir_url', return_value=1):
-        mocked_get_files.side_effect = side_effect
-        shutil.copy(self.TEST_FUZZER_1, tmp_dir)
-        shutil.copy(self.TEST_FUZZER_2, tmp_dir)
-        affected_fuzz_targets.remove_unaffected_fuzz_targets(
-            EXAMPLE_PROJECT, tmp_dir, [EXAMPLE_FILE_CHANGED], '')
-        self.assertEqual(expected_dir_len, len(os.listdir(tmp_dir)))
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/build_fuzzers.py b/infra/cifuzz/build_fuzzers.py
deleted file mode 100644
index 78180b5..0000000
--- a/infra/cifuzz/build_fuzzers.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module used by CI tools in order to interact with fuzzers. This module helps
-CI tools to build fuzzers."""
-
-import logging
-import os
-import sys
-
-import affected_fuzz_targets
-import continuous_integration
-import docker
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-import helper
-import utils
-
-# Default fuzz configuration.
-DEFAULT_ENGINE = 'libfuzzer'
-DEFAULT_ARCHITECTURE = 'x86_64'
-
-logging.basicConfig(
-    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
-    level=logging.DEBUG)
-
-
-def check_project_src_path(project_src_path):
-  """Returns True if |project_src_path| exists."""
-  if not os.path.exists(project_src_path):
-    logging.error(
-        'PROJECT_SRC_PATH: %s does not exist. '
-        'Are you mounting it correctly?', project_src_path)
-    return False
-  return True
-
-
-# pylint: disable=too-many-arguments
-
-
-class Builder:  # pylint: disable=too-many-instance-attributes
-  """Class for fuzzer builders."""
-
-  def __init__(self, config, ci_system):
-    self.config = config
-    self.ci_system = ci_system
-    self.out_dir = os.path.join(config.workspace, 'out')
-    os.makedirs(self.out_dir, exist_ok=True)
-    self.work_dir = os.path.join(config.workspace, 'work')
-    os.makedirs(self.work_dir, exist_ok=True)
-    self.image_repo_path = None
-    self.host_repo_path = None
-    self.repo_manager = None
-
-  def build_image_and_checkout_src(self):
-    """Builds the project builder image and checkout source code for the patch
-    we want to fuzz (if necessary). Returns True on success.
-    Must be implemented by child classes."""
-    result = self.ci_system.prepare_for_fuzzer_build()
-    if not result.success:
-      return False
-    self.image_repo_path = result.image_repo_path
-    self.repo_manager = result.repo_manager
-    self.host_repo_path = self.repo_manager.repo_dir
-    return True
-
-  def build_fuzzers(self):
-    """Moves the source code we want to fuzz into the project builder and builds
-    the fuzzers from that source code. Returns True on success."""
-    docker_args = get_common_docker_args(self.config.sanitizer,
-                                         self.config.language)
-    container = utils.get_container_name()
-
-    if container:
-      docker_args.extend(
-          _get_docker_build_fuzzers_args_container(self.out_dir, container))
-    else:
-      docker_args.extend(
-          _get_docker_build_fuzzers_args_not_container(self.out_dir,
-                                                       self.host_repo_path))
-
-    if self.config.sanitizer == 'memory':
-      docker_args.extend(_get_docker_build_fuzzers_args_msan(self.work_dir))
-      self.handle_msan_prebuild(container)
-
-    docker_args.extend([
-        docker.get_project_image_name(self.config.project_name),
-        '/bin/bash',
-        '-c',
-    ])
-    rm_path = os.path.join(self.image_repo_path, '*')
-    image_src_path = os.path.dirname(self.image_repo_path)
-    bash_command = 'rm -rf {0} && cp -r {1} {2} && compile'.format(
-        rm_path, self.host_repo_path, image_src_path)
-    docker_args.append(bash_command)
-    logging.info('Building with %s sanitizer.', self.config.sanitizer)
-    if helper.docker_run(docker_args):
-      # docker_run returns nonzero on failure.
-      logging.error('Building fuzzers failed.')
-      return False
-
-    if self.config.sanitizer == 'memory':
-      self.handle_msan_postbuild(container)
-    return True
-
-  def handle_msan_postbuild(self, container):
-    """Post-build step for MSAN builds. Patches the build to use MSAN
-    libraries."""
-    helper.docker_run([
-        '--volumes-from', container, '-e',
-        'WORK={work_dir}'.format(work_dir=self.work_dir),
-        docker.MSAN_LIBS_BUILDER_TAG, 'patch_build.py', '/out'
-    ])
-
-  def handle_msan_prebuild(self, container):
-    """Pre-build step for MSAN builds. Copies MSAN libs to |msan_libs_dir| and
-    returns docker arguments to use that directory for MSAN libs."""
-    logging.info('Copying MSAN libs.')
-    helper.docker_run([
-        '--volumes-from', container, docker.MSAN_LIBS_BUILDER_TAG, 'bash', '-c',
-        'cp -r /msan {work_dir}'.format(work_dir=self.work_dir)
-    ])
-
-  def build(self):
-    """Builds the image, checkouts the source (if needed), builds the fuzzers
-    and then removes the unaffectted fuzzers. Returns True on success."""
-    methods = [
-        self.build_image_and_checkout_src, self.build_fuzzers,
-        self.remove_unaffected_fuzz_targets
-    ]
-    for method in methods:
-      if not method():
-        return False
-    return True
-
-  def remove_unaffected_fuzz_targets(self):
-    """Removes the fuzzers unaffected by the patch."""
-    if self.config.keep_unaffected_fuzz_targets:
-      logging.info('Not removing unaffected fuzz targets.')
-      return True
-
-    logging.info('Removing unaffected fuzz targets.')
-    changed_files = self.ci_system.get_changed_code_under_test(
-        self.repo_manager)
-    affected_fuzz_targets.remove_unaffected_fuzz_targets(
-        self.config.project_name, self.out_dir, changed_files,
-        self.image_repo_path)
-    return True
-
-
-def build_fuzzers(config):
-  """Builds all of the fuzzers for a specific OSS-Fuzz project.
-
-  Args:
-    project_name: The name of the OSS-Fuzz project being built.
-    project_repo_name: The name of the project's repo.
-    workspace: The location in a shared volume to store a git repo and build
-      artifacts.
-    pr_ref: The pull request reference to be built.
-    commit_sha: The commit sha for the project to be built at.
-    sanitizer: The sanitizer the fuzzers should be built with.
-
-  Returns:
-    True if build succeeded or False on failure.
-  """
-  # Do some quick validation.
-  if config.project_src_path and not check_project_src_path(
-      config.project_src_path):
-    return False
-
-  # Get the builder and then build the fuzzers.
-  ci_system = continuous_integration.get_ci(config)
-  logging.info('ci_system: %s.', ci_system)
-  builder = Builder(config, ci_system)
-  return builder.build()
-
-
-def get_common_docker_args(sanitizer, language):
-  """Returns a list of common docker arguments."""
-  return [
-      '--cap-add',
-      'SYS_PTRACE',
-      '-e',
-      'FUZZING_ENGINE=' + DEFAULT_ENGINE,
-      '-e',
-      'SANITIZER=' + sanitizer,
-      '-e',
-      'ARCHITECTURE=' + DEFAULT_ARCHITECTURE,
-      '-e',
-      'CIFUZZ=True',
-      '-e',
-      'FUZZING_LANGUAGE=' + language,
-  ]
-
-
-def check_fuzzer_build(out_dir,
-                       sanitizer,
-                       language,
-                       allowed_broken_targets_percentage=None):
-  """Checks the integrity of the built fuzzers.
-
-  Args:
-    out_dir: The directory containing the fuzzer binaries.
-    sanitizer: The sanitizer the fuzzers are built with.
-
-  Returns:
-    True if fuzzers are correct.
-  """
-  if not os.path.exists(out_dir):
-    logging.error('Invalid out directory: %s.', out_dir)
-    return False
-  if not os.listdir(out_dir):
-    logging.error('No fuzzers found in out directory: %s.', out_dir)
-    return False
-
-  command = get_common_docker_args(sanitizer, language)
-
-  if allowed_broken_targets_percentage is not None:
-    command += [
-        '-e',
-        ('ALLOWED_BROKEN_TARGETS_PERCENTAGE=' +
-         allowed_broken_targets_percentage)
-    ]
-
-  container = utils.get_container_name()
-  if container:
-    command += ['-e', 'OUT=' + out_dir, '--volumes-from', container]
-  else:
-    command += ['-v', '%s:/out' % out_dir]
-  command.extend(['-t', docker.BASE_RUNNER_TAG, 'test_all.py'])
-  exit_code = helper.docker_run(command)
-  logging.info('check fuzzer build exit code: %d', exit_code)
-  if exit_code:
-    logging.error('Check fuzzer build failed.')
-    return False
-  return True
-
-
-def _get_docker_build_fuzzers_args_container(host_out_dir, container):
-  """Returns arguments to the docker build arguments that are needed to use
-  |host_out_dir| when the host of the OSS-Fuzz builder container is another
-  container."""
-  return ['-e', 'OUT=' + host_out_dir, '--volumes-from', container]
-
-
-def _get_docker_build_fuzzers_args_not_container(host_out_dir, host_repo_path):
-  """Returns arguments to the docker build arguments that are needed to use
-  |host_out_dir| when the host of the OSS-Fuzz builder container is not
-  another container."""
-  image_out_dir = '/out'
-  return [
-      '-e',
-      'OUT=' + image_out_dir,
-      '-v',
-      '%s:%s' % (host_out_dir, image_out_dir),
-      '-v',
-      '%s:%s' % (host_repo_path, host_repo_path),
-  ]
-
-
-def _get_docker_build_fuzzers_args_msan(work_dir):
-  """Returns arguments to the docker build command that are needed to use
-  MSAN."""
-  # TODO(metzman): MSAN is broken, fix.
-  return [
-      '-e', 'MSAN_LIBS_PATH={msan_libs_path}'.format(
-          msan_libs_path=os.path.join(work_dir, 'msan'))
-  ]
diff --git a/infra/cifuzz/build_fuzzers_entrypoint.py b/infra/cifuzz/build_fuzzers_entrypoint.py
deleted file mode 100644
index 04f5620..0000000
--- a/infra/cifuzz/build_fuzzers_entrypoint.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Builds a specific OSS-Fuzz project's fuzzers for CI tools."""
-import logging
-import os
-import sys
-
-import build_fuzzers
-import config_utils
-
-# pylint: disable=c-extension-no-member
-# pylint gets confused because of the relative import of cifuzz.
-
-# TODO: Turn default logging to INFO when CIFuzz is stable
-logging.basicConfig(
-    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
-    level=logging.DEBUG)
-
-
-def main():
-  """Build OSS-Fuzz project's fuzzers for CI tools.
-  This script is used to kick off the Github Actions CI tool. It is the
-  entrypoint of the Dockerfile in this directory. This action can be added to
-  any OSS-Fuzz project's workflow that uses Github.
-
-  Note: The resulting clusterfuzz binaries of this build are placed in
-  the directory: ${GITHUB_WORKSPACE}/out
-
-  Required environment variables:
-    OSS_FUZZ_PROJECT_NAME: The name of OSS-Fuzz project.
-    GITHUB_REPOSITORY: The name of the Github repo that called this script.
-    GITHUB_SHA: The commit SHA that triggered this script.
-    GITHUB_EVENT_NAME: The name of the hook event that triggered this script.
-    GITHUB_EVENT_PATH:
-      The path to the file containing the POST payload of the webhook:
-      https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners#filesystems-on-github-hosted-runners
-    GITHUB_WORKSPACE: The shared volume directory where input artifacts are.
-    DRY_RUN: If true, no failures will surface.
-    SANITIZER: The sanitizer to use when running fuzzers.
-
-  Returns:
-    0 on success or 1 on failure.
-  """
-  config = config_utils.BuildFuzzersConfig()
-
-  if config.dry_run:
-    # Sets the default return code on error to success.
-    returncode = 0
-  else:
-    # The default return code when an error occurs.
-    returncode = 1
-
-  if not config.workspace:
-    logging.error('This script needs to be run within Github actions.')
-    return returncode
-
-  if not build_fuzzers.build_fuzzers(config):
-    logging.error(
-        'Error building fuzzers for project %s (commit: %s, pr_ref: %s).',
-        config.project_name, config.commit_sha, config.pr_ref)
-    return returncode
-
-  out_dir = os.path.join(config.workspace, 'out')
-
-  if not config.bad_build_check:
-    # If we've gotten to this point and we don't need to do bad_build_check,
-    # then the build has succeeded.
-    returncode = 0
-  # yapf: disable
-  elif build_fuzzers.check_fuzzer_build(
-      out_dir,
-      config.sanitizer,
-      config.language,
-      allowed_broken_targets_percentage=config.allowed_broken_targets_percentage
-  ):
-    # yapf: enable
-    returncode = 0
-
-  return returncode
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/infra/cifuzz/build_fuzzers_test.py b/infra/cifuzz/build_fuzzers_test.py
deleted file mode 100644
index 2987788..0000000
--- a/infra/cifuzz/build_fuzzers_test.py
+++ /dev/null
@@ -1,363 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests the functionality of the cifuzz module."""
-import os
-import shutil
-import sys
-import tempfile
-import unittest
-from unittest import mock
-
-import parameterized
-
-# pylint: disable=wrong-import-position
-INFRA_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-sys.path.append(INFRA_DIR)
-
-OSS_FUZZ_DIR = os.path.dirname(INFRA_DIR)
-
-import build_fuzzers
-import config_utils
-import continuous_integration
-import test_helpers
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-# Location of data used for testing.
-TEST_DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                              'test_data')
-
-# An example fuzzer that triggers an crash.
-# Binary is a copy of the example project's do_stuff_fuzzer and can be
-# generated by running "python3 infra/helper.py build_fuzzers example".
-EXAMPLE_CRASH_FUZZER = 'example_crash_fuzzer'
-
-# An example fuzzer that does not trigger a crash.
-# Binary is a modified version of example project's do_stuff_fuzzer. It is
-# created by removing the bug in my_api.cpp.
-EXAMPLE_NOCRASH_FUZZER = 'example_nocrash_fuzzer'
-
-# A fuzzer to be built in build_fuzzers integration tests.
-EXAMPLE_BUILD_FUZZER = 'do_stuff_fuzzer'
-
-# pylint: disable=no-self-use,protected-access,too-few-public-methods
-
-
-def create_config(**kwargs):
-  """Creates a config object and then sets every attribute that is a key in
-  |kwargs| to the corresponding value. Asserts that each key in |kwargs| is an
-  attribute of Config."""
-  with mock.patch('os.path.basename', return_value=None), mock.patch(
-      'config_utils.get_project_src_path',
-      return_value=None), mock.patch('config_utils._is_dry_run',
-                                     return_value=True):
-    config = config_utils.BuildFuzzersConfig()
-
-  for key, value in kwargs.items():
-    assert hasattr(config, key), 'Config doesn\'t have attribute: ' + key
-    setattr(config, key, value)
-  return config
-
-
-class BuildFuzzersTest(unittest.TestCase):
-  """Unit tests for build_fuzzers."""
-
-  @mock.patch('build_specified_commit.detect_main_repo',
-              return_value=('example.com', '/path'))
-  @mock.patch('repo_manager._clone', return_value=None)
-  @mock.patch('continuous_integration.checkout_specified_commit')
-  @mock.patch('helper.docker_run')
-  def test_cifuzz_env_var(self, mocked_docker_run, _, __, ___):
-    """Tests that the CIFUZZ env var is set."""
-
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      build_fuzzers.build_fuzzers(
-          create_config(project_name=EXAMPLE_PROJECT,
-                        project_repo_name=EXAMPLE_PROJECT,
-                        workspace=tmp_dir,
-                        pr_ref='refs/pull/1757/merge'))
-    docker_run_command = mocked_docker_run.call_args_list[0][0][0]
-
-    def command_has_env_var_arg(command, env_var_arg):
-      for idx, element in enumerate(command):
-        if idx == 0:
-          continue
-
-        if element == env_var_arg and command[idx - 1] == '-e':
-          return True
-      return False
-
-    self.assertTrue(command_has_env_var_arg(docker_run_command, 'CIFUZZ=True'))
-
-
-class InternalGithubBuildTest(unittest.TestCase):
-  """Tests for building OSS-Fuzz projects on GitHub actions."""
-  PROJECT_NAME = 'myproject'
-  PROJECT_REPO_NAME = 'myproject'
-  SANITIZER = 'address'
-  COMMIT_SHA = 'fake'
-  PR_REF = 'fake'
-
-  def _create_builder(self, tmp_dir):
-    """Creates an InternalGithubBuilder and returns it."""
-    config = create_config(project_name=self.PROJECT_NAME,
-                           project_repo_name=self.PROJECT_REPO_NAME,
-                           workspace=tmp_dir,
-                           sanitizer=self.SANITIZER,
-                           commit_sha=self.COMMIT_SHA,
-                           pr_ref=self.PR_REF,
-                           is_github=True)
-    ci_system = continuous_integration.get_ci(config)
-    return build_fuzzers.Builder(config, ci_system)
-
-  @mock.patch('repo_manager._clone', side_effect=None)
-  @mock.patch('continuous_integration.checkout_specified_commit',
-              side_effect=None)
-  def test_correct_host_repo_path(self, _, __):
-    """Tests that the correct self.host_repo_path is set by
-    build_image_and_checkout_src. Specifically, we want the name of the
-    directory the repo is in to match the name used in the docker
-    image/container, so that it will replace the host's copy properly."""
-    image_repo_path = '/src/repo_dir'
-    with tempfile.TemporaryDirectory() as tmp_dir, mock.patch(
-        'build_specified_commit.detect_main_repo',
-        return_value=('inferred_url', image_repo_path)):
-      builder = self._create_builder(tmp_dir)
-      builder.build_image_and_checkout_src()
-
-    self.assertEqual(os.path.basename(builder.host_repo_path),
-                     os.path.basename(image_repo_path))
-
-
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class BuildFuzzersIntegrationTest(unittest.TestCase):
-  """Integration tests for build_fuzzers."""
-
-  def setUp(self):
-    self.tmp_dir_obj = tempfile.TemporaryDirectory()
-    self.workspace = self.tmp_dir_obj.name
-    self.out_dir = os.path.join(self.workspace, 'out')
-    test_helpers.patch_environ(self)
-
-  def tearDown(self):
-    self.tmp_dir_obj.cleanup()
-
-  def test_external_github_project(self):
-    """Tests building fuzzers from an external project on Github."""
-    project_name = 'external-project'
-    build_integration_path = 'fuzzer-build-integration'
-    git_url = 'https://github.com/jonathanmetzman/cifuzz-external-example.git'
-    # This test is dependant on the state of
-    # github.com/jonathanmetzman/cifuzz-external-example.
-    config = create_config(project_name=project_name,
-                           project_repo_name=project_name,
-                           workspace=self.workspace,
-                           build_integration_path=build_integration_path,
-                           git_url=git_url,
-                           commit_sha='HEAD',
-                           base_commit='HEAD^1')
-    self.assertTrue(build_fuzzers.build_fuzzers(config))
-    self.assertTrue(
-        os.path.exists(os.path.join(self.out_dir, EXAMPLE_BUILD_FUZZER)))
-
-  def test_valid_commit(self):
-    """Tests building fuzzers with valid inputs."""
-    config = create_config(
-        project_name=EXAMPLE_PROJECT,
-        project_repo_name='oss-fuzz',
-        workspace=self.workspace,
-        commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523',
-        base_commit='da0746452433dc18bae699e355a9821285d863c8',
-        is_github=True)
-    self.assertTrue(build_fuzzers.build_fuzzers(config))
-    self.assertTrue(
-        os.path.exists(os.path.join(self.out_dir, EXAMPLE_BUILD_FUZZER)))
-
-  def test_valid_pull_request(self):
-    """Tests building fuzzers with valid pull request."""
-    # TODO(metzman): What happens when this branch closes?
-    config = create_config(project_name=EXAMPLE_PROJECT,
-                           project_repo_name='oss-fuzz',
-                           workspace=self.workspace,
-                           pr_ref='refs/pull/1757/merge',
-                           base_ref='master',
-                           is_github=True)
-    self.assertTrue(build_fuzzers.build_fuzzers(config))
-    self.assertTrue(
-        os.path.exists(os.path.join(self.out_dir, EXAMPLE_BUILD_FUZZER)))
-
-  def test_invalid_pull_request(self):
-    """Tests building fuzzers with invalid pull request."""
-    config = create_config(project_name=EXAMPLE_PROJECT,
-                           project_repo_name='oss-fuzz',
-                           workspace=self.workspace,
-                           pr_ref='ref-1/merge',
-                           base_ref='master',
-                           is_github=True)
-    self.assertTrue(build_fuzzers.build_fuzzers(config))
-
-  def test_invalid_project_name(self):
-    """Tests building fuzzers with invalid project name."""
-    config = create_config(
-        project_name='not_a_valid_project',
-        project_repo_name='oss-fuzz',
-        workspace=self.workspace,
-        commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523')
-    self.assertFalse(build_fuzzers.build_fuzzers(config))
-
-  def test_invalid_repo_name(self):
-    """Tests building fuzzers with invalid repo name."""
-    config = create_config(
-        project_name=EXAMPLE_PROJECT,
-        project_repo_name='not-real-repo',
-        workspace=self.workspace,
-        commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523')
-    self.assertFalse(build_fuzzers.build_fuzzers(config))
-
-  def test_invalid_commit_sha(self):
-    """Tests building fuzzers with invalid commit SHA."""
-    config = create_config(project_name=EXAMPLE_PROJECT,
-                           project_repo_name='oss-fuzz',
-                           workspace=self.workspace,
-                           commit_sha='',
-                           is_github=True)
-    with self.assertRaises(AssertionError):
-      build_fuzzers.build_fuzzers(config)
-
-  def test_invalid_workspace(self):
-    """Tests building fuzzers with invalid workspace."""
-    config = create_config(
-        project_name=EXAMPLE_PROJECT,
-        project_repo_name='oss-fuzz',
-        workspace=os.path.join(self.workspace, 'not', 'a', 'dir'),
-        commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523')
-    self.assertFalse(build_fuzzers.build_fuzzers(config))
-
-
-class CheckFuzzerBuildTest(unittest.TestCase):
-  """Tests the check_fuzzer_build function in the cifuzz module."""
-
-  SANITIZER = 'address'
-  LANGUAGE = 'c++'
-
-  def setUp(self):
-    self.tmp_dir_obj = tempfile.TemporaryDirectory()
-    self.test_files_path = os.path.join(self.tmp_dir_obj.name, 'test_files')
-    shutil.copytree(TEST_DATA_PATH, self.test_files_path)
-
-  def tearDown(self):
-    self.tmp_dir_obj.cleanup()
-
-  def test_correct_fuzzer_build(self):
-    """Checks check_fuzzer_build function returns True for valid fuzzers."""
-    test_fuzzer_dir = os.path.join(self.test_files_path, 'out')
-    self.assertTrue(
-        build_fuzzers.check_fuzzer_build(test_fuzzer_dir, self.SANITIZER,
-                                         self.LANGUAGE))
-
-  def test_not_a_valid_fuzz_path(self):
-    """Tests that False is returned when a bad path is given."""
-    self.assertFalse(
-        build_fuzzers.check_fuzzer_build('not/a/valid/path', self.SANITIZER,
-                                         self.LANGUAGE))
-
-  def test_not_a_valid_fuzzer(self):
-    """Checks a directory that exists but does not have fuzzers is False."""
-    self.assertFalse(
-        build_fuzzers.check_fuzzer_build(self.test_files_path, self.SANITIZER,
-                                         self.LANGUAGE))
-
-  @mock.patch('helper.docker_run')
-  def test_allow_broken_fuzz_targets_percentage(self, mocked_docker_run):
-    """Tests that ALLOWED_BROKEN_TARGETS_PERCENTAGE is set when running
-    docker if passed to check_fuzzer_build."""
-    mocked_docker_run.return_value = 0
-    test_fuzzer_dir = os.path.join(TEST_DATA_PATH, 'out')
-    build_fuzzers.check_fuzzer_build(test_fuzzer_dir,
-                                     self.SANITIZER,
-                                     self.LANGUAGE,
-                                     allowed_broken_targets_percentage='0')
-    self.assertIn('-e ALLOWED_BROKEN_TARGETS_PERCENTAGE=0',
-                  ' '.join(mocked_docker_run.call_args[0][0]))
-
-
-@unittest.skip('Test is too long to be run with presubmit.')
-class BuildSantizerIntegrationTest(unittest.TestCase):
-  """Integration tests for the build_fuzzers.
-    Note: This test relies on "curl" being an OSS-Fuzz project."""
-  PROJECT_NAME = 'curl'
-  PR_REF = 'fake_pr'
-
-  @classmethod
-  def _create_config(cls, tmp_dir, sanitizer):
-    return create_config(project_name=cls.PROJECT_NAME,
-                         project_repo_name=cls.PROJECT_NAME,
-                         workspace=tmp_dir,
-                         pr_ref=cls.PR_REF,
-                         sanitizer=sanitizer)
-
-  @parameterized.parameterized.expand([('memory',), ('undefined',)])
-  def test_valid_project_curl(self, sanitizer):
-    """Tests that MSAN can be detected from project.yaml"""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      self.assertTrue(
-          build_fuzzers.build_fuzzers(self._create_config(tmp_dir, sanitizer)))
-
-
-class GetDockerBuildFuzzersArgsContainerTest(unittest.TestCase):
-  """Tests that _get_docker_build_fuzzers_args_container works as intended."""
-
-  def test_get_docker_build_fuzzers_args_container(self):
-    """Tests that _get_docker_build_fuzzers_args_container works as intended."""
-    out_dir = '/my/out'
-    container = 'my-container'
-    result = build_fuzzers._get_docker_build_fuzzers_args_container(
-        out_dir, container)
-    self.assertEqual(result, ['-e', 'OUT=/my/out', '--volumes-from', container])
-
-
-class GetDockerBuildFuzzersArgsNotContainerTest(unittest.TestCase):
-  """Tests that _get_docker_build_fuzzers_args_not_container works as
-  intended."""
-
-  def test_get_docker_build_fuzzers_args_no_container(self):
-    """Tests that _get_docker_build_fuzzers_args_not_container works
-    as intended."""
-    host_out_dir = '/cifuzz/out'
-    host_repo_path = '/host/repo'
-    result = build_fuzzers._get_docker_build_fuzzers_args_not_container(
-        host_out_dir, host_repo_path)
-    expected_result = [
-        '-e', 'OUT=/out', '-v', '/cifuzz/out:/out', '-v',
-        '/host/repo:/host/repo'
-    ]
-    self.assertEqual(result, expected_result)
-
-
-class GetDockerBuildFuzzersArgsMsanTest(unittest.TestCase):
-  """Tests that _get_docker_build_fuzzers_args_msan works as intended."""
-
-  def test_get_docker_build_fuzzers_args_msan(self):
-    """Tests that _get_docker_build_fuzzers_args_msan works as intended."""
-    work_dir = '/work_dir'
-    result = build_fuzzers._get_docker_build_fuzzers_args_msan(work_dir)
-    expected_result = ['-e', 'MSAN_LIBS_PATH=/work_dir/msan']
-    self.assertEqual(result, expected_result)
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/cifuzz-base/Dockerfile b/infra/cifuzz/cifuzz-base/Dockerfile
deleted file mode 100644
index e0599db..0000000
--- a/infra/cifuzz/cifuzz-base/Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Don't bother with a slimmer base image.
-# When we pull base-builder to build project builder image we need to pull
-# ubuntu:16.04 anyway. So in the long run we probably would waste time if
-# we pulled something like alpine here instead.
-FROM ubuntu:16.04
-
-RUN apt-get update && \
-    apt-get install ca-certificates wget python3 git-core --no-install-recommends -y && \
-    wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce-cli_20.10.5~3-0~ubuntu-xenial_amd64.deb -O /tmp/docker-ce.deb && \
-    dpkg -i /tmp/docker-ce.deb && rm /tmp/docker-ce.deb && \
-    apt-get remove wget -y --purge
-
-
-ENV OSS_FUZZ_ROOT=/opt/oss-fuzz
-ADD . ${OSS_FUZZ_ROOT}
-RUN rm -rf ${OSS_FUZZ_ROOT}/infra
\ No newline at end of file
diff --git a/infra/cifuzz/cifuzz.py b/infra/cifuzz/cifuzz.py
new file mode 100644
index 0000000..ce7586e
--- /dev/null
+++ b/infra/cifuzz/cifuzz.py
@@ -0,0 +1,169 @@
+# Copyright 2020 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Module used by CI tools in order to interact with fuzzers.
+This module helps CI tools do the following:
+  1. Build fuzzers.
+  2. Run fuzzers.
+Eventually it will be used to help CI tools determine which fuzzers to run.
+"""
+
+import logging
+import os
+import shutil
+import sys
+
+import fuzz_target
+
+# pylint: disable=wrong-import-position
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+import build_specified_commit
+import helper
+import repo_manager
+import utils
+
+# TODO: Turn default logging to WARNING when CIFuzz is stable
+logging.basicConfig(
+    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
+    level=logging.DEBUG)
+
+
+def build_fuzzers(project_name,
+                  project_repo_name,
+                  workspace,
+                  pr_ref=None,
+                  commit_sha=None):
+  """Builds all of the fuzzers for a specific OSS-Fuzz project.
+
+  Args:
+    project_name: The name of the OSS-Fuzz project being built.
+    project_repo_name: The name of the projects repo.
+    workspace: The location in a shared volume to store a git repo and build
+      artifacts.
+    pr_ref: The pull request reference to be built.
+    commit_sha: The commit sha for the project to be built at.
+
+  Returns:
+    True if build succeeded or False on failure.
+  """
+  # Validate inputs.
+  assert pr_ref or commit_sha
+  if not os.path.exists(workspace):
+    logging.error('Invalid workspace: %s.', workspace)
+    return False
+
+  git_workspace = os.path.join(workspace, 'storage')
+  os.makedirs(git_workspace, exist_ok=True)
+  out_dir = os.path.join(workspace, 'out')
+  os.makedirs(out_dir, exist_ok=True)
+
+  # Detect repo information.
+  inferred_url, oss_fuzz_repo_path = build_specified_commit.detect_main_repo(
+      project_name, repo_name=project_repo_name)
+  if not inferred_url or not oss_fuzz_repo_path:
+    logging.error('Could not detect repo from project %s.', project_name)
+    return False
+  src_in_docker = os.path.dirname(oss_fuzz_repo_path)
+  oss_fuzz_repo_name = os.path.basename(oss_fuzz_repo_path)
+
+  # Checkout projects repo in the shared volume.
+  build_repo_manager = repo_manager.RepoManager(inferred_url,
+                                                git_workspace,
+                                                repo_name=oss_fuzz_repo_name)
+  try:
+    if pr_ref:
+      build_repo_manager.checkout_pr(pr_ref)
+    else:
+      build_repo_manager.checkout_commit(commit_sha)
+  except RuntimeError:
+    logging.error('Can not check out requested state.')
+    return False
+  except ValueError:
+    logging.error('Invalid commit SHA requested %s.', commit_sha)
+    return False
+
+  # Build Fuzzers using docker run.
+  command = [
+      '--cap-add', 'SYS_PTRACE', '-e', 'FUZZING_ENGINE=libfuzzer', '-e',
+      'SANITIZER=address', '-e', 'ARCHITECTURE=x86_64'
+  ]
+  container = utils.get_container_name()
+  if container:
+    command += ['-e', 'OUT=' + out_dir, '--volumes-from', container]
+    bash_command = 'rm -rf {0} && cp -r {1} {2} && compile'.format(
+        os.path.join(src_in_docker, oss_fuzz_repo_name, '*'),
+        os.path.join(git_workspace, oss_fuzz_repo_name), src_in_docker)
+  else:
+    command += [
+        '-e', 'OUT=' + '/out', '-v',
+        '%s:%s' % (os.path.join(git_workspace, oss_fuzz_repo_name),
+                   os.path.join(src_in_docker, oss_fuzz_repo_name)), '-v',
+        '%s:%s' % (out_dir, '/out')
+    ]
+    bash_command = 'compile'
+
+  command.extend([
+      'gcr.io/oss-fuzz/' + project_name,
+      '/bin/bash',
+      '-c',
+  ])
+  command.append(bash_command)
+  if helper.docker_run(command):
+    logging.error('Building fuzzers failed.')
+    return False
+  return True
+
+
+def run_fuzzers(project_name, fuzz_seconds, workspace):
+  """Runs all fuzzers for a specific OSS-Fuzz project.
+
+  Args:
+    project_name: The name of the OSS-Fuzz project being built.
+    fuzz_seconds: The total time allotted for fuzzing.
+    workspace: The location in a shared volume to store a git repo and build
+      artifacts.
+
+  Returns:
+    (True if run was successful, True if bug was found).
+  """
+  # Validate inputs.
+  if not os.path.exists(workspace):
+    logging.error('Invalid workspace: %s.', workspace)
+    return False, False
+  out_dir = os.path.join(workspace, 'out')
+  if not fuzz_seconds or fuzz_seconds < 1:
+    logging.error('Fuzz_seconds argument must be greater than 1, but was: %s.',
+                  format(fuzz_seconds))
+    return False, False
+
+  # Get fuzzer information.
+  fuzzer_paths = utils.get_fuzz_targets(out_dir)
+  if not fuzzer_paths:
+    logging.error('No fuzzers were found in out directory: %s.',
+                  format(out_dir))
+    return False, False
+  fuzz_seconds_per_target = fuzz_seconds // len(fuzzer_paths)
+
+  # Run fuzzers for alotted time.
+  for fuzzer_path in fuzzer_paths:
+    target = fuzz_target.FuzzTarget(project_name, fuzzer_path,
+                                    fuzz_seconds_per_target, out_dir)
+    test_case, stack_trace = target.fuzz()
+    if not test_case or not stack_trace:
+      logging.info('Fuzzer %s, finished running.', target.target_name)
+    else:
+      logging.info('Fuzzer %s, detected error: %s.', target.target_name,
+                   stack_trace)
+      shutil.move(test_case, os.path.join(out_dir, 'testcase'))
+      return True, True
+  return True, False
diff --git a/infra/cifuzz/cifuzz_test.py b/infra/cifuzz/cifuzz_test.py
new file mode 100644
index 0000000..7c17b6f
--- /dev/null
+++ b/infra/cifuzz/cifuzz_test.py
@@ -0,0 +1,158 @@
+# Copyright 2020 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Test the functionality of the cifuzz module's functions:
+1. Building fuzzers.
+2. Running fuzzers.
+"""
+
+import os
+import sys
+import tempfile
+import unittest
+
+# pylint: disable=wrong-import-position
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+import cifuzz
+
+# NOTE: This integration test relies on
+# https://github.com/google/oss-fuzz/tree/master/projects/example project
+EXAMPLE_PROJECT = 'example'
+
+
+class BuildFuzzersIntegrationTest(unittest.TestCase):
+  """Test build_fuzzers function in the utils module."""
+
+  def test_valid_commit(self):
+    """Test building fuzzers with valid inputs."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      self.assertTrue(
+          cifuzz.build_fuzzers(
+              EXAMPLE_PROJECT,
+              'oss-fuzz',
+              tmp_dir,
+              commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523'))
+      self.assertTrue(os.path.exists(os.path.join(out_path, 'do_stuff_fuzzer')))
+
+  def test_valid_pull_request(self):
+    """Test building fuzzers with valid pull request."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      self.assertTrue(
+          cifuzz.build_fuzzers(EXAMPLE_PROJECT,
+                               'oss-fuzz',
+                               tmp_dir,
+                               pr_ref='refs/pull/3310/merge'))
+      self.assertTrue(os.path.exists(os.path.join(out_path, 'do_stuff_fuzzer')))
+
+  def test_invalid_pull_request(self):
+    """Test building fuzzers with invalid pull request."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      self.assertFalse(
+          cifuzz.build_fuzzers(EXAMPLE_PROJECT,
+                               'oss-fuzz',
+                               tmp_dir,
+                               pr_ref='ref-1/merge'))
+
+  def test_invalid_project_name(self):
+    """Test building fuzzers with invalid project name."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      self.assertFalse(
+          cifuzz.build_fuzzers(
+              'not_a_valid_project',
+              'oss-fuzz',
+              tmp_dir,
+              commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523'))
+
+  def test_invalid_repo_name(self):
+    """Test building fuzzers with invalid repo name."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      self.assertFalse(
+          cifuzz.build_fuzzers(
+              EXAMPLE_PROJECT,
+              'not-real-repo',
+              tmp_dir,
+              commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523'))
+
+  def test_invalid_commit_sha(self):
+    """Test building fuzzers with invalid commit SHA."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      with self.assertRaises(AssertionError):
+        cifuzz.build_fuzzers(EXAMPLE_PROJECT,
+                             'oss-fuzz',
+                             tmp_dir,
+                             commit_sha='')
+
+  def test_invalid_workspace(self):
+    """Test building fuzzers with invalid workspace."""
+    self.assertFalse(
+        cifuzz.build_fuzzers(
+            EXAMPLE_PROJECT,
+            'oss-fuzz',
+            'not/a/dir',
+            commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523',
+        ))
+
+
+class RunFuzzersIntegrationTest(unittest.TestCase):
+  """Test build_fuzzers function in the utils module."""
+
+  def test_valid(self):
+    """Test run_fuzzers with a valid build."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      self.assertTrue(
+          cifuzz.build_fuzzers(
+              EXAMPLE_PROJECT,
+              'oss-fuzz',
+              tmp_dir,
+              commit_sha='0b95fe1039ed7c38fea1f97078316bfc1030c523'))
+      self.assertTrue(os.path.exists(os.path.join(out_path, 'do_stuff_fuzzer')))
+      run_success, bug_found = cifuzz.run_fuzzers(EXAMPLE_PROJECT, 5, tmp_dir)
+    self.assertTrue(run_success)
+    self.assertTrue(bug_found)
+
+  def test_invlid_build(self):
+    """Test run_fuzzers with an invalid build."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      run_success, bug_found = cifuzz.run_fuzzers(EXAMPLE_PROJECT, 5, tmp_dir)
+    self.assertFalse(run_success)
+    self.assertFalse(bug_found)
+
+  def test_invalid_fuzz_seconds(self):
+    """Tests run_fuzzers with an invalid fuzz seconds."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      out_path = os.path.join(tmp_dir, 'out')
+      os.mkdir(out_path)
+      run_success, bug_found = cifuzz.run_fuzzers(EXAMPLE_PROJECT, 0, tmp_dir)
+    self.assertFalse(run_success)
+    self.assertFalse(bug_found)
+
+  def test_invalid_out_dir(self):
+    """Tests run_fuzzers with an invalid out directory."""
+    run_success, bug_found = cifuzz.run_fuzzers(EXAMPLE_PROJECT, 5,
+                                                'not/a/valid/path')
+    self.assertFalse(run_success)
+    self.assertFalse(bug_found)
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/infra/cifuzz/clusterfuzz_deployment.py b/infra/cifuzz/clusterfuzz_deployment.py
deleted file mode 100644
index 8c46e9d..0000000
--- a/infra/cifuzz/clusterfuzz_deployment.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for interacting with the "ClusterFuzz deployment."""
-import logging
-import os
-import sys
-import tempfile
-import time
-import urllib.error
-import urllib.request
-import zipfile
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-import utils
-
-
-class BaseClusterFuzzDeployment:
-  """Base class for ClusterFuzz deployments."""
-
-  CORPUS_DIR_NAME = 'cifuzz-corpus'
-  BUILD_DIR_NAME = 'cifuzz-latest-build'
-
-  def __init__(self, config):
-    self.config = config
-
-  def download_latest_build(self, out_dir):
-    """Downloads the latest build from ClusterFuzz.
-
-    Returns:
-      A path to where the OSS-Fuzz build was stored, or None if it wasn't.
-    """
-    raise NotImplementedError('Child class must implement method.')
-
-  def download_corpus(self, target_name, out_dir):
-    """Downloads the corpus for |target_name| from ClusterFuzz to |out_dir|.
-
-    Returns:
-      A path to where the OSS-Fuzz build was stored, or None if it wasn't.
-    """
-    raise NotImplementedError('Child class must implement method.')
-
-
-class ClusterFuzzLite(BaseClusterFuzzDeployment):
-  """Class representing a deployment of ClusterFuzzLite."""
-
-  def download_latest_build(self, out_dir):
-    logging.info('download_latest_build not implemented for ClusterFuzzLite.')
-
-  def download_corpus(self, target_name, out_dir):
-    logging.info('download_corpus not implemented for ClusterFuzzLite.')
-
-
-class OSSFuzz(BaseClusterFuzzDeployment):
-  """The OSS-Fuzz ClusterFuzz deployment."""
-
-  # Location of clusterfuzz builds on GCS.
-  CLUSTERFUZZ_BUILDS = 'clusterfuzz-builds'
-
-  # Format string for the latest version of a project's build.
-  VERSION_STRING = '{project_name}-{sanitizer}-latest.version'
-
-  # Zip file name containing the corpus.
-  CORPUS_ZIP_NAME = 'public.zip'
-
-  def get_latest_build_name(self):
-    """Gets the name of the latest OSS-Fuzz build of a project.
-
-    Returns:
-      A string with the latest build version or None.
-    """
-    version_file = self.VERSION_STRING.format(
-        project_name=self.config.project_name, sanitizer=self.config.sanitizer)
-    version_url = utils.url_join(utils.GCS_BASE_URL, self.CLUSTERFUZZ_BUILDS,
-                                 self.config.project_name, version_file)
-    try:
-      response = urllib.request.urlopen(version_url)
-    except urllib.error.HTTPError:
-      logging.error('Error getting latest build version for %s from: %s.',
-                    self.config.project_name, version_url)
-      return None
-    return response.read().decode()
-
-  def download_latest_build(self, out_dir):
-    """Downloads the latest OSS-Fuzz build from GCS.
-
-    Returns:
-      A path to where the OSS-Fuzz build was stored, or None if it wasn't.
-    """
-    build_dir = os.path.join(out_dir, self.BUILD_DIR_NAME)
-    if os.path.exists(build_dir):
-      return build_dir
-
-    os.makedirs(build_dir, exist_ok=True)
-
-    latest_build_name = self.get_latest_build_name()
-    if not latest_build_name:
-      return None
-
-    oss_fuzz_build_url = utils.url_join(utils.GCS_BASE_URL,
-                                        self.CLUSTERFUZZ_BUILDS,
-                                        self.config.project_name,
-                                        latest_build_name)
-    if download_and_unpack_zip(oss_fuzz_build_url, build_dir):
-      return build_dir
-
-    return None
-
-  def download_corpus(self, target_name, out_dir):
-    """Downloads the latest OSS-Fuzz corpus for the target.
-
-    Returns:
-      The local path to to corpus or None if download failed.
-    """
-    corpus_dir = os.path.join(out_dir, self.CORPUS_DIR_NAME, target_name)
-    os.makedirs(corpus_dir, exist_ok=True)
-    # TODO(metzman): Clean up this code.
-    project_qualified_fuzz_target_name = target_name
-    qualified_name_prefix = self.config.project_name + '_'
-
-    if not target_name.startswith(qualified_name_prefix):
-      project_qualified_fuzz_target_name = qualified_name_prefix + target_name
-
-    corpus_url = utils.url_join(
-        utils.GCS_BASE_URL,
-        '{0}-backup.clusterfuzz-external.appspot.com/corpus/libFuzzer/'.format(
-            self.config.project_name), project_qualified_fuzz_target_name,
-        self.CORPUS_ZIP_NAME)
-
-    if download_and_unpack_zip(corpus_url, corpus_dir):
-      return corpus_dir
-
-    return None
-
-
-def download_url(url, filename, num_attempts=3):
-  """Downloads the file located at |url|, using HTTP to |filename|.
-
-  Args:
-    url: A url to a file to download.
-    filename: The path the file should be downloaded to.
-    num_retries: The number of times to retry the download on
-       ConnectionResetError.
-
-  Returns:
-    True on success.
-  """
-  sleep_time = 1
-
-  # Don't use retry wrapper since we don't want this to raise any exceptions.
-  for _ in range(num_attempts):
-    try:
-      urllib.request.urlretrieve(url, filename)
-      return True
-    except urllib.error.HTTPError:
-      # In these cases, retrying probably wont work since the error probably
-      # means there is nothing at the URL to download.
-      logging.error('Unable to download from: %s.', url)
-      return False
-    except ConnectionResetError:
-      # These errors are more likely to be transient. Retry.
-      pass
-    time.sleep(sleep_time)
-
-  logging.error('Failed to download %s, %d times.', url, num_attempts)
-
-  return False
-
-
-def download_and_unpack_zip(url, extract_directory):
-  """Downloads and unpacks a zip file from an HTTP URL.
-
-  Args:
-    url: A url to the zip file to be downloaded and unpacked.
-    out_dir: The path where the zip file should be extracted to.
-
-  Returns:
-    True on success.
-  """
-  if not os.path.exists(extract_directory):
-    logging.error('Extract directory: %s does not exist.', extract_directory)
-    return False
-
-  # Gives the temporary zip file a unique identifier in the case that
-  # that download_and_unpack_zip is done in parallel.
-  with tempfile.NamedTemporaryFile(suffix='.zip') as tmp_file:
-    if not download_url(url, tmp_file.name):
-      return False
-
-    try:
-      with zipfile.ZipFile(tmp_file.name, 'r') as zip_file:
-        zip_file.extractall(extract_directory)
-    except zipfile.BadZipFile:
-      logging.error('Error unpacking zip from %s. Bad Zipfile.', url)
-      return False
-
-  return True
-
-
-def get_clusterfuzz_deployment(config):
-  """Returns object reprsenting deployment of ClusterFuzz used by |config|."""
-  if (config.platform == config.Platform.INTERNAL_GENERIC_CI or
-      config.platform == config.Platform.INTERNAL_GITHUB):
-    logging.info('Using OSS-Fuzz as ClusterFuzz deployment.')
-    return OSSFuzz(config)
-  logging.info('Using ClusterFuzzLite as ClusterFuzz deployment.')
-  return ClusterFuzzLite(config)
diff --git a/infra/cifuzz/clusterfuzz_deployment_test.py b/infra/cifuzz/clusterfuzz_deployment_test.py
deleted file mode 100644
index 06ff784..0000000
--- a/infra/cifuzz/clusterfuzz_deployment_test.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for clusterfuzz_deployment.py"""
-
-import os
-import unittest
-from unittest import mock
-import urllib.error
-
-from pyfakefs import fake_filesystem_unittest
-
-import clusterfuzz_deployment
-import config_utils
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-# An example fuzzer that triggers an error.
-EXAMPLE_FUZZER = 'example_crash_fuzzer'
-
-
-def _create_config(**kwargs):
-  """Creates a config object and then sets every attribute that is a key in
-  |kwargs| to the corresponding value. Asserts that each key in |kwargs| is an
-  attribute of Config."""
-  defaults = {'is_github': True, 'project_name': EXAMPLE_PROJECT}
-  for default_key, default_value in defaults.items():
-    if default_key not in kwargs:
-      kwargs[default_key] = default_value
-
-  with mock.patch('os.path.basename', return_value=None), mock.patch(
-      'config_utils.get_project_src_path',
-      return_value=None), mock.patch('config_utils._is_dry_run',
-                                     return_value=True):
-    config = config_utils.RunFuzzersConfig()
-
-  for key, value in kwargs.items():
-    assert hasattr(config, key), 'Config doesn\'t have attribute: ' + key
-    setattr(config, key, value)
-  return config
-
-
-def _create_deployment(**kwargs):
-  config = _create_config(**kwargs)
-  return clusterfuzz_deployment.get_clusterfuzz_deployment(config)
-
-
-class OSSFuzzTest(fake_filesystem_unittest.TestCase):
-  """Tests OSSFuzz."""
-
-  OUT_DIR = '/out'
-
-  def setUp(self):
-    self.setUpPyfakefs()
-    self.deployment = _create_deployment()
-
-  @mock.patch('clusterfuzz_deployment.download_and_unpack_zip',
-              return_value=True)
-  def test_download_corpus(self, mocked_download_and_unpack_zip):
-    """Tests that we can download a corpus for a valid project."""
-    result = self.deployment.download_corpus(EXAMPLE_FUZZER, self.OUT_DIR)
-    self.assertIsNotNone(result)
-    expected_corpus_dir = os.path.join(self.OUT_DIR, 'cifuzz-corpus',
-                                       EXAMPLE_FUZZER)
-    expected_url = ('https://storage.googleapis.com/example-backup.'
-                    'clusterfuzz-external.appspot.com/corpus/libFuzzer/'
-                    'example_crash_fuzzer/public.zip')
-    call_args, _ = mocked_download_and_unpack_zip.call_args
-    self.assertEqual(call_args, (expected_url, expected_corpus_dir))
-
-  @mock.patch('clusterfuzz_deployment.download_and_unpack_zip',
-              return_value=False)
-  def test_download_fail(self, _):
-    """Tests that when downloading fails, None is returned."""
-    corpus_path = self.deployment.download_corpus(EXAMPLE_FUZZER, self.OUT_DIR)
-    self.assertIsNone(corpus_path)
-
-  def test_get_latest_build_name(self):
-    """Tests that the latest build name can be retrieved from GCS."""
-    latest_build_name = self.deployment.get_latest_build_name()
-    self.assertTrue(latest_build_name.endswith('.zip'))
-    self.assertTrue('address' in latest_build_name)
-
-
-class DownloadUrlTest(unittest.TestCase):
-  """Tests that download_url works."""
-  URL = 'example.com/file'
-  FILE_PATH = '/tmp/file'
-
-  @mock.patch('time.sleep')
-  @mock.patch('urllib.request.urlretrieve', return_value=True)
-  def test_download_url_no_error(self, mocked_urlretrieve, _):
-    """Tests that download_url works when there is no error."""
-    self.assertTrue(
-        clusterfuzz_deployment.download_url(self.URL, self.FILE_PATH))
-    self.assertEqual(1, mocked_urlretrieve.call_count)
-
-  @mock.patch('time.sleep')
-  @mock.patch('logging.error')
-  @mock.patch('urllib.request.urlretrieve',
-              side_effect=urllib.error.HTTPError(None, None, None, None, None))
-  def test_download_url_http_error(self, mocked_urlretrieve, mocked_error, _):
-    """Tests that download_url doesn't retry when there is an HTTP error."""
-    self.assertFalse(
-        clusterfuzz_deployment.download_url(self.URL, self.FILE_PATH))
-    mocked_error.assert_called_with('Unable to download from: %s.', self.URL)
-    self.assertEqual(1, mocked_urlretrieve.call_count)
-
-  @mock.patch('time.sleep')
-  @mock.patch('logging.error')
-  @mock.patch('urllib.request.urlretrieve', side_effect=ConnectionResetError)
-  def test_download_url_connection_error(self, mocked_urlretrieve, mocked_error,
-                                         mocked_sleep):
-    """Tests that download_url doesn't retry when there is an HTTP error."""
-    self.assertFalse(
-        clusterfuzz_deployment.download_url(self.URL, self.FILE_PATH))
-    self.assertEqual(3, mocked_urlretrieve.call_count)
-    self.assertEqual(3, mocked_sleep.call_count)
-    mocked_error.assert_called_with('Failed to download %s, %d times.',
-                                    self.URL, 3)
-
-
-class DownloadAndUnpackZipTest(fake_filesystem_unittest.TestCase):
-  """Tests download_and_unpack_zip."""
-
-  def setUp(self):
-    self.setUpPyfakefs()
-
-  @mock.patch('urllib.request.urlretrieve', return_value=True)
-  def test_bad_zip_download(self, _):
-    """Tests download_and_unpack_zip returns none when a bad zip is passed."""
-    self.fs.create_file('/url_tmp.zip', contents='Test file.')
-    self.assertFalse(
-        clusterfuzz_deployment.download_and_unpack_zip('/not/a/real/url',
-                                                       '/extract-directory'))
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/config_utils.py b/infra/cifuzz/config_utils.py
deleted file mode 100644
index ad2cd36..0000000
--- a/infra/cifuzz/config_utils.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for getting the configuration CIFuzz needs to run."""
-
-import logging
-import enum
-import os
-import json
-
-import environment
-
-
-def _get_project_repo_name():
-  return os.path.basename(environment.get('GITHUB_REPOSITORY', ''))
-
-
-def _get_pr_ref(event):
-  if event == 'pull_request':
-    return environment.get('GITHUB_REF')
-  return None
-
-
-def _get_sanitizer():
-  return os.getenv('SANITIZER', 'address').lower()
-
-
-def _get_project_name():
-  # TODO(metzman): Remove OSS-Fuzz reference.
-  return os.getenv('OSS_FUZZ_PROJECT_NAME')
-
-
-def _is_dry_run():
-  """Returns True if configured to do a dry run."""
-  return environment.get_bool('DRY_RUN', 'false')
-
-
-def get_project_src_path(workspace):
-  """Returns the manually checked out path of the project's source if specified
-  or None."""
-  # TODO(metzman): Get rid of MANUAL_SRC_PATH when Skia switches to
-  # PROJECT_SRC_PATH.
-  path = os.getenv('PROJECT_SRC_PATH', os.getenv('MANUAL_SRC_PATH'))
-  if not path:
-    logging.debug('No PROJECT_SRC_PATH.')
-    return path
-
-  logging.debug('PROJECT_SRC_PATH set.')
-  if os.path.isabs(path):
-    return path
-
-  # If |src| is not absolute, assume we are running in GitHub actions.
-  # TODO(metzman): Don't make this assumption.
-  return os.path.join(workspace, path)
-
-
-DEFAULT_LANGUAGE = 'c++'
-
-
-def _get_language():
-  """Returns the project language."""
-  # Get language from environment. We took this approach because the convenience
-  # given to OSS-Fuzz users by not making them specify the language again (and
-  # getting it from the project.yaml) is outweighed by the complexity in
-  # implementing this. A lot of the complexity comes from our unittests not
-  # setting a proper projet at this point.
-  return os.getenv('LANGUAGE', DEFAULT_LANGUAGE)
-
-
-# pylint: disable=too-few-public-methods,too-many-instance-attributes
-
-
-class BaseConfig:
-  """Object containing constant configuration for CIFuzz."""
-
-  class Platform(enum.Enum):
-    """Enum representing the different platforms CIFuzz runs on."""
-    EXTERNAL_GITHUB = 0  # Non-OSS-Fuzz on GitHub actions.
-    INTERNAL_GITHUB = 1  # OSS-Fuzz on GitHub actions.
-    INTERNAL_GENERIC_CI = 2  # OSS-Fuzz on any CI.
-
-  def __init__(self):
-    self.workspace = os.getenv('GITHUB_WORKSPACE')
-    self.project_name = _get_project_name()
-    # Check if failures should not be reported.
-    self.dry_run = _is_dry_run()
-    self.sanitizer = _get_sanitizer()
-    self.build_integration_path = os.getenv('BUILD_INTEGRATION_PATH')
-    self.language = _get_language()
-    event_path = os.getenv('GITHUB_EVENT_PATH')
-    self.is_github = bool(event_path)
-    logging.debug('Is github: %s.', self.is_github)
-    # TODO(metzman): Parse env like we do in ClusterFuzz.
-    self.low_disk_space = environment.get('LOW_DISK_SPACE', False)
-
-  @property
-  def is_internal(self):
-    """Returns True if this is an OSS-Fuzz project."""
-    return not self.build_integration_path
-
-  @property
-  def platform(self):
-    """Returns the platform CIFuzz is runnning on."""
-    if not self.is_internal:
-      return self.Platform.EXTERNAL_GITHUB
-    if self.is_github:
-      return self.Platform.INTERNAL_GITHUB
-    return self.Platform.INTERNAL_GENERIC_CI
-
-
-class RunFuzzersConfig(BaseConfig):
-  """Class containing constant configuration for running fuzzers in CIFuzz."""
-
-  RUN_FUZZERS_MODES = {'batch', 'ci'}
-
-  def __init__(self):
-    super().__init__()
-    self.fuzz_seconds = int(os.environ.get('FUZZ_SECONDS', 600))
-    self.run_fuzzers_mode = os.environ.get('RUN_FUZZERS_MODE', 'ci').lower()
-    if self.run_fuzzers_mode not in self.RUN_FUZZERS_MODES:
-      raise Exception(
-          ('Invalid RUN_FUZZERS_MODE %s not one of allowed choices: %s.' %
-           self.run_fuzzers_mode, self.RUN_FUZZERS_MODES))
-
-
-class BuildFuzzersConfig(BaseConfig):
-  """Class containing constant configuration for building fuzzers in CIFuzz."""
-
-  def _get_config_from_event_path(self, event):
-    event_path = os.getenv('GITHUB_EVENT_PATH')
-    if not event_path:
-      return
-    with open(event_path, encoding='utf-8') as file_handle:
-      event_data = json.load(file_handle)
-    if event == 'push':
-      self.base_commit = event_data['before']
-      logging.debug('base_commit: %s', self.base_commit)
-    else:
-      self.pr_ref = 'refs/pull/{0}/merge'.format(
-          event_data['pull_request']['number'])
-      logging.debug('pr_ref: %s', self.pr_ref)
-
-    self.git_url = event_data['repository']['html_url']
-
-  def __init__(self):
-    """Get the configuration from CIFuzz from the environment. These variables
-    are set by GitHub or the user."""
-    # TODO(metzman): Some of this config is very CI-specific. Move it into the
-    # CI class.
-    super().__init__()
-    self.project_repo_name = _get_project_repo_name()
-    self.commit_sha = os.getenv('GITHUB_SHA')
-    event = os.getenv('GITHUB_EVENT_NAME')
-
-    self.pr_ref = None
-    self.git_url = None
-    self.base_commit = None
-    self._get_config_from_event_path(event)
-
-    self.base_ref = os.getenv('GITHUB_BASE_REF')
-    self.project_src_path = get_project_src_path(self.workspace)
-
-    self.allowed_broken_targets_percentage = os.getenv(
-        'ALLOWED_BROKEN_TARGETS_PERCENTAGE')
-    self.bad_build_check = environment.get_bool('BAD_BUILD_CHECK', 'true')
-
-    # TODO(metzman): Use better system for interpreting env vars. What if env
-    # var is set to '0'?
-    self.keep_unaffected_fuzz_targets = bool(
-        os.getenv('KEEP_UNAFFECTED_FUZZERS'))
diff --git a/infra/cifuzz/config_utils_test.py b/infra/cifuzz/config_utils_test.py
deleted file mode 100644
index 6f87bd4..0000000
--- a/infra/cifuzz/config_utils_test.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for getting the configuration CIFuzz needs to run."""
-import os
-import unittest
-
-import config_utils
-import test_helpers
-
-# pylint: disable=no-self-use
-
-
-class BaseConfigTest(unittest.TestCase):
-  """Tests for BaseConfig."""
-
-  def setUp(self):
-    test_helpers.patch_environ(self)
-
-  def _create_config(self):
-    return config_utils.BuildFuzzersConfig()
-
-  def test_language_default(self):
-    """Tests that the correct default language is set."""
-    os.environ['BUILD_INTEGRATION_PATH'] = '/path'
-    config = self._create_config()
-    self.assertEqual(config.language, 'c++')
-
-  def test_language(self):
-    """Tests that the correct language is set."""
-    os.environ['BUILD_INTEGRATION_PATH'] = '/path'
-    language = 'python'
-    os.environ['LANGUAGE'] = language
-    config = self._create_config()
-    self.assertEqual(config.language, language)
-
-
-class BuildFuzzersConfigTest(unittest.TestCase):
-  """Tests for BuildFuzzersConfig."""
-
-  def setUp(self):
-    test_helpers.patch_environ(self)
-
-  def _create_config(self):
-    return config_utils.BuildFuzzersConfig()
-
-  def test_base_ref(self):
-    """Tests that base_ref is set properly."""
-    expected_base_ref = 'expected_base_ref'
-    os.environ['GITHUB_BASE_REF'] = expected_base_ref
-    config = self._create_config()
-    self.assertEqual(config.base_ref, expected_base_ref)
-
-  def test_keep_unaffected_defaults_to_false(self):
-    """Tests that keep_unaffected_fuzz_targets defaults to false."""
-    config = self._create_config()
-    self.assertFalse(config.keep_unaffected_fuzz_targets)
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/continuous_integration.py b/infra/cifuzz/continuous_integration.py
deleted file mode 100644
index b2e8af2..0000000
--- a/infra/cifuzz/continuous_integration.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Implementations for various CI systems."""
-
-import os
-import collections
-import sys
-import logging
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-import build_specified_commit
-import helper
-import repo_manager
-import retry
-import utils
-
-# pylint: disable=too-few-public-methods
-
-BuildPreparationResult = collections.namedtuple(
-    'BuildPreparationResult', ['success', 'image_repo_path', 'repo_manager'])
-
-
-def fix_git_repo_for_diff(repo_manager_obj):
-  """Fixes git repos cloned by the "checkout" action so that diffing works on
-  them."""
-  command = [
-      'git', 'symbolic-ref', 'refs/remotes/origin/HEAD',
-      'refs/remotes/origin/master'
-  ]
-  return utils.execute(command, location=repo_manager_obj.repo_dir)
-
-
-class BaseCi:
-  """Class representing common CI functionality."""
-
-  def __init__(self, config):
-    self.config = config
-
-  def prepare_for_fuzzer_build(self):
-    """Builds the fuzzer builder image and gets the source code we need to
-    fuzz."""
-    raise NotImplementedError('Children must implement this method.')
-
-  def get_diff_base(self):
-    """Returns the base to diff against with git to get the change under
-    test."""
-    raise NotImplementedError('Children must implement this method.')
-
-  def get_changed_code_under_test(self, repo_manager_obj):
-    """Returns the changed files that need to be tested."""
-    base = self.get_diff_base()
-    fix_git_repo_for_diff(repo_manager_obj)
-    logging.info('Diffing against %s.', base)
-    return repo_manager_obj.get_git_diff(base)
-
-
-def get_ci(config):
-  """Determines what kind of CI is being used and returns the object
-  representing that system."""
-  if config.platform == config.Platform.EXTERNAL_GITHUB:
-    # Non-OSS-Fuzz projects must bring their own source and their own build
-    # integration (which is relative to that source).
-    return ExternalGithub(config)
-
-  if config.platform == config.Platform.INTERNAL_GENERIC_CI:
-    # Builds of OSS-Fuzz projects not hosted on Github must bring their own
-    # source since the checkout logic CIFuzz implements is github-specific.
-    # TODO(metzman): Consider moving Github-actions builds of OSS-Fuzz projects
-    # to this system to reduce implementation complexity.
-    return InternalGeneric(config)
-
-  return InternalGithub(config)
-
-
-def checkout_specified_commit(repo_manager_obj, pr_ref, commit_sha):
-  """Checks out the specified commit or pull request using
-  |repo_manager_obj|."""
-  try:
-    if pr_ref:
-      repo_manager_obj.checkout_pr(pr_ref)
-    else:
-      repo_manager_obj.checkout_commit(commit_sha)
-  except (RuntimeError, ValueError):
-    logging.error(
-        'Can not check out requested state %s. '
-        'Using current repo state', pr_ref or commit_sha)
-
-
-class GithubCiMixin:
-  """Mixin for Github based CI systems."""
-
-  def get_diff_base(self):
-    """Returns the base to diff against with git to get the change under
-    test."""
-    if self.config.base_ref:
-      logging.debug('Diffing against base_ref: %s.', self.config.base_ref)
-      return self.config.base_ref
-    logging.debug('Diffing against base_commit: %s.', self.config.base_commit)
-    return self.config.base_commit
-
-  def get_changed_code_under_test(self, repo_manager_obj):
-    """Returns the changed files that need to be tested."""
-    if self.config.base_ref:
-      repo_manager_obj.fetch_branch(self.config.base_ref)
-    return super().get_changed_code_under_test(repo_manager_obj)
-
-
-class InternalGithub(GithubCiMixin, BaseCi):
-  """Class representing CI for an OSS-Fuzz project on Github Actions."""
-
-  def prepare_for_fuzzer_build(self):
-    """Builds the fuzzer builder image, checks out the pull request/commit and
-    returns the BuildPreparationResult."""
-    logging.info('Building OSS-Fuzz project on Github Actions.')
-    assert self.config.pr_ref or self.config.commit_sha
-    # detect_main_repo builds the image as a side effect.
-    inferred_url, image_repo_path = (build_specified_commit.detect_main_repo(
-        self.config.project_name, repo_name=self.config.project_repo_name))
-
-    if not inferred_url or not image_repo_path:
-      logging.error('Could not detect repo from project %s.',
-                    self.config.project_name)
-      return BuildPreparationResult(False, None, None)
-
-    git_workspace = os.path.join(self.config.workspace, 'storage')
-    os.makedirs(git_workspace, exist_ok=True)
-
-    # Use the same name used in the docker image so we can overwrite it.
-    image_repo_name = os.path.basename(image_repo_path)
-
-    # Checkout project's repo in the shared volume.
-    manager = repo_manager.clone_repo_and_get_manager(inferred_url,
-                                                      git_workspace,
-                                                      repo_name=image_repo_name)
-    checkout_specified_commit(manager, self.config.pr_ref,
-                              self.config.commit_sha)
-
-    return BuildPreparationResult(True, image_repo_path, manager)
-
-
-class InternalGeneric(BaseCi):
-  """Class representing CI for an OSS-Fuzz project on a CI other than Github
-  actions."""
-
-  def prepare_for_fuzzer_build(self):
-    """Builds the project builder image for an OSS-Fuzz project outside of
-    GitHub actions. Returns the repo_manager. Does not checkout source code
-    since external projects are expected to bring their own source code to
-    CIFuzz."""
-    logging.info('Building OSS-Fuzz project.')
-    # detect_main_repo builds the image as a side effect.
-    _, image_repo_path = (build_specified_commit.detect_main_repo(
-        self.config.project_name, repo_name=self.config.project_repo_name))
-
-    if not image_repo_path:
-      logging.error('Could not detect repo from project %s.',
-                    self.config.project_name)
-      return BuildPreparationResult(False, None, None)
-
-    manager = repo_manager.RepoManager(self.config.project_src_path)
-    return BuildPreparationResult(True, image_repo_path, manager)
-
-  def get_diff_base(self):
-    return 'origin...'
-
-
-_IMAGE_BUILD_TRIES = 3
-_IMAGE_BUILD_BACKOFF = 2
-
-
-@retry.wrap(_IMAGE_BUILD_TRIES, _IMAGE_BUILD_BACKOFF)
-def build_external_project_docker_image(project_name, project_src,
-                                        build_integration_path):
-  """Builds the project builder image for an external (non-OSS-Fuzz) project.
-  Returns True on success."""
-  dockerfile_path = os.path.join(build_integration_path, 'Dockerfile')
-  tag = 'gcr.io/oss-fuzz/{project_name}'.format(project_name=project_name)
-  command = ['-t', tag, '-f', dockerfile_path, project_src]
-  return helper.docker_build(command)
-
-
-class ExternalGithub(GithubCiMixin, BaseCi):
-  """Class representing CI for a non-OSS-Fuzz project on Github Actions."""
-
-  def prepare_for_fuzzer_build(self):
-    """Builds the project builder image for a non-OSS-Fuzz project on GitHub
-    actions. Sets the repo manager. Does not checkout source code since external
-    projects are expected to bring their own source code to CIFuzz. Returns True
-    on success."""
-    logging.info('Building external project.')
-    git_workspace = os.path.join(self.config.workspace, 'storage')
-    os.makedirs(git_workspace, exist_ok=True)
-    # Checkout before building, so we don't need to rely on copying the source
-    # into the image.
-    # TODO(metzman): Figure out if we want second copy at all.
-    manager = repo_manager.clone_repo_and_get_manager(
-        self.config.git_url,
-        git_workspace,
-        repo_name=self.config.project_repo_name)
-    checkout_specified_commit(manager, self.config.pr_ref,
-                              self.config.commit_sha)
-
-    build_integration_path = os.path.join(manager.repo_dir,
-                                          self.config.build_integration_path)
-    if not build_external_project_docker_image(
-        self.config.project_name, manager.repo_dir, build_integration_path):
-      logging.error('Failed to build external project.')
-      return BuildPreparationResult(False, None, None)
-
-    image_repo_path = os.path.join('/src', self.config.project_repo_name)
-    return BuildPreparationResult(True, image_repo_path, manager)
diff --git a/infra/cifuzz/coverage.py b/infra/cifuzz/coverage.py
deleted file mode 100644
index 9a179c5..0000000
--- a/infra/cifuzz/coverage.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for determining coverage of fuzz targets."""
-import logging
-import os
-import sys
-import json
-import urllib.error
-import urllib.request
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-import utils
-
-# The path to get project's latest report json file.
-LATEST_REPORT_INFO_PATH = 'oss-fuzz-coverage/latest_report_info/'
-
-
-class OssFuzzCoverageGetter:
-  """Gets coverage data for a project from OSS-Fuzz."""
-
-  def __init__(self, project_name, repo_path):
-    """Constructor for OssFuzzCoverageGetter. Callers should check that
-    fuzzer_stats_url is initialized."""
-    self.project_name = project_name
-    self.repo_path = _normalize_repo_path(repo_path)
-    self.fuzzer_stats_url = _get_fuzzer_stats_dir_url(self.project_name)
-
-  def get_target_coverage_report(self, target):
-    """Get the coverage report for a specific fuzz target.
-
-    Args:
-      target: The name of the fuzz target whose coverage is requested.
-
-    Returns:
-      The target's coverage json dict or None on failure.
-    """
-    if not self.fuzzer_stats_url:
-      return None
-
-    target_url = utils.url_join(self.fuzzer_stats_url, target + '.json')
-    return get_json_from_url(target_url)
-
-  def get_files_covered_by_target(self, target):
-    """Gets a list of source files covered by the specific fuzz target.
-
-    Args:
-      target: The name of the fuzz target whose coverage is requested.
-
-    Returns:
-      A list of files that the fuzz targets covers or None.
-    """
-    target_cov = self.get_target_coverage_report(target)
-    if not target_cov:
-      return None
-
-    coverage_per_file = get_coverage_per_file(target_cov)
-    if not coverage_per_file:
-      logging.info('No files found in coverage report.')
-      return None
-
-    affected_file_list = []
-    for file_cov in coverage_per_file:
-      norm_file_path = os.path.normpath(file_cov['filename'])
-      if not norm_file_path.startswith(self.repo_path):
-        # Exclude files outside of the main repo.
-        continue
-
-      if not is_file_covered(file_cov):
-        # Don't consider a file affected if code in it is never executed.
-        continue
-
-      # TODO(metzman): It's weird to me that we access file_cov['filename']
-      # again and not norm_file_path, figure out if this makes sense.
-      relative_path = utils.remove_prefix(file_cov['filename'], self.repo_path)
-      affected_file_list.append(relative_path)
-
-    return affected_file_list
-
-
-def is_file_covered(file_cov):
-  """Returns whether the file is covered."""
-  return file_cov['summary']['regions']['covered']
-
-
-def get_coverage_per_file(target_cov):
-  """Returns the coverage per file within |target_cov|."""
-  return target_cov['data'][0]['files']
-
-
-def _normalize_repo_path(repo_path):
-  """Normalizes and returns |repo_path| to make sure cases like /src/curl and
-  /src/curl/ are both handled."""
-  repo_path = os.path.normpath(repo_path)
-  if not repo_path.endswith('/'):
-    repo_path += '/'
-  return repo_path
-
-
-def _get_latest_cov_report_info(project_name):
-  """Gets and returns a dictionary containing the latest coverage report info
-  for |project|."""
-  latest_report_info_url = utils.url_join(utils.GCS_BASE_URL,
-                                          LATEST_REPORT_INFO_PATH,
-                                          project_name + '.json')
-  latest_cov_info = get_json_from_url(latest_report_info_url)
-  if latest_cov_info is None:
-    logging.error('Could not get the coverage report json from url: %s.',
-                  latest_report_info_url)
-    return None
-  return latest_cov_info
-
-
-def _get_fuzzer_stats_dir_url(project_name):
-  """Gets latest coverage report info for a specific OSS-Fuzz project from GCS.
-
-  Args:
-    project_name: The name of the relevant OSS-Fuzz project.
-
-  Returns:
-    The projects coverage report info in json dict or None on failure.
-  """
-  latest_cov_info = _get_latest_cov_report_info(project_name)
-
-  if not latest_cov_info:
-    return None
-
-  if 'fuzzer_stats_dir' not in latest_cov_info:
-    logging.error('fuzzer_stats_dir not in latest coverage info.')
-    return None
-
-  fuzzer_stats_dir_gs_url = latest_cov_info['fuzzer_stats_dir']
-  fuzzer_stats_dir_url = utils.gs_url_to_https(fuzzer_stats_dir_gs_url)
-  return fuzzer_stats_dir_url
-
-
-def get_json_from_url(url):
-  """Gets a json object from a specified HTTP URL.
-
-  Args:
-    url: The url of the json to be downloaded.
-
-  Returns:
-    A dictionary deserialized from JSON or None on failure.
-  """
-  try:
-    response = urllib.request.urlopen(url)
-  except urllib.error.HTTPError:
-    logging.error('HTTP error with url %s.', url)
-    return None
-
-  try:
-    # read().decode() fixes compatibility issue with urllib response object.
-    result_json = json.loads(response.read().decode())
-  except (ValueError, TypeError, json.JSONDecodeError) as err:
-    logging.error('Loading json from url %s failed with: %s.', url, str(err))
-    return None
-  return result_json
diff --git a/infra/cifuzz/coverage_test.py b/infra/cifuzz/coverage_test.py
deleted file mode 100644
index 1b24d79..0000000
--- a/infra/cifuzz/coverage_test.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for coverage.py"""
-import os
-import json
-import unittest
-from unittest import mock
-
-import coverage
-
-# pylint: disable=protected-access
-
-TEST_DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                              'test_data')
-
-PROJECT_NAME = 'curl'
-REPO_PATH = '/src/curl'
-FUZZ_TARGET = 'curl_fuzzer'
-PROJECT_COV_JSON_FILENAME = 'example_curl_cov.json'
-FUZZ_TARGET_COV_JSON_FILENAME = 'example_curl_fuzzer_cov.json'
-INVALID_TARGET = 'not-a-fuzz-target'
-
-with open(os.path.join(TEST_DATA_PATH,
-                       PROJECT_COV_JSON_FILENAME),) as cov_file_handle:
-  PROJECT_COV_INFO = json.loads(cov_file_handle.read())
-
-
-class GetFuzzerStatsDirUrlTest(unittest.TestCase):
-  """Tests _get_fuzzer_stats_dir_url."""
-
-  @mock.patch('coverage.get_json_from_url',
-              return_value={
-                  'fuzzer_stats_dir':
-                      'gs://oss-fuzz-coverage/systemd/fuzzer_stats/20210303'
-              })
-  def test_get_valid_project(self, mocked_get_json_from_url):
-    """Tests that a project's coverage report can be downloaded and parsed.
-
-    NOTE: This test relies on the PROJECT_NAME repo's coverage report.
-    The "example" project was not used because it has no coverage reports.
-    """
-    result = coverage._get_fuzzer_stats_dir_url(PROJECT_NAME)
-    (url,), _ = mocked_get_json_from_url.call_args
-    self.assertEqual(
-        'https://storage.googleapis.com/oss-fuzz-coverage/'
-        'latest_report_info/curl.json', url)
-
-    expected_result = (
-        'https://storage.googleapis.com/oss-fuzz-coverage/systemd/fuzzer_stats/'
-        '20210303')
-    self.assertEqual(result, expected_result)
-
-  def test_get_invalid_project(self):
-    """Tests that passing a bad project returns None."""
-    self.assertIsNone(coverage._get_fuzzer_stats_dir_url('not-a-proj'))
-
-
-class GetTargetCoverageReportTest(unittest.TestCase):
-  """Tests get_target_coverage_report."""
-
-  def setUp(self):
-    with mock.patch('coverage._get_latest_cov_report_info',
-                    return_value=PROJECT_COV_INFO):
-      self.coverage_getter = coverage.OssFuzzCoverageGetter(
-          PROJECT_NAME, REPO_PATH)
-
-  @mock.patch('coverage.get_json_from_url', return_value={})
-  def test_valid_target(self, mocked_get_json_from_url):
-    """Tests that a target's coverage report can be downloaded and parsed."""
-    self.coverage_getter.get_target_coverage_report(FUZZ_TARGET)
-    (url,), _ = mocked_get_json_from_url.call_args
-    self.assertEqual(
-        'https://storage.googleapis.com/oss-fuzz-coverage/'
-        'curl/fuzzer_stats/20200226/curl_fuzzer.json', url)
-
-  def test_invalid_target(self):
-    """Tests that passing an invalid target coverage report returns None."""
-    self.assertIsNone(
-        self.coverage_getter.get_target_coverage_report(INVALID_TARGET))
-
-  @mock.patch('coverage._get_latest_cov_report_info', return_value=None)
-  def test_invalid_project_json(self, _):
-    """Tests an invalid project JSON results in None being returned."""
-    coverage_getter = coverage.OssFuzzCoverageGetter(PROJECT_NAME, REPO_PATH)
-    self.assertIsNone(coverage_getter.get_target_coverage_report(FUZZ_TARGET))
-
-
-class GetFilesCoveredByTargetTest(unittest.TestCase):
-  """Tests get_files_covered_by_target."""
-
-  def setUp(self):
-    with mock.patch('coverage._get_latest_cov_report_info',
-                    return_value=PROJECT_COV_INFO):
-      self.coverage_getter = coverage.OssFuzzCoverageGetter(
-          PROJECT_NAME, REPO_PATH)
-
-  def test_valid_target(self):
-    """Tests that covered files can be retrieved from a coverage report."""
-    with open(os.path.join(TEST_DATA_PATH,
-                           FUZZ_TARGET_COV_JSON_FILENAME),) as file_handle:
-      fuzzer_cov_info = json.loads(file_handle.read())
-
-    with mock.patch('coverage.OssFuzzCoverageGetter.get_target_coverage_report',
-                    return_value=fuzzer_cov_info):
-      file_list = self.coverage_getter.get_files_covered_by_target(FUZZ_TARGET)
-
-    curl_files_list_path = os.path.join(TEST_DATA_PATH,
-                                        'example_curl_file_list.json')
-    with open(curl_files_list_path) as file_handle:
-      expected_file_list = json.loads(file_handle.read())
-    self.assertCountEqual(file_list, expected_file_list)
-
-  def test_invalid_target(self):
-    """Tests passing invalid fuzz target returns None."""
-    self.assertIsNone(
-        self.coverage_getter.get_files_covered_by_target(INVALID_TARGET))
-
-
-class IsFileCoveredTest(unittest.TestCase):
-  """Tests for is_file_covered."""
-
-  def test_is_file_covered_covered(self):
-    """Tests that is_file_covered returns True for a covered file."""
-    file_coverage = {
-        'filename': '/src/systemd/src/basic/locale-util.c',
-        'summary': {
-            'regions': {
-                'count': 204,
-                'covered': 200,
-                'notcovered': 200,
-                'percent': 98.03
-            }
-        }
-    }
-    self.assertTrue(coverage.is_file_covered(file_coverage))
-
-  def test_is_file_covered_not_covered(self):
-    """Tests that is_file_covered returns False for a not covered file."""
-    file_coverage = {
-        'filename': '/src/systemd/src/basic/locale-util.c',
-        'summary': {
-            'regions': {
-                'count': 204,
-                'covered': 0,
-                'notcovered': 0,
-                'percent': 0
-            }
-        }
-    }
-    self.assertFalse(coverage.is_file_covered(file_coverage))
-
-
-class GetLatestCovReportInfo(unittest.TestCase):
-  """Tests that _get_latest_cov_report_info works as intended."""
-
-  PROJECT = 'project'
-  LATEST_REPORT_INFO_URL = ('https://storage.googleapis.com/oss-fuzz-coverage/'
-                            'latest_report_info/project.json')
-
-  @mock.patch('logging.error')
-  @mock.patch('coverage.get_json_from_url', return_value={'coverage': 1})
-  def test_get_latest_cov_report_info(self, mocked_get_json_from_url,
-                                      mocked_error):
-    """Tests that _get_latest_cov_report_info works as intended."""
-    result = coverage._get_latest_cov_report_info(self.PROJECT)
-    self.assertEqual(result, {'coverage': 1})
-    mocked_error.assert_not_called()
-    mocked_get_json_from_url.assert_called_with(self.LATEST_REPORT_INFO_URL)
-
-  @mock.patch('logging.error')
-  @mock.patch('coverage.get_json_from_url', return_value=None)
-  def test_get_latest_cov_report_info_fail(self, _, mocked_error):
-    """Tests that _get_latest_cov_report_info works as intended when we can't
-    get latest report info."""
-    result = coverage._get_latest_cov_report_info('project')
-    self.assertIsNone(result)
-    mocked_error.assert_called_with(
-        'Could not get the coverage report json from url: %s.',
-        self.LATEST_REPORT_INFO_URL)
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/docker.py b/infra/cifuzz/docker.py
deleted file mode 100644
index eb993e2..0000000
--- a/infra/cifuzz/docker.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for dealing with docker."""
-import os
-import sys
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-
-import utils
-
-BASE_BUILDER_TAG = 'gcr.io/oss-fuzz-base/base-builder'
-BASE_RUNNER_TAG = 'gcr.io/oss-fuzz-base/base-runner'
-MSAN_LIBS_BUILDER_TAG = 'gcr.io/oss-fuzz-base/msan-libs-builder'
-PROJECT_TAG_PREFIX = 'gcr.io/oss-fuzz/'
-
-
-def get_project_image_name(project):
-  """Returns the name of the project builder image for |project_name|."""
-  return PROJECT_TAG_PREFIX + project
-
-
-def delete_images(images):
-  """Deletes |images|."""
-  command = ['docker', 'rmi', '-f'] + images
-  utils.execute(command)
-  utils.execute(['docker', 'builder', 'prune', '-f'])
diff --git a/infra/cifuzz/environment.py b/infra/cifuzz/environment.py
deleted file mode 100644
index 4cc0f84..0000000
--- a/infra/cifuzz/environment.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for dealing with env vars."""
-
-import ast
-import os
-
-
-def _eval_value(value_string):
-  """Returns evaluated value."""
-  try:
-    return ast.literal_eval(value_string)
-  except:  # pylint: disable=bare-except
-    # String fallback.
-    return value_string
-
-
-def get(env_var, default_value=None):
-  """Returns an environment variable value."""
-  value_string = os.getenv(env_var)
-  if value_string is None:
-    return default_value
-
-  return _eval_value(value_string)
-
-
-def get_bool(env_var, default_value=None):
-  """Returns a boolean environment variable value. This is needed because a lot
-  of CIFuzz users specified 'false' for dry-run. So we need to special case
-  this."""
-  value = get(env_var, default_value)
-  if not isinstance(value, str):
-    return bool(value)
-
-  lower_value = value.lower()
-  allowed_values = {'true', 'false'}
-  if lower_value not in allowed_values:
-    raise Exception(('Bool env var {env_var} value {value} is invalid. '
-                     'Must be one of {allowed_values}').format(
-                         env_var=env_var,
-                         value=value,
-                         allowed_values=allowed_values))
-  return lower_value == 'true'
diff --git a/infra/cifuzz/example_main.yml b/infra/cifuzz/example_main.yml
deleted file mode 100644
index 82c239c..0000000
--- a/infra/cifuzz/example_main.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: CIFuzz
-on: [pull_request]
-jobs:
-  Fuzzing:
-    runs-on: ubuntu-latest
-    steps:
-    - name: Build Fuzzers
-      id: build
-      uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
-      with:
-        oss-fuzz-project-name: 'example'
-        dry-run: false
-    - name: Run Fuzzers
-      uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
-      with:
-        oss-fuzz-project-name: 'example'
-        fuzz-seconds: 600
-        dry-run: false
-    - name: Upload Crash
-      uses: actions/upload-artifact@v1
-      if: failure() && steps.build.outcome == 'success'
-      with:
-        name: artifacts
-        path: ./out/artifacts
diff --git a/infra/cifuzz/fuzz_target.py b/infra/cifuzz/fuzz_target.py
index c623bf6..9272bd2 100644
--- a/infra/cifuzz/fuzz_target.py
+++ b/infra/cifuzz/fuzz_target.py
@@ -12,84 +12,52 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 """A module to handle running a fuzz target for a specified amount of time."""
-import collections
 import logging
 import os
 import re
-import shutil
-import stat
 import subprocess
 import sys
 
-import docker
-
-# pylint: disable=wrong-import-position,import-error
+# pylint: disable=wrong-import-position
 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 import utils
 
+# TODO: Turn default logging to WARNING when CIFuzz is stable
 logging.basicConfig(
     format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
     level=logging.DEBUG)
 
-# Use a fixed seed for determinism. Use len_control=0 since we don't have enough
-# time fuzzing for len_control to make sense (probably).
-LIBFUZZER_OPTIONS = '-seed=1337 -len_control=0'
-
-# The number of reproduce attempts for a crash.
-REPRODUCE_ATTEMPTS = 10
-
-# Seconds on top of duration until a timeout error is raised.
-BUFFER_TIME = 10
-
-# Log message if we can't check if crash reproduces on an recent build.
-COULD_NOT_TEST_ON_RECENT_MESSAGE = (
-    'Crash is reproducible. Could not run recent build of '
-    'target to determine if this code change (pr/commit) introduced crash. '
-    'Assuming this code change introduced crash.')
-
-FuzzResult = collections.namedtuple('FuzzResult', ['testcase', 'stacktrace'])
-
-
-class ReproduceError(Exception):
-  """Error for when we can't attempt to reproduce a crash."""
-
 
 class FuzzTarget:
   """A class to manage a single fuzz target.
 
   Attributes:
+    project_name: The name of the OSS-Fuzz project the target is associated.
     target_name: The name of the fuzz target.
     duration: The length of time in seconds that the target should run.
     target_path: The location of the fuzz target binary.
-    out_dir: The location of where output artifacts are stored.
   """
 
-  # pylint: disable=too-many-arguments
-  def __init__(self, target_path, duration, out_dir, clusterfuzz_deployment,
-               config):
+  def __init__(self, project_name, target_path, duration, out_dir):
     """Represents a single fuzz target.
 
     Args:
+      project_name: The OSS-Fuzz project of this target.
       target_path: The location of the fuzz target binary.
       duration: The length of time  in seconds the target should run.
       out_dir: The location of where the output from crashes should be stored.
-      clusterfuzz_deployment: The object representing the ClusterFuzz
-          deployment.
-      config: The config of this project.
     """
+    self.target_name = os.path.basename(target_path)
+    self.duration = duration
+    self.project_name = project_name
     self.target_path = target_path
-    self.target_name = os.path.basename(self.target_path)
-    self.duration = int(duration)
     self.out_dir = out_dir
-    self.clusterfuzz_deployment = clusterfuzz_deployment
-    self.config = config
-    self.latest_corpus_path = None
 
   def fuzz(self):
     """Starts the fuzz target run for the length of time specified by duration.
 
     Returns:
-      FuzzResult namedtuple with stacktrace and testcase if applicable.
+      (test_case, stack trace) if found or (None, None) on timeout or error.
     """
     logging.info('Fuzzer %s, started.', self.target_name)
     docker_container = utils.get_container_name()
@@ -102,197 +70,39 @@
       command += ['-v', '%s:%s' % (self.out_dir, '/out')]
 
     command += [
-        '-e', 'FUZZING_ENGINE=libfuzzer', '-e',
-        'SANITIZER=' + self.config.sanitizer, '-e', 'CIFUZZ=True', '-e',
-        'RUN_FUZZER_MODE=interactive', docker.BASE_RUNNER_TAG, 'bash', '-c'
+        '-e', 'FUZZING_ENGINE=libfuzzer', '-e', 'SANITIZER=address', '-e',
+        'RUN_FUZZER_MODE=interactive', 'gcr.io/oss-fuzz-base/base-runner',
+        'bash', '-c', 'run_fuzzer {0}'.format(self.target_name)
     ]
-
-    run_fuzzer_command = 'run_fuzzer {fuzz_target} {options}'.format(
-        fuzz_target=self.target_name,
-        options=LIBFUZZER_OPTIONS + ' -max_total_time=' + str(self.duration))
-
-    # If corpus can be downloaded use it for fuzzing.
-    self.latest_corpus_path = self.clusterfuzz_deployment.download_corpus(
-        self.target_name, self.out_dir)
-    if self.latest_corpus_path:
-      run_fuzzer_command = run_fuzzer_command + ' ' + self.latest_corpus_path
-    command.append(run_fuzzer_command)
-
     logging.info('Running command: %s', ' '.join(command))
     process = subprocess.Popen(command,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
 
     try:
-      _, stderr = process.communicate(timeout=self.duration + BUFFER_TIME)
+      _, err = process.communicate(timeout=self.duration)
     except subprocess.TimeoutExpired:
-      logging.error('Fuzzer %s timed out, ending fuzzing.', self.target_name)
-      return FuzzResult(None, None)
+      logging.info('Fuzzer %s, finished with timeout.', self.target_name)
+      return None, None
 
-    # Libfuzzer timeout was reached.
-    if not process.returncode:
-      logging.info('Fuzzer %s finished with no crashes discovered.',
-                   self.target_name)
-      return FuzzResult(None, None)
-
-    # Crash was discovered.
     logging.info('Fuzzer %s, ended before timeout.', self.target_name)
-    testcase = self.get_testcase(stderr)
-    if not testcase:
-      logging.error(b'No testcase found in stacktrace: %s.', stderr)
-      return FuzzResult(None, None)
+    err_str = err.decode('ascii')
+    test_case = self.get_test_case(err_str)
+    if not test_case:
+      logging.error('No test case found in stack trace.', file=sys.stderr)
+      return None, None
+    return test_case, err_str
 
-    utils.binary_print(b'Fuzzer: %s. Detected bug:\n%s' %
-                       (self.target_name.encode(), stderr))
-    if self.is_crash_reportable(testcase):
-      # We found a bug in the fuzz target and we will report it.
-      return FuzzResult(testcase, stderr)
-
-    # We found a bug but we won't report it.
-    return FuzzResult(None, None)
-
-  def free_disk_if_needed(self):
-    """Deletes things that are no longer needed from fuzzing this fuzz target to
-    save disk space if needed."""
-    if not self.config.low_disk_space:
-      return
-    logging.info(
-        'Deleting corpus, seed corpus and fuzz target of %s to save disk.',
-        self.target_name)
-
-    # Delete the seed corpus, corpus, and fuzz target.
-    if self.latest_corpus_path and os.path.exists(self.latest_corpus_path):
-      # Use ignore_errors=True to fix
-      # https://github.com/google/oss-fuzz/issues/5383.
-      shutil.rmtree(self.latest_corpus_path, ignore_errors=True)
-
-    os.remove(self.target_path)
-    target_seed_corpus_path = self.target_path + '_seed_corpus.zip'
-    if os.path.exists(target_seed_corpus_path):
-      os.remove(target_seed_corpus_path)
-    logging.info('Done deleting.')
-
-  def is_reproducible(self, testcase, target_path):
-    """Checks if the testcase reproduces.
-
-      Args:
-        testcase: The path to the testcase to be tested.
-        target_path: The path to the fuzz target to be tested
-
-      Returns:
-        True if crash is reproducible and we were able to run the
-        binary.
-
-      Raises:
-        ReproduceError if we can't attempt to reproduce the crash.
-    """
-
-    if not os.path.exists(target_path):
-      raise ReproduceError('Target %s not found.' % target_path)
-
-    os.chmod(target_path, stat.S_IRWXO)
-
-    target_dirname = os.path.dirname(target_path)
-    command = ['docker', 'run', '--rm', '--privileged']
-    container = utils.get_container_name()
-    if container:
-      command += [
-          '--volumes-from', container, '-e', 'OUT=' + target_dirname, '-e',
-          'TESTCASE=' + testcase
-      ]
-    else:
-      command += [
-          '-v',
-          '%s:/out' % target_dirname, '-v',
-          '%s:/testcase' % testcase
-      ]
-
-    command += [
-        '-t', docker.BASE_RUNNER_TAG, 'reproduce', self.target_name, '-runs=100'
-    ]
-
-    logging.info('Running reproduce command: %s.', ' '.join(command))
-    for _ in range(REPRODUCE_ATTEMPTS):
-      _, _, returncode = utils.execute(command)
-      if returncode != 0:
-        logging.info('Reproduce command returned: %s. Reproducible on %s.',
-                     returncode, target_path)
-
-        return True
-
-    logging.info('Reproduce command returned 0. Not reproducible on %s.',
-                 target_path)
-    return False
-
-  def is_crash_reportable(self, testcase):
-    """Returns True if a crash is reportable. This means the crash is
-    reproducible but not reproducible on a build from the ClusterFuzz deployment
-    (meaning the crash was introduced by this PR/commit/code change).
+  def get_test_case(self, error_string):
+    """Gets the file from a fuzzer run stack trace.
 
     Args:
-      testcase: The path to the testcase that triggered the crash.
+      error_string: The stack trace string containing the error.
 
     Returns:
-      True if the crash was introduced by the current pull request.
-
-    Raises:
-      ReproduceError if we can't attempt to reproduce the crash on the PR build.
+      The error test case or None if not found.
     """
-    if not os.path.exists(testcase):
-      raise ReproduceError('Testcase %s not found.' % testcase)
-
-    try:
-      reproducible_on_code_change = self.is_reproducible(
-          testcase, self.target_path)
-    except ReproduceError as error:
-      logging.error('Could not run target when checking for reproducibility.'
-                    'Please file an issue:'
-                    'https://github.com/google/oss-fuzz/issues/new.')
-      raise error
-
-    if not reproducible_on_code_change:
-      logging.info('Failed to reproduce the crash using the obtained testcase.')
-      return False
-
-    clusterfuzz_build_dir = self.clusterfuzz_deployment.download_latest_build(
-        self.out_dir)
-    if not clusterfuzz_build_dir:
-      # Crash is reproducible on PR build and we can't test on a recent
-      # ClusterFuzz/OSS-Fuzz build.
-      logging.info(COULD_NOT_TEST_ON_RECENT_MESSAGE)
-      return True
-
-    clusterfuzz_target_path = os.path.join(clusterfuzz_build_dir,
-                                           self.target_name)
-    try:
-      reproducible_on_clusterfuzz_build = self.is_reproducible(
-          testcase, clusterfuzz_target_path)
-    except ReproduceError:
-      # This happens if the project has ClusterFuzz builds, but the fuzz target
-      # is not in it (e.g. because the fuzz target is new).
-      logging.info(COULD_NOT_TEST_ON_RECENT_MESSAGE)
-      return True
-
-    if not reproducible_on_clusterfuzz_build:
-      logging.info('The crash is reproducible. The crash doesn\'t reproduce '
-                   'on old builds. This code change probably introduced the '
-                   'crash.')
-      return True
-
-    logging.info('The crash is reproducible on old builds '
-                 '(without the current code change).')
-    return False
-
-  def get_testcase(self, error_bytes):
-    """Gets the file from a fuzzer run stacktrace.
-
-    Args:
-      error_bytes: The bytes containing the output from the fuzzer.
-
-    Returns:
-      The path to the testcase or None if not found.
-    """
-    match = re.search(rb'\bTest unit written to \.\/([^\s]+)', error_bytes)
+    match = re.search(r'\bTest unit written to \.\/([^\s]+)', error_string)
     if match:
-      return os.path.join(self.out_dir, match.group(1).decode('utf-8'))
+      return os.path.join(self.out_dir, match.group(1))
     return None
diff --git a/infra/cifuzz/fuzz_target_test.py b/infra/cifuzz/fuzz_target_test.py
deleted file mode 100644
index 8bec234..0000000
--- a/infra/cifuzz/fuzz_target_test.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests the functionality of the fuzz_target module."""
-
-import os
-import tempfile
-import unittest
-from unittest import mock
-
-import parameterized
-from pyfakefs import fake_filesystem_unittest
-
-import clusterfuzz_deployment
-import config_utils
-import fuzz_target
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-# An example fuzzer that triggers an error.
-EXAMPLE_FUZZER = 'example_crash_fuzzer'
-
-# The return value of a successful call to utils.execute.
-EXECUTE_SUCCESS_RETVAL = ('', '', 0)
-
-# The return value of a failed call to utils.execute.
-EXECUTE_FAILURE_RETVAL = ('', '', 1)
-
-
-def _create_config(**kwargs):
-  """Creates a config object and then sets every attribute that is a key in
-  |kwargs| to the corresponding value. Asserts that each key in |kwargs| is an
-  attribute of Config."""
-  defaults = {'is_github': True, 'project_name': EXAMPLE_PROJECT}
-  for default_key, default_value in defaults.items():
-    if default_key not in kwargs:
-      kwargs[default_key] = default_value
-
-  with mock.patch('os.path.basename', return_value=None), mock.patch(
-      'config_utils.get_project_src_path',
-      return_value=None), mock.patch('config_utils._is_dry_run',
-                                     return_value=True):
-    config = config_utils.RunFuzzersConfig()
-
-  for key, value in kwargs.items():
-    assert hasattr(config, key), 'Config doesn\'t have attribute: ' + key
-    setattr(config, key, value)
-  return config
-
-
-def _create_deployment(**kwargs):
-  config = _create_config(**kwargs)
-  return clusterfuzz_deployment.get_clusterfuzz_deployment(config)
-
-
-# TODO(metzman): Use patch from test_libs/helpers.py in clusterfuzz so that we
-# don't need to accept this as an argument in every test method.
-@mock.patch('utils.get_container_name', return_value='container')
-class IsReproducibleTest(fake_filesystem_unittest.TestCase):
-  """Tests the is_reproducible method in the fuzz_target.FuzzTarget class."""
-
-  def setUp(self):
-    """Sets up example fuzz target to test is_reproducible method."""
-    self.fuzz_target_path = '/example/path'
-    self.testcase_path = '/testcase'
-    deployment = _create_deployment()
-    self.test_target = fuzz_target.FuzzTarget(self.fuzz_target_path,
-                                              fuzz_target.REPRODUCE_ATTEMPTS,
-                                              '/example/outdir', deployment,
-                                              deployment.config)
-
-  def test_reproducible(self, _):
-    """Tests that is_reproducible returns True if crash is detected and that
-    is_reproducible uses the correct command to reproduce a crash."""
-    self._set_up_fakefs()
-    all_repro = [EXECUTE_FAILURE_RETVAL] * fuzz_target.REPRODUCE_ATTEMPTS
-    with mock.patch('utils.execute', side_effect=all_repro) as mocked_execute:
-      result = self.test_target.is_reproducible(self.testcase_path,
-                                                self.fuzz_target_path)
-      mocked_execute.assert_called_once_with([
-          'docker', 'run', '--rm', '--privileged', '--volumes-from',
-          'container', '-e', 'OUT=/example', '-e',
-          'TESTCASE=' + self.testcase_path, '-t',
-          'gcr.io/oss-fuzz-base/base-runner', 'reproduce', 'path', '-runs=100'
-      ])
-      self.assertTrue(result)
-      self.assertEqual(1, mocked_execute.call_count)
-
-  def _set_up_fakefs(self):
-    """Helper to setup pyfakefs and add important files to the fake
-    filesystem."""
-    self.setUpPyfakefs()
-    self.fs.create_file(self.fuzz_target_path)
-    self.fs.create_file(self.testcase_path)
-
-  def test_flaky(self, _):
-    """Tests that is_reproducible returns True if crash is detected on the last
-    attempt."""
-    self._set_up_fakefs()
-    last_time_repro = [EXECUTE_SUCCESS_RETVAL] * 9 + [EXECUTE_FAILURE_RETVAL]
-    with mock.patch('utils.execute',
-                    side_effect=last_time_repro) as mocked_execute:
-      self.assertTrue(
-          self.test_target.is_reproducible(self.testcase_path,
-                                           self.fuzz_target_path))
-      self.assertEqual(fuzz_target.REPRODUCE_ATTEMPTS,
-                       mocked_execute.call_count)
-
-  def test_nonexistent_fuzzer(self, _):
-    """Tests that is_reproducible raises an error if it could not attempt
-    reproduction because the fuzzer doesn't exist."""
-    with self.assertRaises(fuzz_target.ReproduceError):
-      self.test_target.is_reproducible(self.testcase_path, '/non-existent-path')
-
-  def test_unreproducible(self, _):
-    """Tests that is_reproducible returns False for a crash that did not
-    reproduce."""
-    all_unrepro = [EXECUTE_SUCCESS_RETVAL] * fuzz_target.REPRODUCE_ATTEMPTS
-    self._set_up_fakefs()
-    with mock.patch('utils.execute', side_effect=all_unrepro):
-      result = self.test_target.is_reproducible(self.testcase_path,
-                                                self.fuzz_target_path)
-      self.assertFalse(result)
-
-
-class GetTestCaseTest(unittest.TestCase):
-  """Tests get_testcase."""
-
-  def setUp(self):
-    """Sets up example fuzz target to test get_testcase method."""
-    deployment = _create_deployment()
-    self.test_target = fuzz_target.FuzzTarget('/example/path', 10,
-                                              '/example/outdir', deployment,
-                                              deployment.config)
-
-  def test_valid_error_string(self):
-    """Tests that get_testcase returns the correct testcase give an error."""
-    testcase_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                 'test_data', 'example_crash_fuzzer_output.txt')
-    with open(testcase_path, 'rb') as test_fuzz_output:
-      parsed_testcase = self.test_target.get_testcase(test_fuzz_output.read())
-    self.assertEqual(
-        parsed_testcase,
-        '/example/outdir/crash-ad6700613693ef977ff3a8c8f4dae239c3dde6f5')
-
-  def test_invalid_error_string(self):
-    """Tests that get_testcase returns None with a bad error string."""
-    self.assertIsNone(self.test_target.get_testcase(b''))
-    self.assertIsNone(self.test_target.get_testcase(b' Example crash string.'))
-
-  def test_encoding(self):
-    """Tests that get_testcase accepts bytes and returns a string."""
-    fuzzer_output = b'\x8fTest unit written to ./crash-1'
-    result = self.test_target.get_testcase(fuzzer_output)
-    self.assertTrue(isinstance(result, str))
-
-
-class IsCrashReportableTest(fake_filesystem_unittest.TestCase):
-  """Tests the is_crash_reportable method of FuzzTarget."""
-
-  def setUp(self):
-    """Sets up example fuzz target to test is_crash_reportable method."""
-    self.fuzz_target_path = '/example/do_stuff_fuzzer'
-    deployment = _create_deployment()
-    self.test_target = fuzz_target.FuzzTarget(self.fuzz_target_path, 100,
-                                              '/example/outdir', deployment,
-                                              deployment.config)
-    self.oss_fuzz_build_path = '/oss-fuzz-build'
-    self.setUpPyfakefs()
-    self.fs.create_file(self.fuzz_target_path)
-    self.oss_fuzz_target_path = os.path.join(
-        self.oss_fuzz_build_path, os.path.basename(self.fuzz_target_path))
-    self.fs.create_file(self.oss_fuzz_target_path)
-    self.testcase_path = '/testcase'
-    self.fs.create_file(self.testcase_path, contents='')
-
-  @mock.patch('fuzz_target.FuzzTarget.is_reproducible',
-              side_effect=[True, False])
-  @mock.patch('logging.info')
-  def test_new_reproducible_crash(self, mocked_info, _):
-    """Tests that a new reproducible crash returns True."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      self.test_target.out_dir = tmp_dir
-      self.assertTrue(self.test_target.is_crash_reportable(self.testcase_path))
-    mocked_info.assert_called_with(
-        'The crash is reproducible. The crash doesn\'t reproduce '
-        'on old builds. This code change probably introduced the '
-        'crash.')
-
-  # yapf: disable
-  @parameterized.parameterized.expand([
-      # Reproducible on PR build, but also reproducible on OSS-Fuzz.
-      ([True, True],),
-
-      # Not reproducible on PR build, but somehow reproducible on OSS-Fuzz.
-      # Unlikely to happen in real world except if test is flaky.
-      ([False, True],),
-
-      # Not reproducible on PR build, and not reproducible on OSS-Fuzz.
-      ([False, False],),
-  ])
-  # yapf: enable
-  def test_invalid_crash(self, is_reproducible_retvals):
-    """Tests that a nonreportable crash causes the method to return False."""
-    with mock.patch('fuzz_target.FuzzTarget.is_reproducible',
-                    side_effect=is_reproducible_retvals):
-      with mock.patch('clusterfuzz_deployment.OSSFuzz.download_latest_build',
-                      return_value=self.oss_fuzz_build_path):
-        self.assertFalse(
-            self.test_target.is_crash_reportable(self.testcase_path))
-
-  @mock.patch('logging.info')
-  @mock.patch('fuzz_target.FuzzTarget.is_reproducible', return_value=[True])
-  def test_reproducible_no_oss_fuzz_target(self, _, mocked_info):
-    """Tests that is_crash_reportable returns True when a crash reproduces on
-    the PR build but the target is not in the OSS-Fuzz build (usually because it
-    is new)."""
-    os.remove(self.oss_fuzz_target_path)
-
-    def is_reproducible_side_effect(_, target_path):
-      if os.path.dirname(target_path) == self.oss_fuzz_build_path:
-        raise fuzz_target.ReproduceError()
-      return True
-
-    with mock.patch(
-        'fuzz_target.FuzzTarget.is_reproducible',
-        side_effect=is_reproducible_side_effect) as mocked_is_reproducible:
-      with mock.patch('clusterfuzz_deployment.OSSFuzz.download_latest_build',
-                      return_value=self.oss_fuzz_build_path):
-        self.assertTrue(self.test_target.is_crash_reportable(
-            self.testcase_path))
-    mocked_is_reproducible.assert_any_call(self.testcase_path,
-                                           self.oss_fuzz_target_path)
-    mocked_info.assert_called_with(
-        'Crash is reproducible. Could not run recent build of '
-        'target to determine if this code change (pr/commit) introduced crash. '
-        'Assuming this code change introduced crash.')
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/run_fuzzers.py b/infra/cifuzz/run_fuzzers.py
deleted file mode 100644
index 513cfb6..0000000
--- a/infra/cifuzz/run_fuzzers.py
+++ /dev/null
@@ -1,210 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for running fuzzers."""
-import enum
-import logging
-import os
-import shutil
-import sys
-import time
-
-import clusterfuzz_deployment
-import fuzz_target
-import stack_parser
-
-# pylint: disable=wrong-import-position,import-error
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-
-import utils
-
-
-class RunFuzzersResult(enum.Enum):
-  """Enum result from running fuzzers."""
-  ERROR = 0
-  BUG_FOUND = 1
-  NO_BUG_FOUND = 2
-
-
-class BaseFuzzTargetRunner:
-  """Base class for fuzzer runners."""
-
-  def __init__(self, config):
-    self.config = config
-    self.clusterfuzz_deployment = (
-        clusterfuzz_deployment.get_clusterfuzz_deployment(self.config))
-    # Set by the initialize method.
-    self.out_dir = None
-    self.fuzz_target_paths = None
-    self.artifacts_dir = None
-
-  def initialize(self):
-    """Initialization method. Must be called before calling run_fuzz_targets.
-    Returns True on success."""
-    # Use a seperate initialization function so we can return False on failure
-    # instead of exceptioning like we need to do if this were done in the
-    # __init__ method.
-
-    logging.info('Using %s sanitizer.', self.config.sanitizer)
-
-    # TODO(metzman) Add a check to ensure we aren't over time limit.
-    if not self.config.fuzz_seconds or self.config.fuzz_seconds < 1:
-      logging.error(
-          'Fuzz_seconds argument must be greater than 1, but was: %s.',
-          self.config.fuzz_seconds)
-      return False
-
-    self.out_dir = os.path.join(self.config.workspace, 'out')
-    if not os.path.exists(self.out_dir):
-      logging.error('Out directory: %s does not exist.', self.out_dir)
-      return False
-
-    self.artifacts_dir = os.path.join(self.out_dir, 'artifacts')
-    if not os.path.exists(self.artifacts_dir):
-      os.mkdir(self.artifacts_dir)
-    elif (not os.path.isdir(self.artifacts_dir) or
-          os.listdir(self.artifacts_dir)):
-      logging.error('Artifacts path: %s exists and is not an empty directory.',
-                    self.artifacts_dir)
-      return False
-
-    self.fuzz_target_paths = utils.get_fuzz_targets(self.out_dir)
-    logging.info('Fuzz targets: %s', self.fuzz_target_paths)
-    if not self.fuzz_target_paths:
-      logging.error('No fuzz targets were found in out directory: %s.',
-                    self.out_dir)
-      return False
-
-    return True
-
-  def run_fuzz_target(self, fuzz_target_obj):  # pylint: disable=no-self-use
-    """Fuzzes with |fuzz_target_obj| and returns the result."""
-    # TODO(metzman): Make children implement this so that the batch runner can
-    # do things differently.
-    result = fuzz_target_obj.fuzz()
-    fuzz_target_obj.free_disk_if_needed()
-    return result
-
-  @property
-  def quit_on_bug_found(self):
-    """Property that is checked to determine if fuzzing should quit after first
-    bug is found."""
-    raise NotImplementedError('Child class must implement method')
-
-  def get_fuzz_target_artifact(self, target, artifact_name):
-    """Returns the path of a fuzzing artifact named |artifact_name| for
-    |fuzz_target|."""
-    artifact_name = '{target_name}-{sanitizer}-{artifact_name}'.format(
-        target_name=target.target_name,
-        sanitizer=self.config.sanitizer,
-        artifact_name=artifact_name)
-    return os.path.join(self.artifacts_dir, artifact_name)
-
-  def create_fuzz_target_obj(self, target_path, run_seconds):
-    """Returns a fuzz target object."""
-    return fuzz_target.FuzzTarget(target_path, run_seconds, self.out_dir,
-                                  self.clusterfuzz_deployment, self.config)
-
-  def run_fuzz_targets(self):
-    """Runs fuzz targets. Returns True if a bug was found."""
-    fuzzers_left_to_run = len(self.fuzz_target_paths)
-
-    # Make a copy since we will mutate it.
-    fuzz_seconds = self.config.fuzz_seconds
-
-    min_seconds_per_fuzzer = fuzz_seconds // fuzzers_left_to_run
-    bug_found = False
-    for target_path in self.fuzz_target_paths:
-      # By doing this, we can ensure that every fuzz target runs for at least
-      # min_seconds_per_fuzzer, but that other fuzzers will have longer to run
-      # if one ends early.
-      run_seconds = max(fuzz_seconds // fuzzers_left_to_run,
-                        min_seconds_per_fuzzer)
-
-      target = self.create_fuzz_target_obj(target_path, run_seconds)
-      start_time = time.time()
-      result = self.run_fuzz_target(target)
-
-      # It's OK if this goes negative since we take max when determining
-      # run_seconds.
-      fuzz_seconds -= time.time() - start_time
-
-      fuzzers_left_to_run -= 1
-      if not result.testcase or not result.stacktrace:
-        logging.info('Fuzzer %s finished running without crashes.',
-                     target.target_name)
-        continue
-
-      # TODO(metzman): Do this with filestore.
-      testcase_artifact_path = self.get_fuzz_target_artifact(
-          target, os.path.basename(result.testcase))
-      shutil.move(result.testcase, testcase_artifact_path)
-      bug_summary_artifact_path = self.get_fuzz_target_artifact(
-          target, 'bug-summary.txt')
-      stack_parser.parse_fuzzer_output(result.stacktrace,
-                                       bug_summary_artifact_path)
-
-      bug_found = True
-      if self.quit_on_bug_found:
-        logging.info('Bug found. Stopping fuzzing.')
-        return bug_found
-
-    return bug_found
-
-
-class CiFuzzTargetRunner(BaseFuzzTargetRunner):
-  """Runner for fuzz targets used in CI (patch-fuzzing) context."""
-
-  @property
-  def quit_on_bug_found(self):
-    return True
-
-
-class BatchFuzzTargetRunner(BaseFuzzTargetRunner):
-  """Runner for fuzz targets used in batch fuzzing context."""
-
-  @property
-  def quit_on_bug_found(self):
-    return False
-
-
-def get_fuzz_target_runner(config):
-  """Returns a fuzz target runner object based on the run_fuzzers_mode of
-  |config|."""
-  logging.info('RUN_FUZZERS_MODE is: %s', config.run_fuzzers_mode)
-  if config.run_fuzzers_mode == 'batch':
-    return BatchFuzzTargetRunner(config)
-  return CiFuzzTargetRunner(config)
-
-
-def run_fuzzers(config):  # pylint: disable=too-many-locals
-  """Runs fuzzers for a specific OSS-Fuzz project.
-
-  Args:
-    config: A RunFuzzTargetsConfig.
-
-  Returns:
-    A RunFuzzersResult enum value indicating what happened during fuzzing.
-  """
-  fuzz_target_runner = get_fuzz_target_runner(config)
-  if not fuzz_target_runner.initialize():
-    # We didn't fuzz at all because of internal (CIFuzz) errors. And we didn't
-    # find any bugs.
-    return RunFuzzersResult.ERROR
-
-  if not fuzz_target_runner.run_fuzz_targets():
-    # We fuzzed successfully, but didn't find any bugs (in the fuzz target).
-    return RunFuzzersResult.NO_BUG_FOUND
-
-  # We fuzzed successfully and found bug(s) in the fuzz targets.
-  return RunFuzzersResult.BUG_FOUND
diff --git a/infra/cifuzz/run_fuzzers_entrypoint.py b/infra/cifuzz/run_fuzzers_entrypoint.py
deleted file mode 100644
index 46e208d..0000000
--- a/infra/cifuzz/run_fuzzers_entrypoint.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Runs a specific OSS-Fuzz project's fuzzers for CI tools."""
-import logging
-import sys
-
-import config_utils
-import docker
-import run_fuzzers
-
-# pylint: disable=c-extension-no-member
-# pylint gets confused because of the relative import of cifuzz.
-
-logging.basicConfig(
-    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
-    level=logging.DEBUG)
-
-
-def delete_unneeded_docker_images(config):
-  """Deletes unneeded docker images if running in an environment with low
-  disk space."""
-  if not config.low_disk_space:
-    return
-  logging.info('Deleting builder docker images to save disk space.')
-  project_image = docker.get_project_image_name(config.project_name)
-  images = [
-      project_image,
-      docker.BASE_RUNNER_TAG,
-      docker.MSAN_LIBS_BUILDER_TAG,
-  ]
-  docker.delete_images(images)
-
-
-def main():
-  """Runs OSS-Fuzz project's fuzzers for CI tools.
-  This is the entrypoint for the run_fuzzers github action.
-  This action can be added to any OSS-Fuzz project's workflow that uses Github.
-
-  NOTE: libFuzzer binaries must be located in the ${GITHUB_WORKSPACE}/out
-  directory in order for this action to be used. This action will only fuzz the
-  binaries that are located in that directory. It is recommended that you add
-  the build_fuzzers action preceding this one.
-
-  NOTE: Any crash report will be in the filepath:
-  ${GITHUB_WORKSPACE}/out/testcase
-  This can be used in parallel with the upload-artifact action to surface the
-  logs.
-
-  Required environment variables:
-    FUZZ_SECONDS: The length of time in seconds that fuzzers are to be run.
-    GITHUB_WORKSPACE: The shared volume directory where input artifacts are.
-    DRY_RUN: If true, no failures will surface.
-    OSS_FUZZ_PROJECT_NAME: The name of the relevant OSS-Fuzz project.
-    SANITIZER: The sanitizer to use when running fuzzers.
-
-  Returns:
-    0 on success or 1 on failure.
-  """
-  config = config_utils.RunFuzzersConfig()
-  # The default return code when an error occurs.
-  returncode = 1
-  if config.dry_run:
-    # Sets the default return code on error to success.
-    returncode = 0
-
-  if not config.workspace:
-    logging.error('This script needs to be run within Github actions.')
-    return returncode
-
-  delete_unneeded_docker_images(config)
-  # Run the specified project's fuzzers from the build.
-  result = run_fuzzers.run_fuzzers(config)
-  if result == run_fuzzers.RunFuzzersResult.ERROR:
-    logging.error('Error occurred while running in workspace %s.',
-                  config.workspace)
-    return returncode
-  if result == run_fuzzers.RunFuzzersResult.BUG_FOUND:
-    logging.info('Bug found.')
-    if not config.dry_run:
-      # Return 2 when a bug was found by a fuzzer causing the CI to fail.
-      return 2
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/infra/cifuzz/run_fuzzers_test.py b/infra/cifuzz/run_fuzzers_test.py
deleted file mode 100644
index b265990..0000000
--- a/infra/cifuzz/run_fuzzers_test.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for running fuzzers."""
-import os
-import sys
-import shutil
-import tempfile
-import unittest
-from unittest import mock
-
-import parameterized
-from pyfakefs import fake_filesystem_unittest
-
-import config_utils
-import fuzz_target
-import run_fuzzers
-
-# pylint: disable=wrong-import-position
-INFRA_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-sys.path.append(INFRA_DIR)
-
-import test_helpers
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-# Location of files used for testing.
-TEST_DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                              'test_data')
-
-MEMORY_FUZZER_DIR = os.path.join(TEST_DATA_PATH, 'memory')
-MEMORY_FUZZER = 'curl_fuzzer_memory'
-
-UNDEFINED_FUZZER_DIR = os.path.join(TEST_DATA_PATH, 'undefined')
-UNDEFINED_FUZZER = 'curl_fuzzer_undefined'
-
-FUZZ_SECONDS = 10
-
-
-def _create_config(**kwargs):
-  """Creates a config object and then sets every attribute that is a key in
-  |kwargs| to the corresponding value. Asserts that each key in |kwargs| is an
-  attribute of Config."""
-  with mock.patch('os.path.basename', return_value=None), mock.patch(
-      'config_utils.get_project_src_path',
-      return_value=None), mock.patch('config_utils._is_dry_run',
-                                     return_value=True):
-    config = config_utils.RunFuzzersConfig()
-
-  for key, value in kwargs.items():
-    assert hasattr(config, key), 'Config doesn\'t have attribute: ' + key
-    setattr(config, key, value)
-  return config
-
-
-class RunFuzzerIntegrationTestMixin:  # pylint: disable=too-few-public-methods,invalid-name
-  """Mixin for integration test classes that runbuild_fuzzers on builds of a
-  specific sanitizer."""
-  # These must be defined by children.
-  FUZZER_DIR = None
-  FUZZER = None
-
-  def _test_run_with_sanitizer(self, fuzzer_dir, sanitizer):
-    """Calls run_fuzzers on fuzzer_dir and |sanitizer| and asserts
-    the run succeeded and that no bug was found."""
-    with test_helpers.temp_dir_copy(fuzzer_dir) as fuzzer_dir_copy:
-      config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                              workspace=fuzzer_dir_copy,
-                              project_name='curl',
-                              sanitizer=sanitizer)
-      result = run_fuzzers.run_fuzzers(config)
-    self.assertEqual(result, run_fuzzers.RunFuzzersResult.NO_BUG_FOUND)
-
-
-class RunMemoryFuzzerIntegrationTest(RunFuzzerIntegrationTestMixin,
-                                     unittest.TestCase):
-  """Integration test for build_fuzzers with an MSAN build."""
-  FUZZER_DIR = MEMORY_FUZZER_DIR
-  FUZZER = MEMORY_FUZZER
-
-  @unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                   'INTEGRATION_TESTS=1 not set')
-  def test_run_with_memory_sanitizer(self):
-    """Tests run_fuzzers with a valid MSAN build."""
-    self._test_run_with_sanitizer(self.FUZZER_DIR, 'memory')
-
-
-class RunUndefinedFuzzerIntegrationTest(RunFuzzerIntegrationTestMixin,
-                                        unittest.TestCase):
-  """Integration test for build_fuzzers with an UBSAN build."""
-  FUZZER_DIR = UNDEFINED_FUZZER_DIR
-  FUZZER = UNDEFINED_FUZZER
-
-  @unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                   'INTEGRATION_TESTS=1 not set')
-  def test_run_with_undefined_sanitizer(self):
-    """Tests run_fuzzers with a valid UBSAN build."""
-    self._test_run_with_sanitizer(self.FUZZER_DIR, 'undefined')
-
-
-class BaseFuzzTargetRunnerTest(unittest.TestCase):
-  """Tests BaseFuzzTargetRunner."""
-
-  def _create_runner(self, **kwargs):  # pylint: disable=no-self-use
-    defaults = {'fuzz_seconds': FUZZ_SECONDS, 'project_name': EXAMPLE_PROJECT}
-    for default_key, default_value in defaults.items():
-      if default_key not in kwargs:
-        kwargs[default_key] = default_value
-
-    config = _create_config(**kwargs)
-    return run_fuzzers.BaseFuzzTargetRunner(config)
-
-  def _test_initialize_fail(self, expected_error_args, **create_runner_kwargs):
-    with mock.patch('logging.error') as mocked_error:
-      runner = self._create_runner(**create_runner_kwargs)
-      self.assertFalse(runner.initialize())
-      mocked_error.assert_called_with(*expected_error_args)
-
-  @parameterized.parameterized.expand([(0,), (None,), (-1,)])
-  def test_initialize_invalid_fuzz_seconds(self, fuzz_seconds):
-    """Tests initialize fails with an invalid fuzz seconds."""
-    expected_error_args = ('Fuzz_seconds argument must be greater than 1, '
-                           'but was: %s.', fuzz_seconds)
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      os.mkdir(out_path)
-      with mock.patch('utils.get_fuzz_targets') as mocked_get_fuzz_targets:
-        mocked_get_fuzz_targets.return_value = [
-            os.path.join(out_path, 'fuzz_target')
-        ]
-        self._test_initialize_fail(expected_error_args,
-                                   fuzz_seconds=fuzz_seconds,
-                                   workspace=tmp_dir)
-
-  def test_initialize_no_out_dir(self):
-    """Tests initialize fails with no out dir."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      expected_error_args = ('Out directory: %s does not exist.', out_path)
-      self._test_initialize_fail(expected_error_args, workspace=tmp_dir)
-
-  def test_initialize_nonempty_artifacts(self):
-    """Tests initialize with a file artifacts path."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      os.mkdir(out_path)
-      artifacts_path = os.path.join(out_path, 'artifacts')
-      with open(artifacts_path, 'w') as artifacts_handle:
-        artifacts_handle.write('fake')
-      expected_error_args = (
-          'Artifacts path: %s exists and is not an empty directory.',
-          artifacts_path)
-      self._test_initialize_fail(expected_error_args, workspace=tmp_dir)
-
-  def test_initialize_bad_artifacts(self):
-    """Tests initialize with a non-empty artifacts path."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      artifacts_path = os.path.join(out_path, 'artifacts')
-      os.makedirs(artifacts_path)
-      artifact_path = os.path.join(artifacts_path, 'artifact')
-      with open(artifact_path, 'w') as artifact_handle:
-        artifact_handle.write('fake')
-      expected_error_args = (
-          'Artifacts path: %s exists and is not an empty directory.',
-          artifacts_path)
-      self._test_initialize_fail(expected_error_args, workspace=tmp_dir)
-
-  @mock.patch('utils.get_fuzz_targets')
-  @mock.patch('logging.error')
-  def test_initialize_empty_artifacts(self, mocked_log_error,
-                                      mocked_get_fuzz_targets):
-    """Tests initialize with an empty artifacts dir."""
-    mocked_get_fuzz_targets.return_value = ['fuzz-target']
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      artifacts_path = os.path.join(out_path, 'artifacts')
-      os.makedirs(artifacts_path)
-      runner = self._create_runner(workspace=tmp_dir)
-      self.assertTrue(runner.initialize())
-      mocked_log_error.assert_not_called()
-      self.assertTrue(os.path.isdir(artifacts_path))
-
-  @mock.patch('utils.get_fuzz_targets')
-  @mock.patch('logging.error')
-  def test_initialize_no_artifacts(self, mocked_log_error,
-                                   mocked_get_fuzz_targets):
-    """Tests initialize with no artifacts dir (the expected setting)."""
-    mocked_get_fuzz_targets.return_value = ['fuzz-target']
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      os.makedirs(out_path)
-      runner = self._create_runner(workspace=tmp_dir)
-      self.assertTrue(runner.initialize())
-      mocked_log_error.assert_not_called()
-      self.assertTrue(os.path.isdir(os.path.join(out_path, 'artifacts')))
-
-  def test_initialize_no_fuzz_targets(self):
-    """Tests initialize with no fuzz targets."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      os.makedirs(out_path)
-      expected_error_args = ('No fuzz targets were found in out directory: %s.',
-                             out_path)
-      self._test_initialize_fail(expected_error_args, workspace=tmp_dir)
-
-  def test_get_fuzz_target_artifact(self):
-    """Tests that get_fuzz_target_artifact works as intended."""
-    runner = self._create_runner()
-    artifacts_dir = 'artifacts-dir'
-    runner.artifacts_dir = artifacts_dir
-    artifact_name = 'artifact-name'
-    target = mock.MagicMock()
-    target_name = 'target_name'
-    target.target_name = target_name
-    fuzz_target_artifact = runner.get_fuzz_target_artifact(
-        target, artifact_name)
-    expected_fuzz_target_artifact = (
-        'artifacts-dir/target_name-address-artifact-name')
-    self.assertEqual(fuzz_target_artifact, expected_fuzz_target_artifact)
-
-
-class CiFuzzTargetRunnerTest(fake_filesystem_unittest.TestCase):
-  """Tests that CiFuzzTargetRunner works as intended."""
-
-  def setUp(self):
-    self.setUpPyfakefs()
-
-  @mock.patch('utils.get_fuzz_targets')
-  @mock.patch('run_fuzzers.CiFuzzTargetRunner.run_fuzz_target')
-  @mock.patch('run_fuzzers.CiFuzzTargetRunner.create_fuzz_target_obj')
-  def test_run_fuzz_targets_quits(self, mocked_create_fuzz_target_obj,
-                                  mocked_run_fuzz_target,
-                                  mocked_get_fuzz_targets):
-    """Tests that run_fuzz_targets quits on the first crash it finds."""
-    workspace = 'workspace'
-    out_path = os.path.join(workspace, 'out')
-    self.fs.create_dir(out_path)
-    config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                            workspace=workspace,
-                            project_name=EXAMPLE_PROJECT)
-    runner = run_fuzzers.CiFuzzTargetRunner(config)
-
-    mocked_get_fuzz_targets.return_value = ['target1', 'target2']
-    runner.initialize()
-    testcase = os.path.join(workspace, 'testcase')
-    self.fs.create_file(testcase)
-    stacktrace = b'stacktrace'
-    mocked_run_fuzz_target.return_value = fuzz_target.FuzzResult(
-        testcase, stacktrace)
-    magic_mock = mock.MagicMock()
-    magic_mock.target_name = 'target1'
-    mocked_create_fuzz_target_obj.return_value = magic_mock
-    self.assertTrue(runner.run_fuzz_targets())
-    self.assertIn('target1-address-testcase', os.listdir(runner.artifacts_dir))
-    self.assertEqual(mocked_run_fuzz_target.call_count, 1)
-
-
-class BatchFuzzTargetRunnerTest(fake_filesystem_unittest.TestCase):
-  """Tests that CiFuzzTargetRunner works as intended."""
-
-  def setUp(self):
-    self.setUpPyfakefs()
-
-  @mock.patch('utils.get_fuzz_targets')
-  @mock.patch('run_fuzzers.BatchFuzzTargetRunner.run_fuzz_target')
-  @mock.patch('run_fuzzers.BatchFuzzTargetRunner.create_fuzz_target_obj')
-  def test_run_fuzz_targets_quits(self, mocked_create_fuzz_target_obj,
-                                  mocked_run_fuzz_target,
-                                  mocked_get_fuzz_targets):
-    """Tests that run_fuzz_targets doesn't quit on the first crash it finds."""
-    workspace = 'workspace'
-    out_path = os.path.join(workspace, 'out')
-    self.fs.create_dir(out_path)
-    config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                            workspace=workspace,
-                            project_name=EXAMPLE_PROJECT)
-    runner = run_fuzzers.BatchFuzzTargetRunner(config)
-
-    mocked_get_fuzz_targets.return_value = ['target1', 'target2']
-    runner.initialize()
-    testcase1 = os.path.join(workspace, 'testcase-aaa')
-    testcase2 = os.path.join(workspace, 'testcase-bbb')
-    self.fs.create_file(testcase1)
-    self.fs.create_file(testcase2)
-    stacktrace = b'stacktrace'
-    call_count = 0
-
-    def mock_run_fuzz_target(_):
-      nonlocal call_count
-      if call_count == 0:
-        testcase = testcase1
-      elif call_count == 1:
-        testcase = testcase2
-      assert call_count != 2
-      call_count += 1
-      return fuzz_target.FuzzResult(testcase, stacktrace)
-
-    mocked_run_fuzz_target.side_effect = mock_run_fuzz_target
-    magic_mock = mock.MagicMock()
-    magic_mock.target_name = 'target1'
-    mocked_create_fuzz_target_obj.return_value = magic_mock
-    self.assertTrue(runner.run_fuzz_targets())
-    self.assertIn('target1-address-testcase-aaa',
-                  os.listdir(runner.artifacts_dir))
-    self.assertEqual(mocked_run_fuzz_target.call_count, 2)
-
-
-class RunAddressFuzzersIntegrationTest(RunFuzzerIntegrationTestMixin,
-                                       unittest.TestCase):
-  """Integration tests for build_fuzzers with an ASAN build."""
-
-  BUILD_DIR_NAME = 'cifuzz-latest-build'
-
-  @unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                   'INTEGRATION_TESTS=1 not set')
-  def test_new_bug_found(self):
-    """Tests run_fuzzers with a valid ASAN build."""
-    # Set the first return value to True, then the second to False to
-    # emulate a bug existing in the current PR but not on the downloaded
-    # OSS-Fuzz build.
-    with mock.patch('fuzz_target.FuzzTarget.is_reproducible',
-                    side_effect=[True, False]):
-      with tempfile.TemporaryDirectory() as tmp_dir:
-        workspace = os.path.join(tmp_dir, 'workspace')
-        shutil.copytree(TEST_DATA_PATH, workspace)
-        config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                                workspace=workspace,
-                                project_name=EXAMPLE_PROJECT)
-        result = run_fuzzers.run_fuzzers(config)
-        self.assertEqual(result, run_fuzzers.RunFuzzersResult.BUG_FOUND)
-        build_dir = os.path.join(workspace, 'out', self.BUILD_DIR_NAME)
-        self.assertNotEqual(0, len(os.listdir(build_dir)))
-
-  @unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                   'INTEGRATION_TESTS=1 not set')
-  @mock.patch('fuzz_target.FuzzTarget.is_reproducible',
-              side_effect=[True, True])
-  def test_old_bug_found(self, _):
-    """Tests run_fuzzers with a bug found in OSS-Fuzz before."""
-    config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                            workspace=TEST_DATA_PATH,
-                            project_name=EXAMPLE_PROJECT)
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      workspace = os.path.join(tmp_dir, 'workspace')
-      shutil.copytree(TEST_DATA_PATH, workspace)
-      config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                              workspace=TEST_DATA_PATH,
-                              project_name=EXAMPLE_PROJECT)
-      result = run_fuzzers.run_fuzzers(config)
-      self.assertEqual(result, run_fuzzers.RunFuzzersResult.NO_BUG_FOUND)
-      build_dir = os.path.join(TEST_DATA_PATH, 'out', self.BUILD_DIR_NAME)
-      self.assertTrue(os.path.exists(build_dir))
-      self.assertNotEqual(0, len(os.listdir(build_dir)))
-
-  def test_invalid_build(self):
-    """Tests run_fuzzers with an invalid ASAN build."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out_path = os.path.join(tmp_dir, 'out')
-      os.mkdir(out_path)
-      config = _create_config(fuzz_seconds=FUZZ_SECONDS,
-                              workspace=tmp_dir,
-                              project_name=EXAMPLE_PROJECT)
-      result = run_fuzzers.run_fuzzers(config)
-    self.assertEqual(result, run_fuzzers.RunFuzzersResult.ERROR)
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/stack_parser.py b/infra/cifuzz/stack_parser.py
deleted file mode 100644
index 69c44bc..0000000
--- a/infra/cifuzz/stack_parser.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Module for parsing stacks from fuzz targets."""
-
-import logging
-
-# From clusterfuzz: src/python/crash_analysis/crash_analyzer.py
-# Used to get the beginning of the stacktrace.
-STACKTRACE_TOOL_MARKERS = [
-    b'AddressSanitizer',
-    b'ASAN:',
-    b'CFI: Most likely a control flow integrity violation;',
-    b'ERROR: libFuzzer',
-    b'KASAN:',
-    b'LeakSanitizer',
-    b'MemorySanitizer',
-    b'ThreadSanitizer',
-    b'UndefinedBehaviorSanitizer',
-    b'UndefinedSanitizer',
-]
-
-# From clusterfuzz: src/python/crash_analysis/crash_analyzer.py
-# Used to get the end of the stacktrace.
-STACKTRACE_END_MARKERS = [
-    b'ABORTING',
-    b'END MEMORY TOOL REPORT',
-    b'End of process memory map.',
-    b'END_KASAN_OUTPUT',
-    b'SUMMARY:',
-    b'Shadow byte and word',
-    b'[end of stack trace]',
-    b'\nExiting',
-    b'minidump has been written',
-]
-
-
-def parse_fuzzer_output(fuzzer_output, parsed_output_file_path):
-  """Parses the fuzzer output from a fuzz target binary.
-
-  Args:
-    fuzzer_output: A fuzz target binary output string to be parsed.
-    parsed_output_file_path: The location to store the parsed output.
-  """
-  # Get index of key file points.
-  begin_stack = None
-  for marker in STACKTRACE_TOOL_MARKERS:
-    marker_index = fuzzer_output.find(marker)
-    if marker_index != -1:
-      begin_stack = marker_index
-      break
-
-  if begin_stack is None:
-    logging.error(
-        b'Could not find a begin stack marker (%s) in fuzzer output:\n%s',
-        STACKTRACE_TOOL_MARKERS, fuzzer_output)
-    return
-
-  end_stack = None
-  for marker in STACKTRACE_END_MARKERS:
-    marker_index = fuzzer_output.find(marker)
-    if marker_index != -1:
-      end_stack = marker_index + len(marker)
-      break
-
-  if end_stack is None:
-    logging.error(
-        b'Could not find an end stack marker (%s) in fuzzer output:\n%s',
-        STACKTRACE_END_MARKERS, fuzzer_output)
-    return
-
-  summary_str = fuzzer_output[begin_stack:end_stack]
-
-  # Write sections of fuzzer output to specific files.
-  with open(parsed_output_file_path, 'ab') as summary_handle:
-    summary_handle.write(summary_str)
diff --git a/infra/cifuzz/stack_parser_test.py b/infra/cifuzz/stack_parser_test.py
deleted file mode 100644
index faf601f..0000000
--- a/infra/cifuzz/stack_parser_test.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for stack_parser."""
-import os
-import unittest
-from unittest import mock
-
-import parameterized
-from pyfakefs import fake_filesystem_unittest
-
-import stack_parser
-
-# NOTE: This integration test relies on
-# https://github.com/google/oss-fuzz/tree/master/projects/example project.
-EXAMPLE_PROJECT = 'example'
-
-# Location of data used for testing.
-TEST_DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                              'test_data')
-
-
-class ParseOutputTest(fake_filesystem_unittest.TestCase):
-  """Tests parse_fuzzer_output."""
-
-  def setUp(self):
-    self.setUpPyfakefs()
-    self.maxDiff = None  # pylint: disable=invalid-name
-
-  @parameterized.parameterized.expand([('example_crash_fuzzer_output.txt',
-                                        'example_crash_fuzzer_bug_summary.txt'),
-                                       ('msan_crash_fuzzer_output.txt',
-                                        'msan_crash_fuzzer_bug_summary.txt')])
-  def test_parse_valid_output(self, fuzzer_output_file, bug_summary_file):
-    """Checks that the parse fuzzer output can correctly parse output."""
-    # Read the fuzzer output from disk.
-    fuzzer_output_path = os.path.join(TEST_DATA_PATH, fuzzer_output_file)
-    self.fs.add_real_file(fuzzer_output_path)
-    with open(fuzzer_output_path, 'rb') as fuzzer_output_handle:
-      fuzzer_output = fuzzer_output_handle.read()
-    bug_summary_path = '/bug-summary.txt'
-    with mock.patch('logging.info') as mocked_info:
-      stack_parser.parse_fuzzer_output(fuzzer_output, bug_summary_path)
-      mocked_info.assert_not_called()
-
-    with open(bug_summary_path) as bug_summary_handle:
-      bug_summary = bug_summary_handle.read()
-
-    # Compare the bug to the expected one.
-    expected_bug_summary_path = os.path.join(TEST_DATA_PATH, bug_summary_file)
-    self.fs.add_real_file(expected_bug_summary_path)
-    with open(expected_bug_summary_path) as expected_bug_summary_handle:
-      expected_bug_summary = expected_bug_summary_handle.read()
-
-    self.assertEqual(expected_bug_summary, bug_summary)
-
-  def test_parse_invalid_output(self):
-    """Checks that no files are created when an invalid input was given."""
-    artifact_path = '/bug-summary.txt'
-    with mock.patch('logging.error') as mocked_error:
-      stack_parser.parse_fuzzer_output(b'not a valid output_string',
-                                       artifact_path)
-      assert mocked_error.call_count
-    self.assertFalse(os.path.exists(artifact_path))
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/infra/cifuzz/test_data/example_crash_fuzzer_bug_summary.txt b/infra/cifuzz/test_data/example_crash_fuzzer_bug_summary.txt
deleted file mode 100644
index 8caebad..0000000
--- a/infra/cifuzz/test_data/example_crash_fuzzer_bug_summary.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-AddressSanitizer: heap-buffer-overflow on address 0x62500001b530 at pc 0x00000052138a bp 0x7ffe62db2c10 sp 0x7ffe62db23d8
-READ of size 52 at 0x62500001b530 thread T0
-SCARINESS: 26 (multi-byte-read-heap-buffer-overflow)
-    #0 0x521389 in __asan_memcpy /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:22:3
-    #1 0x567590 in yr_object_set_string /src/yara/libyara/object.c:1122:5
-    #2 0x5afced in dex_parse /src/yara/libyara/modules/dex/dex.c:781:5
-    #3 0x5b4a8b in dex__load /src/yara/libyara/modules/dex/dex.c:1218:7
-    #4 0x56537c in yr_modules_load /src/yara/libyara/modules.c:179:16
-    #5 0x5d6583 in yr_execute_code /src/yara/libyara/exec.c:1276:18
-    #6 0x56f5c0 in yr_scanner_scan_mem_blocks /src/yara/libyara/scanner.c:444:3
-    #7 0x56bf23 in yr_rules_scan_mem_blocks /src/yara/libyara/rules.c:235:12
-    #8 0x56c182 in yr_rules_scan_mem /src/yara/libyara/rules.c:285:10
-    #9 0x5548d2 in LLVMFuzzerTestOneInput /src/yara/tests/oss-fuzz/dex_fuzzer.cc:40:3
-    #10 0x45a3b1 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:556:15
-    #11 0x459ad5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:470:3
-    #12 0x45be77 in fuzzer::Fuzzer::MutateAndTestOne() /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:698:19
-    #13 0x45cc05 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:830:5
-    #14 0x44ac88 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:824:6
-    #15 0x474ab2 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:19:10
-    #16 0x7f4409b7a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
-    #17 0x41e348 in _start (out/dex_fuzzer+0x41e348)
-
-0x62500001b530 is located 0 bytes to the right of 9264-byte region [0x625000019100,0x62500001b530)
-allocated by thread T0 here:
-    #0 0x521f4d in malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
-    #1 0x4331b7 in operator new(unsigned long) (out/dex_fuzzer+0x4331b7)
-    #2 0x459ad5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:470:3
-    #3 0x45be77 in fuzzer::Fuzzer::MutateAndTestOne() /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:698:19
-    #4 0x45cc05 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:830:5
-    #5 0x44ac88 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:824:6
-    #6 0x474ab2 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:19:10
-    #7 0x7f4409b7a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
-
-SUMMARY: AddressSanitizer: heap-buffer-overflow /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:22:3 in __asan_memcpy
-Shadow bytes around the buggy address:
-  0x0c4a7fffb650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-=>0x0c4a7fffb6a0: 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-
-Shadow byte legend (one shadow byte represents 8 application bytes):
-  Addressable:           00
-  Partially addressable: 01 02 03 04 05 06 07
-  Heap left redzone:       fa
-  Freed heap region:       fd
-  Stack left redzone:      f1
-  Stack mid redzone:       f2
-  Stack right redzone:     f3
-  Stack after return:      f5
-  Stack use after scope:   f8
-  Global redzone:          f9
-  Global init order:       f6
-  Poisoned by user:        f7
-  Container overflow:      fc
-  Array cookie:            ac
-  Intra object redzone:    bb
-  ASan internal:           fe
-  Left alloca redzone:     ca
-  Right alloca redzone:    cb
-  Shadow gap:              cc
-==12==ABORTING
\ No newline at end of file
diff --git a/infra/cifuzz/test_data/example_crash_fuzzer_output.txt b/infra/cifuzz/test_data/example_crash_fuzzer_output.txt
deleted file mode 100644
index d316f5f..0000000
--- a/infra/cifuzz/test_data/example_crash_fuzzer_output.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-2020-02-05 17:50:20,470 - root - INFO - Fuzzer dex_fuzzer, detected error: INFO: Seed: 1337
-INFO: Loaded 1 modules   (8322 inline 8-bit counters): 8322 [0x8eaaf0, 0x8ecb72),
-INFO: Loaded 1 PC tables (8322 PCs): 8322 [0x661bd8,0x6823f8),
-INFO:        7 files found in /tmp/dex_fuzzer_corpus
-INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 46328 bytes
-INFO: seed corpus: files: 7 min: 1264b max: 46328b total: 136996b rss: 36Mb
-#8	INITED cov: 265 ft: 523 corp: 7/133Kb exec/s: 0 rss: 43Mb
-#10	NEW    cov: 266 ft: 538 corp: 8/147Kb lim: 46328 exec/s: 0 rss: 44Mb L: 13929/46328 MS: 2 ChangeBit-InsertByte-
-#12	NEW    cov: 270 ft: 550 corp: 9/192Kb lim: 46328 exec/s: 0 rss: 44Mb L: 46328/46328 MS: 2 ShuffleBytes-CrossOver-
-#14	NEW    cov: 270 ft: 557 corp: 10/201Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9103/46328 MS: 2 ChangeASCIIInt-EraseBytes-
-#15	NEW    cov: 270 ft: 565 corp: 11/218Kb lim: 46328 exec/s: 0 rss: 45Mb L: 16991/46328 MS: 1 InsertRepeatedBytes-
-#21	NEW    cov: 272 ft: 568 corp: 12/227Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9132/46328 MS: 1 InsertRepeatedBytes-
-#25	NEW    cov: 275 ft: 575 corp: 13/236Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9262/46328 MS: 4 ChangeBinInt-InsertByte-ChangeBit-EraseBytes-
-#26	NEW    cov: 280 ft: 602 corp: 14/244Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9133/46328 MS: 1 InsertByte-
-#44	NEW    cov: 280 ft: 609 corp: 15/254Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9290/46328 MS: 3 ChangeByte-InsertRepeatedBytes-InsertRepeatedBytes-
-#60	NEW    cov: 280 ft: 611 corp: 16/263Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9291/46328 MS: 1 InsertByte-
-#67	NEW    cov: 280 ft: 614 corp: 17/272Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9074/46328 MS: 2 CopyPart-EraseBytes-
-#68	NEW    cov: 280 ft: 617 corp: 18/305Kb lim: 46328 exec/s: 0 rss: 45Mb L: 34216/46328 MS: 1 InsertRepeatedBytes-
-#70	NEW    cov: 280 ft: 618 corp: 19/321Kb lim: 46328 exec/s: 0 rss: 45Mb L: 16543/46328 MS: 2 ChangeASCIIInt-CopyPart-
-#71	NEW    cov: 280 ft: 619 corp: 20/336Kb lim: 46328 exec/s: 0 rss: 45Mb L: 14936/46328 MS: 1 CopyPart-
-#72	NEW    cov: 280 ft: 623 corp: 21/345Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9255/46328 MS: 1 EraseBytes-
-#79	NEW    cov: 280 ft: 628 corp: 22/354Kb lim: 46328 exec/s: 0 rss: 45Mb L: 9263/46328 MS: 2 CopyPart-CMP- DE: "\x00\x00\x00\x00\x00\x00$'"-
-#80	NEW    cov: 280 ft: 632 corp: 23/363Kb lim: 46328 exec/s: 80 rss: 45Mb L: 9312/46328 MS: 1 InsertRepeatedBytes-
-=================================================================
-==12==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62500001b530 at pc 0x00000052138a bp 0x7ffe62db2c10 sp 0x7ffe62db23d8
-READ of size 52 at 0x62500001b530 thread T0
-SCARINESS: 26 (multi-byte-read-heap-buffer-overflow)
-    #0 0x521389 in __asan_memcpy /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:22:3
-    #1 0x567590 in yr_object_set_string /src/yara/libyara/object.c:1122:5
-    #2 0x5afced in dex_parse /src/yara/libyara/modules/dex/dex.c:781:5
-    #3 0x5b4a8b in dex__load /src/yara/libyara/modules/dex/dex.c:1218:7
-    #4 0x56537c in yr_modules_load /src/yara/libyara/modules.c:179:16
-    #5 0x5d6583 in yr_execute_code /src/yara/libyara/exec.c:1276:18
-    #6 0x56f5c0 in yr_scanner_scan_mem_blocks /src/yara/libyara/scanner.c:444:3
-    #7 0x56bf23 in yr_rules_scan_mem_blocks /src/yara/libyara/rules.c:235:12
-    #8 0x56c182 in yr_rules_scan_mem /src/yara/libyara/rules.c:285:10
-    #9 0x5548d2 in LLVMFuzzerTestOneInput /src/yara/tests/oss-fuzz/dex_fuzzer.cc:40:3
-    #10 0x45a3b1 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:556:15
-    #11 0x459ad5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:470:3
-    #12 0x45be77 in fuzzer::Fuzzer::MutateAndTestOne() /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:698:19
-    #13 0x45cc05 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:830:5
-    #14 0x44ac88 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:824:6
-    #15 0x474ab2 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:19:10
-    #16 0x7f4409b7a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
-    #17 0x41e348 in _start (out/dex_fuzzer+0x41e348)
-
-0x62500001b530 is located 0 bytes to the right of 9264-byte region [0x625000019100,0x62500001b530)
-allocated by thread T0 here:
-    #0 0x521f4d in malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
-    #1 0x4331b7 in operator new(unsigned long) (out/dex_fuzzer+0x4331b7)
-    #2 0x459ad5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:470:3
-    #3 0x45be77 in fuzzer::Fuzzer::MutateAndTestOne() /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:698:19
-    #4 0x45cc05 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:830:5
-    #5 0x44ac88 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:824:6
-    #6 0x474ab2 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:19:10
-    #7 0x7f4409b7a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
-
-SUMMARY: AddressSanitizer: heap-buffer-overflow /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:22:3 in __asan_memcpy
-Shadow bytes around the buggy address:
-  0x0c4a7fffb650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-  0x0c4a7fffb690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-=>0x0c4a7fffb6a0: 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-  0x0c4a7fffb6f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
-
-Shadow byte legend (one shadow byte represents 8 application bytes):
-  Addressable:           00
-  Partially addressable: 01 02 03 04 05 06 07
-  Heap left redzone:       fa
-  Freed heap region:       fd
-  Stack left redzone:      f1
-  Stack mid redzone:       f2
-  Stack right redzone:     f3
-  Stack after return:      f5
-  Stack use after scope:   f8
-  Global redzone:          f9
-  Global init order:       f6
-  Poisoned by user:        f7
-  Container overflow:      fc
-  Array cookie:            ac
-  Intra object redzone:    bb
-  ASan internal:           fe
-  Left alloca redzone:     ca
-  Right alloca redzone:    cb
-  Shadow gap:              cc
-==12==ABORTING
-MS: 1 InsertByte-; base unit: e91e5af87998bbf9aa64218be0652d64ba4ea89d
-artifact_prefix='./'; Test unit written to ./crash-ad6700613693ef977ff3a8c8f4dae239c3dde6f5
diff --git a/infra/cifuzz/test_data/example_curl_cov.json b/infra/cifuzz/test_data/example_curl_cov.json
deleted file mode 100644
index 0936102..0000000
--- a/infra/cifuzz/test_data/example_curl_cov.json
+++ /dev/null
@@ -1 +0,0 @@
-{"report_summary_path": "gs://oss-fuzz-coverage/curl/reports/20200226/linux/summary.json", "html_report_url": "https://storage.googleapis.com/oss-fuzz-coverage/curl/reports/20200226/linux/index.html", "report_date": "20200226", "fuzzer_stats_dir": "gs://oss-fuzz-coverage/curl/fuzzer_stats/20200226"}
\ No newline at end of file
diff --git a/infra/cifuzz/test_data/example_curl_file_list.json b/infra/cifuzz/test_data/example_curl_file_list.json
deleted file mode 100644
index 0ed1965..0000000
--- a/infra/cifuzz/test_data/example_curl_file_list.json
+++ /dev/null
@@ -1 +0,0 @@
-["lib/asyn-thread.c", "lib/base64.c", "lib/conncache.c", "lib/connect.c", "lib/content_encoding.c", "lib/cookie.c", "lib/curl_addrinfo.c", "lib/curl_ctype.c", "lib/curl_endian.c", "lib/curl_fnmatch.c", "lib/curl_gethostname.c", "lib/curl_memrchr.c", "lib/curl_ntlm_core.c", "lib/curl_ntlm_wb.c", "lib/curl_range.c", "lib/curl_sasl.c", "lib/curl_threads.c", "lib/dict.c", "lib/dotdot.c", "lib/easy.c", "lib/escape.c", "lib/file.c", "lib/fileinfo.c", "lib/ftp.c", "lib/ftplistparser.c", "lib/getenv.c", "lib/getinfo.c", "lib/gopher.c", "lib/hash.c", "lib/hmac.c", "lib/hostasyn.c", "lib/hostip.c", "lib/hostip6.c", "lib/http.c", "lib/http2.c", "lib/http_chunks.c", "lib/http_digest.c", "lib/http_ntlm.c", "lib/http_proxy.c", "lib/if2ip.c", "lib/imap.c", "lib/llist.c", "lib/md4.c", "lib/md5.c", "lib/memdebug.c", "lib/mime.c", "lib/mprintf.c", "lib/multi.c", "lib/nonblock.c", "lib/parsedate.c", "lib/pingpong.c", "lib/pop3.c", "lib/progress.c", "lib/rand.c", "lib/rename.c", "lib/rtsp.c", "lib/select.c", "lib/sendf.c", "lib/setopt.c", "lib/share.c", "lib/sigpipe.h", "lib/slist.c", "lib/smb.c", "lib/smtp.c", "lib/speedcheck.c", "lib/splay.c", "lib/strcase.c", "lib/strdup.c", "lib/strerror.c", "lib/strtoofft.c", "lib/tftp.c", "lib/timeval.c", "lib/transfer.c", "lib/url.c", "lib/urlapi.c", "lib/vauth/cleartext.c", "lib/vauth/cram.c", "lib/vauth/digest.c", "lib/vauth/ntlm.c", "lib/version.c", "lib/vtls/openssl.c", "lib/vtls/vtls.c", "lib/warnless.c", "lib/wildcard.c"]
\ No newline at end of file
diff --git a/infra/cifuzz/test_data/example_curl_fuzzer_cov.json b/infra/cifuzz/test_data/example_curl_fuzzer_cov.json
deleted file mode 100644
index 6f8c249..0000000
--- a/infra/cifuzz/test_data/example_curl_fuzzer_cov.json
+++ /dev/null
@@ -1 +0,0 @@
-{"data": [{"files": [{"filename": "/src/curl/include/curl/curl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/include/curl/curlver.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/include/curl/multi.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/include/curl/system.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/include/curl/urlapi.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/amigaos.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/arpa_telnet.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/asyn-thread.c", "summary": {"functions": {"count": 24, "covered": 17, "percent": 70.83333333333334}, "instantiations": {"count": 24, "covered": 17, "percent": 70.83333333333334}, "lines": {"count": 454, "covered": 316, "percent": 69.60352422907489}, "regions": {"count": 206, "covered": 133, "notcovered": 73, "percent": 64.56310679611651}}}, {"filename": "/src/curl/lib/asyn.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/base64.c", "summary": {"functions": {"count": 5, "covered": 5, "percent": 100}, "instantiations": {"count": 5, "covered": 5, "percent": 100}, "lines": {"count": 205, "covered": 199, "percent": 97.07317073170731}, "regions": {"count": 81, "covered": 76, "notcovered": 5, "percent": 93.82716049382715}}}, {"filename": "/src/curl/lib/conncache.c", "summary": {"functions": {"count": 22, "covered": 20, "percent": 90.9090909090909}, "instantiations": {"count": 22, "covered": 20, "percent": 90.9090909090909}, "lines": {"count": 405, "covered": 267, "percent": 65.92592592592592}, "regions": {"count": 225, "covered": 123, "notcovered": 102, "percent": 54.666666666666664}}}, {"filename": "/src/curl/lib/conncache.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/connect.c", "summary": {"functions": {"count": 21, "covered": 16, "percent": 76.19047619047619}, "instantiations": {"count": 21, "covered": 16, "percent": 76.19047619047619}, "lines": {"count": 1074, "covered": 439, "percent": 40.87523277467412}, "regions": {"count": 596, "covered": 233, "notcovered": 363, "percent": 39.09395973154363}}}, {"filename": "/src/curl/lib/connect.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/content_encoding.c", "summary": {"functions": {"count": 28, "covered": 27, "percent": 96.42857142857143}, "instantiations": {"count": 28, "covered": 27, "percent": 96.42857142857143}, "lines": {"count": 582, "covered": 404, "percent": 69.41580756013745}, "regions": {"count": 338, "covered": 223, "notcovered": 115, "percent": 65.97633136094674}}}, {"filename": "/src/curl/lib/cookie.c", "summary": {"functions": {"count": 27, "covered": 20, "percent": 74.07407407407408}, "instantiations": {"count": 27, "covered": 20, "percent": 74.07407407407408}, "lines": {"count": 1341, "covered": 837, "percent": 62.41610738255034}, "regions": {"count": 1020, "covered": 615, "notcovered": 405, "percent": 60.29411764705882}}}, {"filename": "/src/curl/lib/cookie.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_addrinfo.c", "summary": {"functions": {"count": 8, "covered": 5, "percent": 62.5}, "instantiations": {"count": 8, "covered": 5, "percent": 62.5}, "lines": {"count": 339, "covered": 149, "percent": 43.95280235988201}, "regions": {"count": 148, "covered": 52, "notcovered": 96, "percent": 35.13513513513514}}}, {"filename": "/src/curl/lib/curl_config.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_ctype.c", "summary": {"functions": {"count": 10, "covered": 8, "percent": 80}, "instantiations": {"count": 10, "covered": 8, "percent": 80}, "lines": {"count": 50, "covered": 39, "percent": 78}, "regions": {"count": 96, "covered": 73, "notcovered": 23, "percent": 76.04166666666666}}}, {"filename": "/src/curl/lib/curl_ctype.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_endian.c", "summary": {"functions": {"count": 5, "covered": 2, "percent": 40}, "instantiations": {"count": 5, "covered": 2, "percent": 40}, "lines": {"count": 22, "covered": 8, "percent": 36.36363636363637}, "regions": {"count": 5, "covered": 2, "notcovered": 3, "percent": 40}}}, {"filename": "/src/curl/lib/curl_fnmatch.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 18, "covered": 15, "percent": 83.33333333333334}, "regions": {"count": 13, "covered": 9, "notcovered": 4, "percent": 69.23076923076923}}}, {"filename": "/src/curl/lib/curl_fnmatch.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_get_line.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 21, "covered": 0, "percent": 0}, "regions": {"count": 18, "covered": 0, "notcovered": 18, "percent": 0}}}, {"filename": "/src/curl/lib/curl_gethostname.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 30, "covered": 25, "percent": 83.33333333333334}, "regions": {"count": 9, "covered": 6, "notcovered": 3, "percent": 66.66666666666666}}}, {"filename": "/src/curl/lib/curl_hmac.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_md5.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_memrchr.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 15, "covered": 15, "percent": 100}, "regions": {"count": 9, "covered": 9, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/curl_memrchr.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_ntlm_core.c", "summary": {"functions": {"count": 10, "covered": 6, "percent": 60}, "instantiations": {"count": 10, "covered": 6, "percent": 60}, "lines": {"count": 234, "covered": 106, "percent": 45.2991452991453}, "regions": {"count": 102, "covered": 43, "notcovered": 59, "percent": 42.15686274509804}}}, {"filename": "/src/curl/lib/curl_ntlm_wb.c", "summary": {"functions": {"count": 6, "covered": 4, "percent": 66.66666666666666}, "instantiations": {"count": 6, "covered": 4, "percent": 66.66666666666666}, "lines": {"count": 392, "covered": 130, "percent": 33.16326530612245}, "regions": {"count": 293, "covered": 66, "notcovered": 227, "percent": 22.525597269624573}}}, {"filename": "/src/curl/lib/curl_printf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_range.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 57, "covered": 57, "percent": 100}, "regions": {"count": 42, "covered": 42, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/curl_sasl.c", "summary": {"functions": {"count": 8, "covered": 8, "percent": 100}, "instantiations": {"count": 8, "covered": 8, "percent": 100}, "lines": {"count": 411, "covered": 312, "percent": 75.91240875912408}, "regions": {"count": 272, "covered": 188, "notcovered": 84, "percent": 69.11764705882352}}}, {"filename": "/src/curl/lib/curl_sasl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_setup.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_setup_once.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/curl_threads.c", "summary": {"functions": {"count": 4, "covered": 3, "percent": 75}, "instantiations": {"count": 4, "covered": 3, "percent": 75}, "lines": {"count": 44, "covered": 31, "percent": 70.45454545454545}, "regions": {"count": 26, "covered": 15, "notcovered": 11, "percent": 57.692307692307686}}}, {"filename": "/src/curl/lib/curl_threads.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/dict.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 179, "covered": 165, "percent": 92.17877094972067}, "regions": {"count": 117, "covered": 107, "notcovered": 10, "percent": 91.45299145299145}}}, {"filename": "/src/curl/lib/doh.c", "summary": {"functions": {"count": 21, "covered": 0, "percent": 0}, "instantiations": {"count": 21, "covered": 0, "percent": 0}, "lines": {"count": 839, "covered": 0, "percent": 0}, "regions": {"count": 656, "covered": 0, "notcovered": 656, "percent": 0}}}, {"filename": "/src/curl/lib/doh.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/dotdot.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 129, "covered": 103, "percent": 79.84496124031007}, "regions": {"count": 56, "covered": 46, "notcovered": 10, "percent": 82.14285714285714}}}, {"filename": "/src/curl/lib/easy.c", "summary": {"functions": {"count": 28, "covered": 4, "percent": 14.285714285714285}, "instantiations": {"count": 28, "covered": 4, "percent": 14.285714285714285}, "lines": {"count": 767, "covered": 49, "percent": 6.388526727509778}, "regions": {"count": 421, "covered": 26, "notcovered": 395, "percent": 6.175771971496437}}}, {"filename": "/src/curl/lib/escape.c", "summary": {"functions": {"count": 7, "covered": 1, "percent": 14.285714285714285}, "instantiations": {"count": 7, "covered": 1, "percent": 14.285714285714285}, "lines": {"count": 160, "covered": 52, "percent": 32.5}, "regions": {"count": 156, "covered": 32, "notcovered": 124, "percent": 20.51282051282051}}}, {"filename": "/src/curl/lib/file.c", "summary": {"functions": {"count": 6, "covered": 6, "percent": 100}, "instantiations": {"count": 6, "covered": 6, "percent": 100}, "lines": {"count": 347, "covered": 306, "percent": 88.18443804034582}, "regions": {"count": 200, "covered": 169, "notcovered": 31, "percent": 84.5}}}, {"filename": "/src/curl/lib/fileinfo.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 10, "covered": 10, "percent": 100}, "regions": {"count": 12, "covered": 12, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/formdata.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 720, "covered": 0, "percent": 0}, "regions": {"count": 513, "covered": 0, "notcovered": 513, "percent": 0}}}, {"filename": "/src/curl/lib/ftp.c", "summary": {"functions": {"count": 65, "covered": 54, "percent": 83.07692307692308}, "instantiations": {"count": 65, "covered": 54, "percent": 83.07692307692308}, "lines": {"count": 3626, "covered": 2078, "percent": 57.30832873690016}, "regions": {"count": 2133, "covered": 1182, "notcovered": 951, "percent": 55.41490857946554}}}, {"filename": "/src/curl/lib/ftp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/ftplistparser.c", "summary": {"functions": {"count": 6, "covered": 6, "percent": 100}, "instantiations": {"count": 6, "covered": 6, "percent": 100}, "lines": {"count": 818, "covered": 735, "percent": 89.85330073349633}, "regions": {"count": 498, "covered": 463, "notcovered": 35, "percent": 92.9718875502008}}}, {"filename": "/src/curl/lib/getenv.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 7, "covered": 7, "percent": 100}, "regions": {"count": 5, "covered": 3, "notcovered": 2, "percent": 60}}}, {"filename": "/src/curl/lib/getinfo.c", "summary": {"functions": {"count": 8, "covered": 1, "percent": 12.5}, "instantiations": {"count": 8, "covered": 1, "percent": 12.5}, "lines": {"count": 427, "covered": 44, "percent": 10.304449648711945}, "regions": {"count": 165, "covered": 4, "notcovered": 161, "percent": 2.4242424242424243}}}, {"filename": "/src/curl/lib/gopher.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 97, "covered": 72, "percent": 74.22680412371135}, "regions": {"count": 51, "covered": 38, "notcovered": 13, "percent": 74.50980392156863}}}, {"filename": "/src/curl/lib/hash.c", "summary": {"functions": {"count": 13, "covered": 13, "percent": 100}, "instantiations": {"count": 13, "covered": 13, "percent": 100}, "lines": {"count": 186, "covered": 171, "percent": 91.93548387096774}, "regions": {"count": 98, "covered": 92, "notcovered": 6, "percent": 93.87755102040816}}}, {"filename": "/src/curl/lib/hmac.c", "summary": {"functions": {"count": 4, "covered": 3, "percent": 75}, "instantiations": {"count": 4, "covered": 3, "percent": 75}, "lines": {"count": 84, "covered": 67, "percent": 79.76190476190477}, "regions": {"count": 22, "covered": 16, "notcovered": 6, "percent": 72.72727272727273}}}, {"filename": "/src/curl/lib/hostasyn.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 44, "covered": 22, "percent": 50}, "regions": {"count": 15, "covered": 5, "notcovered": 10, "percent": 33.33333333333333}}}, {"filename": "/src/curl/lib/hostcheck.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 81, "covered": 0, "percent": 0}, "regions": {"count": 72, "covered": 0, "notcovered": 72, "percent": 0}}}, {"filename": "/src/curl/lib/hostcheck.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/hostip.c", "summary": {"functions": {"count": 20, "covered": 14, "percent": 70}, "instantiations": {"count": 20, "covered": 14, "percent": 70}, "lines": {"count": 603, "covered": 260, "percent": 43.117744610281925}, "regions": {"count": 276, "covered": 107, "notcovered": 169, "percent": 38.768115942028984}}}, {"filename": "/src/curl/lib/hostip.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/hostip6.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 30, "covered": 30, "percent": 100}, "regions": {"count": 20, "covered": 18, "notcovered": 2, "percent": 90}}}, {"filename": "/src/curl/lib/http.c", "summary": {"functions": {"count": 38, "covered": 32, "percent": 84.21052631578947}, "instantiations": {"count": 38, "covered": 32, "percent": 84.21052631578947}, "lines": {"count": 3373, "covered": 2572, "percent": 76.25259412985473}, "regions": {"count": 2208, "covered": 1696, "notcovered": 512, "percent": 76.81159420289855}}}, {"filename": "/src/curl/lib/http.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/http2.c", "summary": {"functions": {"count": 46, "covered": 37, "percent": 80.43478260869566}, "instantiations": {"count": 46, "covered": 37, "percent": 80.43478260869566}, "lines": {"count": 1978, "covered": 1318, "percent": 66.6329625884732}, "regions": {"count": 1147, "covered": 741, "notcovered": 406, "percent": 64.60331299040976}}}, {"filename": "/src/curl/lib/http2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/http_chunks.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 248, "covered": 227, "percent": 91.53225806451613}, "regions": {"count": 122, "covered": 108, "notcovered": 14, "percent": 88.52459016393442}}}, {"filename": "/src/curl/lib/http_chunks.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/http_digest.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 122, "covered": 111, "percent": 90.98360655737704}, "regions": {"count": 54, "covered": 46, "notcovered": 8, "percent": 85.18518518518519}}}, {"filename": "/src/curl/lib/http_ntlm.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 166, "covered": 110, "percent": 66.26506024096386}, "regions": {"count": 94, "covered": 50, "notcovered": 44, "percent": 53.191489361702125}}}, {"filename": "/src/curl/lib/http_proxy.c", "summary": {"functions": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "instantiations": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "lines": {"count": 594, "covered": 17, "percent": 2.861952861952862}, "regions": {"count": 357, "covered": 10, "notcovered": 347, "percent": 2.801120448179272}}}, {"filename": "/src/curl/lib/if2ip.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 97, "covered": 8, "percent": 8.24742268041237}, "regions": {"count": 59, "covered": 4, "notcovered": 55, "percent": 6.779661016949152}}}, {"filename": "/src/curl/lib/if2ip.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/imap.c", "summary": {"functions": {"count": 49, "covered": 41, "percent": 83.6734693877551}, "instantiations": {"count": 49, "covered": 41, "percent": 83.6734693877551}, "lines": {"count": 1567, "covered": 1285, "percent": 82.00382897255903}, "regions": {"count": 1081, "covered": 865, "notcovered": 216, "percent": 80.01850138760406}}}, {"filename": "/src/curl/lib/imap.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/inet_ntop.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/inet_pton.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/llist.c", "summary": {"functions": {"count": 5, "covered": 5, "percent": 100}, "instantiations": {"count": 5, "covered": 5, "percent": 100}, "lines": {"count": 80, "covered": 78, "percent": 97.5}, "regions": {"count": 41, "covered": 39, "notcovered": 2, "percent": 95.1219512195122}}}, {"filename": "/src/curl/lib/md4.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 7, "covered": 7, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/md5.c", "summary": {"functions": {"count": 4, "covered": 4, "percent": 100}, "instantiations": {"count": 4, "covered": 4, "percent": 100}, "lines": {"count": 42, "covered": 38, "percent": 90.47619047619048}, "regions": {"count": 15, "covered": 12, "notcovered": 3, "percent": 80}}}, {"filename": "/src/curl/lib/memdebug.c", "summary": {"functions": {"count": 18, "covered": 15, "percent": 83.33333333333334}, "instantiations": {"count": 18, "covered": 15, "percent": 83.33333333333334}, "lines": {"count": 283, "covered": 202, "percent": 71.37809187279152}, "regions": {"count": 165, "covered": 99, "notcovered": 66, "percent": 60}}}, {"filename": "/src/curl/lib/memdebug.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/mime.c", "summary": {"functions": {"count": 56, "covered": 34, "percent": 60.71428571428571}, "instantiations": {"count": 56, "covered": 34, "percent": 60.71428571428571}, "lines": {"count": 1277, "covered": 671, "percent": 52.54502740798747}, "regions": {"count": 828, "covered": 412, "notcovered": 416, "percent": 49.75845410628019}}}, {"filename": "/src/curl/lib/mime.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/mprintf.c", "summary": {"functions": {"count": 17, "covered": 11, "percent": 64.70588235294117}, "instantiations": {"count": 17, "covered": 11, "percent": 64.70588235294117}, "lines": {"count": 905, "covered": 585, "percent": 64.64088397790056}, "regions": {"count": 591, "covered": 323, "notcovered": 268, "percent": 54.653130287648054}}}, {"filename": "/src/curl/lib/multi.c", "summary": {"functions": {"count": 70, "covered": 43, "percent": 61.42857142857143}, "instantiations": {"count": 70, "covered": 43, "percent": 61.42857142857143}, "lines": {"count": 2793, "covered": 1523, "percent": 54.52918009308987}, "regions": {"count": 1565, "covered": 756, "notcovered": 809, "percent": 48.30670926517572}}}, {"filename": "/src/curl/lib/multihandle.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/multiif.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/netrc.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 180, "covered": 0, "percent": 0}, "regions": {"count": 143, "covered": 0, "notcovered": 143, "percent": 0}}}, {"filename": "/src/curl/lib/non-ascii.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/nonblock.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 8, "covered": 6, "percent": 75}, "regions": {"count": 7, "covered": 5, "notcovered": 2, "percent": 71.42857142857143}}}, {"filename": "/src/curl/lib/parsedate.c", "summary": {"functions": {"count": 9, "covered": 8, "percent": 88.88888888888889}, "instantiations": {"count": 9, "covered": 8, "percent": 88.88888888888889}, "lines": {"count": 317, "covered": 289, "percent": 91.16719242902208}, "regions": {"count": 218, "covered": 202, "notcovered": 16, "percent": 92.66055045871559}}}, {"filename": "/src/curl/lib/pingpong.c", "summary": {"functions": {"count": 10, "covered": 9, "percent": 90}, "instantiations": {"count": 10, "covered": 9, "percent": 90}, "lines": {"count": 386, "covered": 329, "percent": 85.23316062176166}, "regions": {"count": 202, "covered": 165, "notcovered": 37, "percent": 81.68316831683168}}}, {"filename": "/src/curl/lib/pop3.c", "summary": {"functions": {"count": 40, "covered": 36, "percent": 90}, "instantiations": {"count": 40, "covered": 36, "percent": 90}, "lines": {"count": 1087, "covered": 995, "percent": 91.53633854645814}, "regions": {"count": 559, "covered": 508, "notcovered": 51, "percent": 90.87656529516994}}}, {"filename": "/src/curl/lib/pop3.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/progress.c", "summary": {"functions": {"count": 15, "covered": 11, "percent": 73.33333333333333}, "instantiations": {"count": 15, "covered": 11, "percent": 73.33333333333333}, "lines": {"count": 488, "covered": 208, "percent": 42.62295081967213}, "regions": {"count": 499, "covered": 83, "notcovered": 416, "percent": 16.63326653306613}}}, {"filename": "/src/curl/lib/progress.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/rand.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 115, "covered": 65, "percent": 56.52173913043478}, "regions": {"count": 50, "covered": 26, "notcovered": 24, "percent": 52}}}, {"filename": "/src/curl/lib/rename.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 6, "covered": 5, "percent": 83.33333333333334}, "regions": {"count": 4, "covered": 3, "notcovered": 1, "percent": 75}}}, {"filename": "/src/curl/lib/rtsp.c", "summary": {"functions": {"count": 11, "covered": 8, "percent": 72.72727272727273}, "instantiations": {"count": 11, "covered": 8, "percent": 72.72727272727273}, "lines": {"count": 673, "covered": 579, "percent": 86.03268945022289}, "regions": {"count": 409, "covered": 323, "notcovered": 86, "percent": 78.97310513447434}}}, {"filename": "/src/curl/lib/select.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 154, "covered": 79, "percent": 51.298701298701296}, "regions": {"count": 111, "covered": 51, "notcovered": 60, "percent": 45.94594594594595}}}, {"filename": "/src/curl/lib/select.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/sendf.c", "summary": {"functions": {"count": 15, "covered": 11, "percent": 73.33333333333333}, "instantiations": {"count": 15, "covered": 11, "percent": 73.33333333333333}, "lines": {"count": 514, "covered": 296, "percent": 57.58754863813229}, "regions": {"count": 253, "covered": 147, "notcovered": 106, "percent": 58.10276679841897}}}, {"filename": "/src/curl/lib/sendf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/setopt.c", "summary": {"functions": {"count": 4, "covered": 3, "percent": 75}, "instantiations": {"count": 4, "covered": 3, "percent": 75}, "lines": {"count": 2549, "covered": 488, "percent": 19.1447626520204}, "regions": {"count": 991, "covered": 145, "notcovered": 846, "percent": 14.631685166498487}}}, {"filename": "/src/curl/lib/sha256.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 7, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/curl/lib/share.c", "summary": {"functions": {"count": 5, "covered": 2, "percent": 40}, "instantiations": {"count": 5, "covered": 2, "percent": 40}, "lines": {"count": 190, "covered": 10, "percent": 5.263157894736842}, "regions": {"count": 86, "covered": 6, "notcovered": 80, "percent": 6.976744186046512}}}, {"filename": "/src/curl/lib/sigpipe.h", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 6, "covered": 6, "percent": 100}, "lines": {"count": 20, "covered": 20, "percent": 100}, "regions": {"count": 6, "covered": 6, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/slist.c", "summary": {"functions": {"count": 5, "covered": 4, "percent": 80}, "instantiations": {"count": 5, "covered": 4, "percent": 80}, "lines": {"count": 79, "covered": 59, "percent": 74.68354430379746}, "regions": {"count": 40, "covered": 29, "notcovered": 11, "percent": 72.5}}}, {"filename": "/src/curl/lib/smb.c", "summary": {"functions": {"count": 27, "covered": 26, "percent": 96.29629629629629}, "instantiations": {"count": 27, "covered": 26, "percent": 96.29629629629629}, "lines": {"count": 740, "covered": 702, "percent": 94.86486486486486}, "regions": {"count": 406, "covered": 371, "notcovered": 35, "percent": 91.37931034482759}}}, {"filename": "/src/curl/lib/smb.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/smtp.c", "summary": {"functions": {"count": 44, "covered": 40, "percent": 90.9090909090909}, "instantiations": {"count": 44, "covered": 40, "percent": 90.9090909090909}, "lines": {"count": 1323, "covered": 1174, "percent": 88.73771730914588}, "regions": {"count": 674, "covered": 587, "notcovered": 87, "percent": 87.0919881305638}}}, {"filename": "/src/curl/lib/smtp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/socketpair.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/socks.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 787, "covered": 0, "percent": 0}, "regions": {"count": 390, "covered": 0, "notcovered": 390, "percent": 0}}}, {"filename": "/src/curl/lib/speedcheck.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 36, "covered": 10, "percent": 27.77777777777778}, "regions": {"count": 18, "covered": 7, "notcovered": 11, "percent": 38.88888888888889}}}, {"filename": "/src/curl/lib/splay.c", "summary": {"functions": {"count": 4, "covered": 4, "percent": 100}, "instantiations": {"count": 4, "covered": 4, "percent": 100}, "lines": {"count": 203, "covered": 108, "percent": 53.20197044334976}, "regions": {"count": 143, "covered": 59, "notcovered": 84, "percent": 41.25874125874126}}}, {"filename": "/src/curl/lib/splay.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/strcase.c", "summary": {"functions": {"count": 9, "covered": 8, "percent": 88.88888888888889}, "instantiations": {"count": 9, "covered": 8, "percent": 88.88888888888889}, "lines": {"count": 69, "covered": 60, "percent": 86.95652173913044}, "regions": {"count": 59, "covered": 50, "notcovered": 9, "percent": 84.7457627118644}}}, {"filename": "/src/curl/lib/strcase.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/strdup.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 16, "covered": 7, "percent": 43.75}, "regions": {"count": 11, "covered": 5, "notcovered": 6, "percent": 45.45454545454545}}}, {"filename": "/src/curl/lib/strerror.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 403, "covered": 33, "percent": 8.188585607940446}, "regions": {"count": 145, "covered": 11, "notcovered": 134, "percent": 7.586206896551724}}}, {"filename": "/src/curl/lib/strtoofft.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 26, "covered": 26, "percent": 100}, "regions": {"count": 19, "covered": 19, "notcovered": 0, "percent": 100}}}, {"filename": "/src/curl/lib/telnet.c", "summary": {"functions": {"count": 18, "covered": 0, "percent": 0}, "instantiations": {"count": 18, "covered": 0, "percent": 0}, "lines": {"count": 1128, "covered": 0, "percent": 0}, "regions": {"count": 894, "covered": 0, "notcovered": 894, "percent": 0}}}, {"filename": "/src/curl/lib/tftp.c", "summary": {"functions": {"count": 27, "covered": 6, "percent": 22.22222222222222}, "instantiations": {"count": 27, "covered": 6, "percent": 22.22222222222222}, "lines": {"count": 1049, "covered": 199, "percent": 18.970448045757866}, "regions": {"count": 498, "covered": 79, "notcovered": 419, "percent": 15.863453815261044}}}, {"filename": "/src/curl/lib/timeval.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 52, "covered": 37, "percent": 71.15384615384616}, "regions": {"count": 68, "covered": 37, "notcovered": 31, "percent": 54.41176470588235}}}, {"filename": "/src/curl/lib/timeval.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/transfer.c", "summary": {"functions": {"count": 19, "covered": 16, "percent": 84.21052631578947}, "instantiations": {"count": 19, "covered": 16, "percent": 84.21052631578947}, "lines": {"count": 1580, "covered": 1270, "percent": 80.37974683544303}, "regions": {"count": 971, "covered": 788, "notcovered": 183, "percent": 81.15345005149331}}}, {"filename": "/src/curl/lib/transfer.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/url.c", "summary": {"functions": {"count": 50, "covered": 41, "percent": 82}, "instantiations": {"count": 50, "covered": 41, "percent": 82}, "lines": {"count": 3154, "covered": 2036, "percent": 64.55294863665188}, "regions": {"count": 2207, "covered": 1267, "notcovered": 940, "percent": 57.408246488445855}}}, {"filename": "/src/curl/lib/url.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/urlapi-int.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/urlapi.c", "summary": {"functions": {"count": 19, "covered": 18, "percent": 94.73684210526315}, "instantiations": {"count": 19, "covered": 18, "percent": 94.73684210526315}, "lines": {"count": 1308, "covered": 1054, "percent": 80.58103975535168}, "regions": {"count": 1031, "covered": 777, "notcovered": 254, "percent": 75.36372453928225}}}, {"filename": "/src/curl/lib/urldata.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/vauth/cleartext.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 59, "covered": 48, "percent": 81.35593220338984}, "regions": {"count": 26, "covered": 20, "notcovered": 6, "percent": 76.92307692307693}}}, {"filename": "/src/curl/lib/vauth/cram.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 54, "covered": 52, "percent": 96.29629629629629}, "regions": {"count": 18, "covered": 16, "notcovered": 2, "percent": 88.88888888888889}}}, {"filename": "/src/curl/lib/vauth/digest.c", "summary": {"functions": {"count": 13, "covered": 11, "percent": 84.61538461538461}, "instantiations": {"count": 13, "covered": 11, "percent": 84.61538461538461}, "lines": {"count": 747, "covered": 440, "percent": 58.90227576974565}, "regions": {"count": 482, "covered": 265, "notcovered": 217, "percent": 54.9792531120332}}}, {"filename": "/src/curl/lib/vauth/digest.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/vauth/ntlm.c", "summary": {"functions": {"count": 7, "covered": 4, "percent": 57.14285714285714}, "instantiations": {"count": 7, "covered": 4, "percent": 57.14285714285714}, "lines": {"count": 555, "covered": 152, "percent": 27.387387387387385}, "regions": {"count": 191, "covered": 41, "notcovered": 150, "percent": 21.465968586387437}}}, {"filename": "/src/curl/lib/vauth/ntlm.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/vauth/oauth2.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 36, "covered": 0, "percent": 0}, "regions": {"count": 18, "covered": 0, "notcovered": 18, "percent": 0}}}, {"filename": "/src/curl/lib/vauth/vauth.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 26, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/curl/lib/version.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 76, "covered": 74, "percent": 97.36842105263158}, "regions": {"count": 21, "covered": 17, "notcovered": 4, "percent": 80.95238095238095}}}, {"filename": "/src/curl/lib/vtls/openssl.c", "summary": {"functions": {"count": 57, "covered": 20, "percent": 35.08771929824561}, "instantiations": {"count": 57, "covered": 20, "percent": 35.08771929824561}, "lines": {"count": 2927, "covered": 648, "percent": 22.138708575333105}, "regions": {"count": 2350, "covered": 386, "notcovered": 1964, "percent": 16.425531914893618}}}, {"filename": "/src/curl/lib/vtls/vtls.c", "summary": {"functions": {"count": 60, "covered": 19, "percent": 31.666666666666664}, "instantiations": {"count": 60, "covered": 19, "percent": 31.666666666666664}, "lines": {"count": 878, "covered": 186, "percent": 21.184510250569478}, "regions": {"count": 667, "covered": 159, "notcovered": 508, "percent": 23.838080959520237}}}, {"filename": "/src/curl/lib/vtls/vtls.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/warnless.c", "summary": {"functions": {"count": 15, "covered": 7, "percent": 46.666666666666664}, "instantiations": {"count": 15, "covered": 7, "percent": 46.666666666666664}, "lines": {"count": 71, "covered": 33, "percent": 46.478873239436616}, "regions": {"count": 50, "covered": 22, "notcovered": 28, "percent": 44}}}, {"filename": "/src/curl/lib/warnless.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl/lib/wildcard.c", "summary": {"functions": {"count": 3, "covered": 3, "percent": 100}, "instantiations": {"count": 3, "covered": 3, "percent": 100}, "lines": {"count": 32, "covered": 31, "percent": 96.875}, "regions": {"count": 12, "covered": 11, "notcovered": 1, "percent": 91.66666666666666}}}, {"filename": "/src/curl_fuzzer/curl_fuzzer.cc", "summary": {"functions": {"count": 11, "covered": 11, "percent": 100}, "instantiations": {"count": 11, "covered": 11, "percent": 100}, "lines": {"count": 391, "covered": 377, "percent": 96.41943734015345}, "regions": {"count": 202, "covered": 170, "notcovered": 32, "percent": 84.15841584158416}}}, {"filename": "/src/curl_fuzzer/curl_fuzzer.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_fuzzer/curl_fuzzer_callback.cc", "summary": {"functions": {"count": 4, "covered": 4, "percent": 100}, "instantiations": {"count": 4, "covered": 4, "percent": 100}, "lines": {"count": 161, "covered": 136, "percent": 84.472049689441}, "regions": {"count": 71, "covered": 60, "notcovered": 11, "percent": 84.50704225352112}}}, {"filename": "/src/curl_fuzzer/curl_fuzzer_tlv.cc", "summary": {"functions": {"count": 7, "covered": 7, "percent": 100}, "instantiations": {"count": 7, "covered": 7, "percent": 100}, "lines": {"count": 247, "covered": 247, "percent": 100}, "regions": {"count": 470, "covered": 442, "notcovered": 28, "percent": 94.04255319148936}}}, {"filename": "/src/curl_install/include/curl/curl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/nghttp2/nghttp2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/asn1.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/bio.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/conf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/crypto.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/des.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/engine.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/evp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/obj_mac.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/ocsp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/opensslv.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/rsa.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/safestack.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/ssl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/ssl2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/ssl3.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/tls1.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/ui.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/x509.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/x509_vfy.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/openssl/x509v3.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/curl_install/include/zlib.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/includes/nghttp2/nghttp2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/includes/nghttp2/nghttp2ver.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_buf.c", "summary": {"functions": {"count": 30, "covered": 18, "percent": 60}, "instantiations": {"count": 30, "covered": 18, "percent": 60}, "lines": {"count": 458, "covered": 234, "percent": 51.09170305676856}, "regions": {"count": 183, "covered": 97, "notcovered": 86, "percent": 53.00546448087432}}}, {"filename": "/src/nghttp2/lib/nghttp2_buf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_callbacks.c", "summary": {"functions": {"count": 25, "covered": 9, "percent": 36}, "instantiations": {"count": 25, "covered": 9, "percent": 36}, "lines": {"count": 81, "covered": 31, "percent": 38.2716049382716}, "regions": {"count": 28, "covered": 11, "notcovered": 17, "percent": 39.285714285714285}}}, {"filename": "/src/nghttp2/lib/nghttp2_debug.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_frame.c", "summary": {"functions": {"count": 69, "covered": 46, "percent": 66.66666666666666}, "instantiations": {"count": 69, "covered": 46, "percent": 66.66666666666666}, "lines": {"count": 953, "covered": 465, "percent": 48.79328436516264}, "regions": {"count": 315, "covered": 155, "notcovered": 160, "percent": 49.2063492063492}}}, {"filename": "/src/nghttp2/lib/nghttp2_frame.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_hd.c", "summary": {"functions": {"count": 81, "covered": 55, "percent": 67.90123456790124}, "instantiations": {"count": 81, "covered": 55, "percent": 67.90123456790124}, "lines": {"count": 1989, "covered": 1616, "percent": 81.24685771744595}, "regions": {"count": 1043, "covered": 891, "notcovered": 152, "percent": 85.42665388302973}}}, {"filename": "/src/nghttp2/lib/nghttp2_hd.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_hd_huffman.c", "summary": {"functions": {"count": 5, "covered": 5, "percent": 100}, "instantiations": {"count": 5, "covered": 5, "percent": 100}, "lines": {"count": 184, "covered": 170, "percent": 92.3913043478261}, "regions": {"count": 143, "covered": 136, "notcovered": 7, "percent": 95.1048951048951}}}, {"filename": "/src/nghttp2/lib/nghttp2_helper.c", "summary": {"functions": {"count": 12, "covered": 11, "percent": 91.66666666666666}, "instantiations": {"count": 12, "covered": 11, "percent": 91.66666666666666}, "lines": {"count": 237, "covered": 177, "percent": 74.68354430379746}, "regions": {"count": 115, "covered": 85, "notcovered": 30, "percent": 73.91304347826086}}}, {"filename": "/src/nghttp2/lib/nghttp2_helper.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_http.c", "summary": {"functions": {"count": 18, "covered": 15, "percent": 83.33333333333334}, "instantiations": {"count": 18, "covered": 15, "percent": 83.33333333333334}, "lines": {"count": 463, "covered": 309, "percent": 66.73866090712744}, "regions": {"count": 376, "covered": 248, "notcovered": 128, "percent": 65.95744680851064}}}, {"filename": "/src/nghttp2/lib/nghttp2_map.c", "summary": {"functions": {"count": 12, "covered": 11, "percent": 91.66666666666666}, "instantiations": {"count": 12, "covered": 11, "percent": 91.66666666666666}, "lines": {"count": 140, "covered": 92, "percent": 65.71428571428571}, "regions": {"count": 69, "covered": 44, "notcovered": 25, "percent": 63.76811594202898}}}, {"filename": "/src/nghttp2/lib/nghttp2_mem.c", "summary": {"functions": {"count": 10, "covered": 10, "percent": 100}, "instantiations": {"count": 10, "covered": 10, "percent": 100}, "lines": {"count": 36, "covered": 36, "percent": 100}, "regions": {"count": 10, "covered": 10, "notcovered": 0, "percent": 100}}}, {"filename": "/src/nghttp2/lib/nghttp2_outbound_item.c", "summary": {"functions": {"count": 5, "covered": 4, "percent": 80}, "instantiations": {"count": 5, "covered": 4, "percent": 80}, "lines": {"count": 93, "covered": 62, "percent": 66.66666666666666}, "regions": {"count": 32, "covered": 21, "notcovered": 11, "percent": 65.625}}}, {"filename": "/src/nghttp2/lib/nghttp2_outbound_item.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_pq.c", "summary": {"functions": {"count": 13, "covered": 9, "percent": 69.23076923076923}, "instantiations": {"count": 13, "covered": 9, "percent": 69.23076923076923}, "lines": {"count": 141, "covered": 71, "percent": 50.35460992907801}, "regions": {"count": 73, "covered": 31, "notcovered": 42, "percent": 42.465753424657535}}}, {"filename": "/src/nghttp2/lib/nghttp2_priority_spec.c", "summary": {"functions": {"count": 4, "covered": 3, "percent": 75}, "instantiations": {"count": 4, "covered": 3, "percent": 75}, "lines": {"count": 21, "covered": 14, "percent": 66.66666666666666}, "regions": {"count": 20, "covered": 10, "notcovered": 10, "percent": 50}}}, {"filename": "/src/nghttp2/lib/nghttp2_rcbuf.c", "summary": {"functions": {"count": 7, "covered": 5, "percent": 71.42857142857143}, "instantiations": {"count": 7, "covered": 5, "percent": 71.42857142857143}, "lines": {"count": 59, "covered": 48, "percent": 81.35593220338984}, "regions": {"count": 23, "covered": 19, "notcovered": 4, "percent": 82.6086956521739}}}, {"filename": "/src/nghttp2/lib/nghttp2_session.c", "summary": {"functions": {"count": 189, "covered": 124, "percent": 65.60846560846561}, "instantiations": {"count": 189, "covered": 124, "percent": 65.60846560846561}, "lines": {"count": 6806, "covered": 4020, "percent": 59.06553041434029}, "regions": {"count": 3356, "covered": 1973, "notcovered": 1383, "percent": 58.790226460071516}}}, {"filename": "/src/nghttp2/lib/nghttp2_session.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/nghttp2/lib/nghttp2_stream.c", "summary": {"functions": {"count": 50, "covered": 29, "percent": 57.99999999999999}, "instantiations": {"count": 50, "covered": 29, "percent": 57.99999999999999}, "lines": {"count": 734, "covered": 348, "percent": 47.41144414168937}, "regions": {"count": 310, "covered": 132, "notcovered": 178, "percent": 42.58064516129032}}}, {"filename": "/src/nghttp2/lib/nghttp2_submit.c", "summary": {"functions": {"count": 23, "covered": 9, "percent": 39.130434782608695}, "instantiations": {"count": 23, "covered": 9, "percent": 39.130434782608695}, "lines": {"count": 698, "covered": 167, "percent": 23.925501432664756}, "regions": {"count": 292, "covered": 66, "notcovered": 226, "percent": 22.602739726027394}}}, {"filename": "/src/nghttp2/lib/nghttp2_version.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 5, "covered": 5, "percent": 100}, "regions": {"count": 5, "covered": 4, "notcovered": 1, "percent": 80}}}, {"filename": "/src/openssl/crypto/LPdir_unix.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 54, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/openssl/crypto/aes/aes_misc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 7, "covered": 0, "percent": 0}, "regions": {"count": 3, "covered": 0, "notcovered": 3, "percent": 0}}}, {"filename": "/src/openssl/crypto/aes/aes_wrap.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 7, "covered": 0, "percent": 0}, "regions": {"count": 2, "covered": 0, "notcovered": 2, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_bitstr.c", "summary": {"functions": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "instantiations": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "lines": {"count": 184, "covered": 42, "percent": 22.82608695652174}, "regions": {"count": 148, "covered": 24, "notcovered": 124, "percent": 16.216216216216218}}}, {"filename": "/src/openssl/crypto/asn1/a_bool.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 46, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_bytes.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 233, "covered": 0, "percent": 0}, "regions": {"count": 167, "covered": 0, "notcovered": 167, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_d2i_fp.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 199, "covered": 0, "percent": 0}, "regions": {"count": 141, "covered": 0, "notcovered": 141, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_digest.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 34, "covered": 0, "percent": 0}, "regions": {"count": 23, "covered": 0, "notcovered": 23, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_dup.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 21, "covered": 0, "notcovered": 21, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_enum.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 106, "covered": 0, "percent": 0}, "regions": {"count": 91, "covered": 0, "notcovered": 91, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_gentm.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 176, "covered": 0, "percent": 0}, "regions": {"count": 160, "covered": 0, "notcovered": 160, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_i2d_fp.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 79, "covered": 0, "percent": 0}, "regions": {"count": 47, "covered": 0, "notcovered": 47, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_int.c", "summary": {"functions": {"count": 9, "covered": 1, "percent": 11.11111111111111}, "instantiations": {"count": 9, "covered": 1, "percent": 11.11111111111111}, "lines": {"count": 345, "covered": 64, "percent": 18.55072463768116}, "regions": {"count": 266, "covered": 39, "notcovered": 227, "percent": 14.661654135338345}}}, {"filename": "/src/openssl/crypto/asn1/a_mbstr.c", "summary": {"functions": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "instantiations": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "lines": {"count": 277, "covered": 143, "percent": 51.624548736462096}, "regions": {"count": 225, "covered": 102, "notcovered": 123, "percent": 45.33333333333333}}}, {"filename": "/src/openssl/crypto/asn1/a_object.c", "summary": {"functions": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "instantiations": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "lines": {"count": 316, "covered": 91, "percent": 28.79746835443038}, "regions": {"count": 263, "covered": 58, "notcovered": 205, "percent": 22.0532319391635}}}, {"filename": "/src/openssl/crypto/asn1/a_octet.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 9, "covered": 0, "percent": 0}, "regions": {"count": 6, "covered": 0, "notcovered": 6, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_print.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 57, "covered": 0, "percent": 0}, "regions": {"count": 84, "covered": 0, "notcovered": 84, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_set.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 155, "covered": 0, "percent": 0}, "regions": {"count": 175, "covered": 0, "notcovered": 175, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_sign.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 189, "covered": 0, "percent": 0}, "regions": {"count": 143, "covered": 0, "notcovered": 143, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_strex.c", "summary": {"functions": {"count": 14, "covered": 1, "percent": 7.142857142857142}, "instantiations": {"count": 14, "covered": 1, "percent": 7.142857142857142}, "lines": {"count": 452, "covered": 19, "percent": 4.20353982300885}, "regions": {"count": 347, "covered": 13, "notcovered": 334, "percent": 3.7463976945244957}}}, {"filename": "/src/openssl/crypto/asn1/a_strnid.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 94, "covered": 0, "percent": 0}, "regions": {"count": 99, "covered": 0, "notcovered": 99, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_time.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 117, "covered": 0, "percent": 0}, "regions": {"count": 98, "covered": 0, "notcovered": 98, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_type.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 80, "covered": 8, "percent": 10}, "regions": {"count": 90, "covered": 5, "notcovered": 85, "percent": 5.555555555555555}}}, {"filename": "/src/openssl/crypto/asn1/a_utctm.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 184, "covered": 0, "percent": 0}, "regions": {"count": 176, "covered": 0, "notcovered": 176, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/a_utf8.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 151, "covered": 31, "percent": 20.52980132450331}, "regions": {"count": 137, "covered": 25, "notcovered": 112, "percent": 18.248175182481752}}}, {"filename": "/src/openssl/crypto/asn1/a_verify.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 148, "covered": 0, "percent": 0}, "regions": {"count": 106, "covered": 0, "notcovered": 106, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/ameth_lib.c", "summary": {"functions": {"count": 19, "covered": 9, "percent": 47.368421052631575}, "instantiations": {"count": 19, "covered": 9, "percent": 47.368421052631575}, "lines": {"count": 263, "covered": 109, "percent": 41.44486692015209}, "regions": {"count": 169, "covered": 44, "notcovered": 125, "percent": 26.035502958579883}}}, {"filename": "/src/openssl/crypto/asn1/asn1_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/asn1/asn1_gen.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 680, "covered": 0, "percent": 0}, "regions": {"count": 560, "covered": 0, "notcovered": 560, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/asn1_lib.c", "summary": {"functions": {"count": 27, "covered": 8, "percent": 29.629629629629626}, "instantiations": {"count": 27, "covered": 8, "percent": 29.629629629629626}, "lines": {"count": 349, "covered": 124, "percent": 35.53008595988539}, "regions": {"count": 251, "covered": 81, "notcovered": 170, "percent": 32.27091633466135}}}, {"filename": "/src/openssl/crypto/asn1/asn1_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/asn1_par.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 333, "covered": 0, "percent": 0}, "regions": {"count": 322, "covered": 0, "notcovered": 322, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/asn_mime.c", "summary": {"functions": {"count": 24, "covered": 0, "percent": 0}, "instantiations": {"count": 24, "covered": 0, "percent": 0}, "lines": {"count": 743, "covered": 0, "percent": 0}, "regions": {"count": 741, "covered": 0, "notcovered": 741, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/asn_moid.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 69, "covered": 3, "percent": 4.3478260869565215}, "regions": {"count": 52, "covered": 1, "notcovered": 51, "percent": 1.9230769230769231}}}, {"filename": "/src/openssl/crypto/asn1/asn_pack.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 109, "covered": 0, "percent": 0}, "regions": {"count": 96, "covered": 0, "notcovered": 96, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/bio_asn1.c", "summary": {"functions": {"count": 18, "covered": 0, "percent": 0}, "instantiations": {"count": 18, "covered": 0, "percent": 0}, "lines": {"count": 298, "covered": 0, "percent": 0}, "regions": {"count": 183, "covered": 0, "notcovered": 183, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/bio_ndef.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 141, "covered": 0, "percent": 0}, "regions": {"count": 64, "covered": 0, "notcovered": 64, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/d2i_pr.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 97, "covered": 0, "percent": 0}, "regions": {"count": 99, "covered": 0, "notcovered": 99, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/evp_asn1.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 117, "covered": 0, "percent": 0}, "regions": {"count": 92, "covered": 0, "notcovered": 92, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/f_int.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 141, "covered": 0, "percent": 0}, "regions": {"count": 129, "covered": 0, "notcovered": 129, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/f_string.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 135, "covered": 0, "percent": 0}, "regions": {"count": 118, "covered": 0, "notcovered": 118, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/i2d_pr.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 16, "covered": 0, "percent": 0}, "regions": {"count": 17, "covered": 0, "notcovered": 17, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/nsseq.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 8, "covered": 0, "percent": 0}, "regions": {"count": 5, "covered": 0, "notcovered": 5, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/p5_pbe.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 60, "covered": 0, "percent": 0}, "regions": {"count": 51, "covered": 0, "notcovered": 51, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/p5_pbev2.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 178, "covered": 0, "percent": 0}, "regions": {"count": 123, "covered": 0, "notcovered": 123, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/p8_pkey.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 61, "covered": 0, "percent": 0}, "regions": {"count": 55, "covered": 0, "notcovered": 55, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/t_pkey.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 47, "covered": 0, "percent": 0}, "regions": {"count": 49, "covered": 0, "notcovered": 49, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/t_x509.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 433, "covered": 0, "percent": 0}, "regions": {"count": 424, "covered": 0, "notcovered": 424, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/t_x509a.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 45, "covered": 0, "percent": 0}, "regions": {"count": 49, "covered": 0, "notcovered": 49, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/tasn_dec.c", "summary": {"functions": {"count": 13, "covered": 9, "percent": 69.23076923076923}, "instantiations": {"count": 13, "covered": 9, "percent": 69.23076923076923}, "lines": {"count": 1012, "covered": 510, "percent": 50.39525691699605}, "regions": {"count": 816, "covered": 383, "notcovered": 433, "percent": 46.93627450980392}}}, {"filename": "/src/openssl/crypto/asn1/tasn_enc.c", "summary": {"functions": {"count": 10, "covered": 5, "percent": 50}, "instantiations": {"count": 10, "covered": 5, "percent": 50}, "lines": {"count": 533, "covered": 310, "percent": 58.16135084427767}, "regions": {"count": 445, "covered": 227, "notcovered": 218, "percent": 51.01123595505618}}}, {"filename": "/src/openssl/crypto/asn1/tasn_fre.c", "summary": {"functions": {"count": 5, "covered": 4, "percent": 80}, "instantiations": {"count": 5, "covered": 4, "percent": 80}, "lines": {"count": 170, "covered": 130, "percent": 76.47058823529412}, "regions": {"count": 144, "covered": 107, "notcovered": 37, "percent": 74.30555555555556}}}, {"filename": "/src/openssl/crypto/asn1/tasn_new.c", "summary": {"functions": {"count": 8, "covered": 8, "percent": 100}, "instantiations": {"count": 8, "covered": 8, "percent": 100}, "lines": {"count": 250, "covered": 153, "percent": 61.199999999999996}, "regions": {"count": 220, "covered": 124, "notcovered": 96, "percent": 56.36363636363636}}}, {"filename": "/src/openssl/crypto/asn1/tasn_prn.c", "summary": {"functions": {"count": 21, "covered": 0, "percent": 0}, "instantiations": {"count": 21, "covered": 0, "percent": 0}, "lines": {"count": 426, "covered": 0, "percent": 0}, "regions": {"count": 379, "covered": 0, "notcovered": 379, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/tasn_utl.c", "summary": {"functions": {"count": 10, "covered": 8, "percent": 80}, "instantiations": {"count": 10, "covered": 8, "percent": 80}, "lines": {"count": 152, "covered": 83, "percent": 54.60526315789473}, "regions": {"count": 100, "covered": 57, "notcovered": 43, "percent": 56.99999999999999}}}, {"filename": "/src/openssl/crypto/asn1/x_algor.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 58, "covered": 0, "percent": 0}, "regions": {"count": 53, "covered": 0, "notcovered": 53, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_attrib.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 24, "covered": 0, "percent": 0}, "regions": {"count": 27, "covered": 0, "notcovered": 27, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_bignum.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 40, "covered": 0, "notcovered": 40, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_crl.c", "summary": {"functions": {"count": 17, "covered": 0, "percent": 0}, "instantiations": {"count": 17, "covered": 0, "percent": 0}, "lines": {"count": 331, "covered": 0, "percent": 0}, "regions": {"count": 332, "covered": 0, "notcovered": 332, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_info.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 38, "covered": 34, "percent": 89.47368421052632}, "regions": {"count": 24, "covered": 16, "notcovered": 8, "percent": 66.66666666666666}}}, {"filename": "/src/openssl/crypto/asn1/x_long.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 109, "covered": 0, "percent": 0}, "regions": {"count": 55, "covered": 0, "notcovered": 55, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_name.c", "summary": {"functions": {"count": 12, "covered": 8, "percent": 66.66666666666666}, "instantiations": {"count": 12, "covered": 8, "percent": 66.66666666666666}, "lines": {"count": 345, "covered": 218, "percent": 63.18840579710145}, "regions": {"count": 386, "covered": 205, "notcovered": 181, "percent": 53.10880829015544}}}, {"filename": "/src/openssl/crypto/asn1/x_pkey.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 80, "covered": 0, "percent": 0}, "regions": {"count": 101, "covered": 0, "notcovered": 101, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_pubkey.c", "summary": {"functions": {"count": 13, "covered": 1, "percent": 7.6923076923076925}, "instantiations": {"count": 13, "covered": 1, "percent": 7.6923076923076925}, "lines": {"count": 252, "covered": 7, "percent": 2.7777777777777777}, "regions": {"count": 166, "covered": 4, "notcovered": 162, "percent": 2.4096385542168677}}}, {"filename": "/src/openssl/crypto/asn1/x_req.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 10, "covered": 0, "percent": 0}, "regions": {"count": 9, "covered": 0, "notcovered": 9, "percent": 0}}}, {"filename": "/src/openssl/crypto/asn1/x_x509.c", "summary": {"functions": {"count": 10, "covered": 1, "percent": 10}, "instantiations": {"count": 10, "covered": 1, "percent": 10}, "lines": {"count": 142, "covered": 40, "percent": 28.169014084507044}, "regions": {"count": 76, "covered": 13, "notcovered": 63, "percent": 17.105263157894736}}}, {"filename": "/src/openssl/crypto/asn1/x_x509a.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 88, "covered": 0, "percent": 0}, "regions": {"count": 134, "covered": 0, "notcovered": 134, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_cfb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 21, "covered": 0, "notcovered": 21, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_ecb.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 20, "covered": 0, "percent": 0}, "regions": {"count": 10, "covered": 0, "notcovered": 10, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_enc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 134, "covered": 0, "percent": 0}, "regions": {"count": 94, "covered": 0, "notcovered": 94, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_ofb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 16, "covered": 0, "notcovered": 16, "percent": 0}}}, {"filename": "/src/openssl/crypto/bf/bf_skey.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 51, "covered": 0, "percent": 0}, "regions": {"count": 25, "covered": 0, "notcovered": 25, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/b_dump.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 109, "covered": 0, "percent": 0}, "regions": {"count": 68, "covered": 0, "notcovered": 68, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/b_print.c", "summary": {"functions": {"count": 12, "covered": 6, "percent": 50}, "instantiations": {"count": 12, "covered": 6, "percent": 50}, "lines": {"count": 651, "covered": 254, "percent": 39.01689708141321}, "regions": {"count": 473, "covered": 172, "notcovered": 301, "percent": 36.36363636363637}}}, {"filename": "/src/openssl/crypto/bio/b_sock.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 455, "covered": 0, "percent": 0}, "regions": {"count": 266, "covered": 0, "notcovered": 266, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/bf_buff.c", "summary": {"functions": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "instantiations": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "lines": {"count": 409, "covered": 125, "percent": 30.56234718826406}, "regions": {"count": 302, "covered": 84, "notcovered": 218, "percent": 27.81456953642384}}}, {"filename": "/src/openssl/crypto/bio/bio_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/bio/bio_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/bio_lib.c", "summary": {"functions": {"count": 38, "covered": 15, "percent": 39.473684210526315}, "instantiations": {"count": 38, "covered": 15, "percent": 39.473684210526315}, "lines": {"count": 433, "covered": 194, "percent": 44.80369515011547}, "regions": {"count": 312, "covered": 109, "notcovered": 203, "percent": 34.93589743589743}}}, {"filename": "/src/openssl/crypto/bio/bss_conn.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 456, "covered": 0, "percent": 0}, "regions": {"count": 323, "covered": 0, "notcovered": 323, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/bss_file.c", "summary": {"functions": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "instantiations": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "lines": {"count": 233, "covered": 88, "percent": 37.76824034334764}, "regions": {"count": 193, "covered": 48, "notcovered": 145, "percent": 24.870466321243523}}}, {"filename": "/src/openssl/crypto/bio/bss_mem.c", "summary": {"functions": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "instantiations": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "lines": {"count": 207, "covered": 71, "percent": 34.29951690821256}, "regions": {"count": 140, "covered": 35, "notcovered": 105, "percent": 25}}}, {"filename": "/src/openssl/crypto/bio/bss_null.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 51, "covered": 0, "percent": 0}, "regions": {"count": 38, "covered": 0, "notcovered": 38, "percent": 0}}}, {"filename": "/src/openssl/crypto/bio/bss_sock.c", "summary": {"functions": {"count": 10, "covered": 8, "percent": 80}, "instantiations": {"count": 10, "covered": 8, "percent": 80}, "lines": {"count": 145, "covered": 83, "percent": 57.24137931034483}, "regions": {"count": 88, "covered": 49, "notcovered": 39, "percent": 55.68181818181818}}}, {"filename": "/src/openssl/crypto/bn/asm/x86_64-gcc.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 372, "covered": 0, "percent": 0}, "regions": {"count": 659, "covered": 0, "notcovered": 659, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_add.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 225, "covered": 0, "percent": 0}, "regions": {"count": 132, "covered": 0, "notcovered": 132, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_blind.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 215, "covered": 0, "percent": 0}, "regions": {"count": 173, "covered": 0, "notcovered": 173, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_ctx.c", "summary": {"functions": {"count": 16, "covered": 0, "percent": 0}, "instantiations": {"count": 16, "covered": 0, "percent": 0}, "lines": {"count": 192, "covered": 0, "percent": 0}, "regions": {"count": 110, "covered": 0, "notcovered": 110, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_div.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 237, "covered": 0, "percent": 0}, "regions": {"count": 186, "covered": 0, "notcovered": 186, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/bn/bn_exp.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 1076, "covered": 0, "percent": 0}, "regions": {"count": 895, "covered": 0, "notcovered": 895, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_exp2.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 183, "covered": 0, "percent": 0}, "regions": {"count": 170, "covered": 0, "notcovered": 170, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_gcd.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 567, "covered": 0, "percent": 0}, "regions": {"count": 387, "covered": 0, "notcovered": 387, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_gf2m.c", "summary": {"functions": {"count": 19, "covered": 0, "percent": 0}, "instantiations": {"count": 19, "covered": 0, "percent": 0}, "lines": {"count": 692, "covered": 0, "percent": 0}, "regions": {"count": 551, "covered": 0, "notcovered": 551, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_kron.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 123, "covered": 0, "percent": 0}, "regions": {"count": 93, "covered": 0, "notcovered": 93, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_lib.c", "summary": {"functions": {"count": 30, "covered": 1, "percent": 3.3333333333333335}, "instantiations": {"count": 30, "covered": 1, "percent": 3.3333333333333335}, "lines": {"count": 669, "covered": 3, "percent": 0.4484304932735426}, "regions": {"count": 463, "covered": 3, "notcovered": 460, "percent": 0.6479481641468683}}}, {"filename": "/src/openssl/crypto/bn/bn_mod.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 146, "covered": 0, "percent": 0}, "regions": {"count": 108, "covered": 0, "notcovered": 108, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_mont.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 284, "covered": 0, "percent": 0}, "regions": {"count": 210, "covered": 0, "notcovered": 210, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_mul.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 894, "covered": 0, "percent": 0}, "regions": {"count": 514, "covered": 0, "notcovered": 514, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_nist.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 661, "covered": 0, "percent": 0}, "regions": {"count": 944, "covered": 0, "notcovered": 944, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_prime.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 341, "covered": 0, "percent": 0}, "regions": {"count": 352, "covered": 0, "notcovered": 352, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_prime.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_print.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 309, "covered": 0, "percent": 0}, "regions": {"count": 278, "covered": 0, "notcovered": 278, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_rand.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 161, "covered": 0, "percent": 0}, "regions": {"count": 118, "covered": 0, "notcovered": 118, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_recp.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 169, "covered": 0, "percent": 0}, "regions": {"count": 110, "covered": 0, "notcovered": 110, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_shift.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 155, "covered": 0, "percent": 0}, "regions": {"count": 132, "covered": 0, "notcovered": 132, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_sqr.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 175, "covered": 0, "percent": 0}, "regions": {"count": 90, "covered": 0, "notcovered": 90, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_sqrt.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 341, "covered": 0, "percent": 0}, "regions": {"count": 297, "covered": 0, "notcovered": 297, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/bn_word.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 169, "covered": 0, "percent": 0}, "regions": {"count": 122, "covered": 0, "notcovered": 122, "percent": 0}}}, {"filename": "/src/openssl/crypto/bn/rsaz_exp.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 226, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/buffer/buf_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/buffer/buf_str.c", "summary": {"functions": {"count": 6, "covered": 5, "percent": 83.33333333333334}, "instantiations": {"count": 6, "covered": 5, "percent": 83.33333333333334}, "lines": {"count": 63, "covered": 47, "percent": 74.60317460317461}, "regions": {"count": 49, "covered": 31, "notcovered": 18, "percent": 63.26530612244898}}}, {"filename": "/src/openssl/crypto/buffer/buffer.c", "summary": {"functions": {"count": 5, "covered": 4, "percent": 80}, "instantiations": {"count": 5, "covered": 4, "percent": 80}, "lines": {"count": 109, "covered": 79, "percent": 72.47706422018348}, "regions": {"count": 71, "covered": 43, "notcovered": 28, "percent": 60.56338028169014}}}, {"filename": "/src/openssl/crypto/buildinf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/camellia/cmll_misc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 14, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/camellia/cmll_utl.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 2, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/c_cfb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 21, "covered": 0, "notcovered": 21, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/c_ecb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 17, "covered": 0, "percent": 0}, "regions": {"count": 9, "covered": 0, "notcovered": 9, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/c_enc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 132, "covered": 0, "percent": 0}, "regions": {"count": 160, "covered": 0, "notcovered": 160, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/c_ofb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 16, "covered": 0, "notcovered": 16, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/c_skey.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 92, "covered": 0, "percent": 0}, "regions": {"count": 200, "covered": 0, "notcovered": 200, "percent": 0}}}, {"filename": "/src/openssl/crypto/cast/cast_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/cmac/cm_ameth.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 8, "covered": 0, "percent": 0}, "regions": {"count": 5, "covered": 0, "notcovered": 5, "percent": 0}}}, {"filename": "/src/openssl/crypto/cmac/cm_pmeth.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 73, "covered": 0, "percent": 0}, "regions": {"count": 55, "covered": 0, "notcovered": 55, "percent": 0}}}, {"filename": "/src/openssl/crypto/cmac/cmac.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 166, "covered": 0, "percent": 0}, "regions": {"count": 122, "covered": 0, "notcovered": 122, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_asn1.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 114, "covered": 0, "percent": 0}, "regions": {"count": 80, "covered": 0, "notcovered": 80, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_att.c", "summary": {"functions": {"count": 20, "covered": 0, "percent": 0}, "instantiations": {"count": 20, "covered": 0, "percent": 0}, "lines": {"count": 77, "covered": 0, "percent": 0}, "regions": {"count": 44, "covered": 0, "notcovered": 44, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_dd.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 74, "covered": 0, "percent": 0}, "regions": {"count": 38, "covered": 0, "notcovered": 38, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_enc.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 185, "covered": 0, "percent": 0}, "regions": {"count": 149, "covered": 0, "notcovered": 149, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_env.c", "summary": {"functions": {"count": 28, "covered": 0, "percent": 0}, "instantiations": {"count": 28, "covered": 0, "percent": 0}, "lines": {"count": 795, "covered": 0, "percent": 0}, "regions": {"count": 608, "covered": 0, "notcovered": 608, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/cms/cms_io.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 52, "covered": 0, "percent": 0}, "regions": {"count": 34, "covered": 0, "notcovered": 34, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_kari.c", "summary": {"functions": {"count": 14, "covered": 0, "percent": 0}, "instantiations": {"count": 14, "covered": 0, "percent": 0}, "lines": {"count": 336, "covered": 0, "percent": 0}, "regions": {"count": 299, "covered": 0, "notcovered": 299, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_lib.c", "summary": {"functions": {"count": 28, "covered": 0, "percent": 0}, "instantiations": {"count": 28, "covered": 0, "percent": 0}, "lines": {"count": 505, "covered": 0, "percent": 0}, "regions": {"count": 475, "covered": 0, "notcovered": 475, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_pwri.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 343, "covered": 0, "percent": 0}, "regions": {"count": 216, "covered": 0, "notcovered": 216, "percent": 0}}}, {"filename": "/src/openssl/crypto/cms/cms_sd.c", "summary": {"functions": {"count": 32, "covered": 0, "percent": 0}, "instantiations": {"count": 32, "covered": 0, "percent": 0}, "lines": {"count": 804, "covered": 0, "percent": 0}, "regions": {"count": 841, "covered": 0, "notcovered": 841, "percent": 0}}}, {"filename": "/src/openssl/crypto/comp/c_zlib.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 6, "covered": 5, "percent": 83.33333333333334}, "regions": {"count": 2, "covered": 1, "notcovered": 1, "percent": 50}}}, {"filename": "/src/openssl/crypto/comp/comp_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/comp/comp_lib.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 51, "covered": 0, "percent": 0}, "regions": {"count": 29, "covered": 0, "notcovered": 29, "percent": 0}}}, {"filename": "/src/openssl/crypto/conf/conf_api.c", "summary": {"functions": {"count": 10, "covered": 1, "percent": 10}, "instantiations": {"count": 10, "covered": 1, "percent": 10}, "lines": {"count": 154, "covered": 3, "percent": 1.948051948051948}, "regions": {"count": 218, "covered": 5, "notcovered": 213, "percent": 2.293577981651376}}}, {"filename": "/src/openssl/crypto/conf/conf_def.c", "summary": {"functions": {"count": 19, "covered": 6, "percent": 31.57894736842105}, "instantiations": {"count": 19, "covered": 6, "percent": 31.57894736842105}, "lines": {"count": 537, "covered": 44, "percent": 8.193668528864059}, "regions": {"count": 489, "covered": 25, "notcovered": 464, "percent": 5.112474437627812}}}, {"filename": "/src/openssl/crypto/conf/conf_def.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/conf/conf_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/conf/conf_lib.c", "summary": {"functions": {"count": 22, "covered": 3, "percent": 13.636363636363635}, "instantiations": {"count": 22, "covered": 3, "percent": 13.636363636363635}, "lines": {"count": 228, "covered": 21, "percent": 9.210526315789473}, "regions": {"count": 129, "covered": 11, "notcovered": 118, "percent": 8.527131782945736}}}, {"filename": "/src/openssl/crypto/conf/conf_mall.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 8, "covered": 8, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/conf/conf_mod.c", "summary": {"functions": {"count": 24, "covered": 4, "percent": 16.666666666666664}, "instantiations": {"count": 24, "covered": 4, "percent": 16.666666666666664}, "lines": {"count": 391, "covered": 74, "percent": 18.925831202046037}, "regions": {"count": 317, "covered": 48, "notcovered": 269, "percent": 15.141955835962145}}}, {"filename": "/src/openssl/crypto/constant_time_locl.h", "summary": {"functions": {"count": 14, "covered": 0, "percent": 0}, "instantiations": {"count": 98, "covered": 0, "percent": 0}, "lines": {"count": 42, "covered": 0, "percent": 0}, "regions": {"count": 14, "covered": 0, "notcovered": 14, "percent": 0}}}, {"filename": "/src/openssl/crypto/cpt_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/cryptlib.c", "summary": {"functions": {"count": 36, "covered": 8, "percent": 22.22222222222222}, "instantiations": {"count": 36, "covered": 8, "percent": 22.22222222222222}, "lines": {"count": 370, "covered": 71, "percent": 19.18918918918919}, "regions": {"count": 287, "covered": 28, "notcovered": 259, "percent": 9.75609756097561}}}, {"filename": "/src/openssl/crypto/cryptlib.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/cversion.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 20, "covered": 3, "percent": 15}, "regions": {"count": 26, "covered": 2, "notcovered": 24, "percent": 7.6923076923076925}}}, {"filename": "/src/openssl/crypto/des/cfb64ede.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 158, "covered": 0, "percent": 0}, "regions": {"count": 116, "covered": 0, "notcovered": 116, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/cfb64enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 23, "covered": 0, "notcovered": 23, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/cfb_enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 92, "covered": 0, "percent": 0}, "regions": {"count": 85, "covered": 0, "notcovered": 85, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/des_enc.c", "summary": {"functions": {"count": 5, "covered": 1, "percent": 20}, "instantiations": {"count": 5, "covered": 1, "percent": 20}, "lines": {"count": 267, "covered": 52, "percent": 19.475655430711612}, "regions": {"count": 374, "covered": 83, "notcovered": 291, "percent": 22.192513368983956}}}, {"filename": "/src/openssl/crypto/des/des_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/ecb3_enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 19, "covered": 0, "percent": 0}, "regions": {"count": 9, "covered": 0, "notcovered": 9, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/ecb_enc.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 38, "covered": 17, "percent": 44.73684210526316}, "regions": {"count": 12, "covered": 6, "notcovered": 6, "percent": 50}}}, {"filename": "/src/openssl/crypto/des/ncbc_enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 81, "covered": 0, "percent": 0}, "regions": {"count": 62, "covered": 0, "notcovered": 62, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/ofb64ede.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 44, "covered": 0, "percent": 0}, "regions": {"count": 16, "covered": 0, "notcovered": 16, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/ofb64enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 17, "covered": 0, "notcovered": 17, "percent": 0}}}, {"filename": "/src/openssl/crypto/des/set_key.c", "summary": {"functions": {"count": 7, "covered": 3, "percent": 42.857142857142854}, "instantiations": {"count": 7, "covered": 3, "percent": 42.857142857142854}, "lines": {"count": 107, "covered": 72, "percent": 67.28971962616822}, "regions": {"count": 52, "covered": 27, "notcovered": 25, "percent": 51.92307692307693}}}, {"filename": "/src/openssl/crypto/des/xcbc_enc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 86, "covered": 0, "percent": 0}, "regions": {"count": 66, "covered": 0, "notcovered": 66, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_ameth.c", "summary": {"functions": {"count": 29, "covered": 0, "percent": 0}, "instantiations": {"count": 29, "covered": 0, "percent": 0}, "lines": {"count": 738, "covered": 0, "percent": 0}, "regions": {"count": 595, "covered": 0, "notcovered": 595, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_asn1.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 69, "covered": 0, "percent": 0}, "regions": {"count": 36, "covered": 0, "notcovered": 36, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_check.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 104, "covered": 0, "percent": 0}, "regions": {"count": 162, "covered": 0, "notcovered": 162, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/dh/dh_gen.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 77, "covered": 0, "percent": 0}, "regions": {"count": 71, "covered": 0, "notcovered": 71, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_kdf.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 107, "covered": 0, "percent": 0}, "regions": {"count": 82, "covered": 0, "notcovered": 82, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_key.c", "summary": {"functions": {"count": 9, "covered": 1, "percent": 11.11111111111111}, "instantiations": {"count": 9, "covered": 1, "percent": 11.11111111111111}, "lines": {"count": 172, "covered": 3, "percent": 1.744186046511628}, "regions": {"count": 141, "covered": 1, "notcovered": 140, "percent": 0.7092198581560284}}}, {"filename": "/src/openssl/crypto/dh/dh_lib.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 141, "covered": 0, "percent": 0}, "regions": {"count": 87, "covered": 0, "notcovered": 87, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_pmeth.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 318, "covered": 0, "percent": 0}, "regions": {"count": 223, "covered": 0, "notcovered": 223, "percent": 0}}}, {"filename": "/src/openssl/crypto/dh/dh_rfc5114.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 18, "covered": 0, "percent": 0}, "regions": {"count": 17, "covered": 0, "notcovered": 17, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_ameth.c", "summary": {"functions": {"count": 22, "covered": 0, "percent": 0}, "instantiations": {"count": 22, "covered": 0, "percent": 0}, "lines": {"count": 498, "covered": 0, "percent": 0}, "regions": {"count": 407, "covered": 0, "notcovered": 407, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_asn1.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 68, "covered": 0, "percent": 0}, "regions": {"count": 45, "covered": 0, "notcovered": 45, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/dsa/dsa_gen.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 604, "covered": 0, "percent": 0}, "regions": {"count": 503, "covered": 0, "notcovered": 503, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_key.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 58, "covered": 0, "percent": 0}, "regions": {"count": 48, "covered": 0, "notcovered": 48, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_lib.c", "summary": {"functions": {"count": 12, "covered": 1, "percent": 8.333333333333332}, "instantiations": {"count": 12, "covered": 1, "percent": 8.333333333333332}, "lines": {"count": 197, "covered": 6, "percent": 3.0456852791878175}, "regions": {"count": 121, "covered": 3, "notcovered": 118, "percent": 2.479338842975207}}}, {"filename": "/src/openssl/crypto/dsa/dsa_ossl.c", "summary": {"functions": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "instantiations": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "lines": {"count": 299, "covered": 3, "percent": 1.0033444816053512}, "regions": {"count": 248, "covered": 1, "notcovered": 247, "percent": 0.4032258064516129}}}, {"filename": "/src/openssl/crypto/dsa/dsa_pmeth.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 158, "covered": 0, "percent": 0}, "regions": {"count": 132, "covered": 0, "notcovered": 132, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_sign.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 22, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/dsa/dsa_vrf.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 2, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/dso/dso_dlfcn.c", "summary": {"functions": {"count": 9, "covered": 4, "percent": 44.44444444444444}, "instantiations": {"count": 9, "covered": 4, "percent": 44.44444444444444}, "lines": {"count": 235, "covered": 53, "percent": 22.5531914893617}, "regions": {"count": 212, "covered": 40, "notcovered": 172, "percent": 18.867924528301888}}}, {"filename": "/src/openssl/crypto/dso/dso_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/dso/dso_lib.c", "summary": {"functions": {"count": 21, "covered": 7, "percent": 33.33333333333333}, "instantiations": {"count": 21, "covered": 7, "percent": 33.33333333333333}, "lines": {"count": 321, "covered": 116, "percent": 36.13707165109034}, "regions": {"count": 287, "covered": 96, "notcovered": 191, "percent": 33.44947735191638}}}, {"filename": "/src/openssl/crypto/dso/dso_openssl.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 1, "covered": 1, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ec/ec2_mult.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 318, "covered": 0, "percent": 0}, "regions": {"count": 291, "covered": 0, "notcovered": 291, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec2_oct.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 290, "covered": 0, "percent": 0}, "regions": {"count": 254, "covered": 0, "notcovered": 254, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec2_smpl.c", "summary": {"functions": {"count": 27, "covered": 0, "percent": 0}, "instantiations": {"count": 27, "covered": 0, "percent": 0}, "lines": {"count": 562, "covered": 0, "percent": 0}, "regions": {"count": 412, "covered": 0, "notcovered": 412, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_ameth.c", "summary": {"functions": {"count": 27, "covered": 0, "percent": 0}, "instantiations": {"count": 27, "covered": 0, "percent": 0}, "lines": {"count": 795, "covered": 0, "percent": 0}, "regions": {"count": 678, "covered": 0, "notcovered": 678, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_asn1.c", "summary": {"functions": {"count": 17, "covered": 0, "percent": 0}, "instantiations": {"count": 17, "covered": 0, "percent": 0}, "lines": {"count": 1034, "covered": 0, "percent": 0}, "regions": {"count": 910, "covered": 0, "notcovered": 910, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_curve.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 160, "covered": 0, "percent": 0}, "regions": {"count": 137, "covered": 0, "notcovered": 137, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_cvt.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 81, "covered": 0, "percent": 0}, "regions": {"count": 33, "covered": 0, "notcovered": 33, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ec/ec_key.c", "summary": {"functions": {"count": 26, "covered": 0, "percent": 0}, "instantiations": {"count": 26, "covered": 0, "percent": 0}, "lines": {"count": 412, "covered": 0, "percent": 0}, "regions": {"count": 305, "covered": 0, "notcovered": 305, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_lib.c", "summary": {"functions": {"count": 60, "covered": 0, "percent": 0}, "instantiations": {"count": 60, "covered": 0, "percent": 0}, "lines": {"count": 868, "covered": 0, "percent": 0}, "regions": {"count": 672, "covered": 0, "notcovered": 672, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_mult.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 751, "covered": 0, "percent": 0}, "regions": {"count": 513, "covered": 0, "notcovered": 513, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_oct.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 87, "covered": 0, "percent": 0}, "regions": {"count": 88, "covered": 0, "notcovered": 88, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_pmeth.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 336, "covered": 0, "percent": 0}, "regions": {"count": 282, "covered": 0, "notcovered": 282, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ec_print.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 104, "covered": 0, "percent": 0}, "regions": {"count": 66, "covered": 0, "notcovered": 66, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/eck_prn.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 289, "covered": 0, "percent": 0}, "regions": {"count": 259, "covered": 0, "notcovered": 259, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_mont.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 207, "covered": 0, "percent": 0}, "regions": {"count": 106, "covered": 0, "notcovered": 106, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_nist.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 130, "covered": 0, "percent": 0}, "regions": {"count": 84, "covered": 0, "notcovered": 84, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_nistp224.c", "summary": {"functions": {"count": 41, "covered": 0, "percent": 0}, "instantiations": {"count": 41, "covered": 0, "percent": 0}, "lines": {"count": 1273, "covered": 0, "percent": 0}, "regions": {"count": 405, "covered": 0, "notcovered": 405, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_nistp521.c", "summary": {"functions": {"count": 42, "covered": 0, "percent": 0}, "instantiations": {"count": 42, "covered": 0, "percent": 0}, "lines": {"count": 1596, "covered": 0, "percent": 0}, "regions": {"count": 395, "covered": 0, "notcovered": 395, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_nistputil.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 73, "covered": 0, "percent": 0}, "regions": {"count": 63, "covered": 0, "notcovered": 63, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_nistz256.c", "summary": {"functions": {"count": 21, "covered": 0, "percent": 0}, "instantiations": {"count": 21, "covered": 0, "percent": 0}, "lines": {"count": 886, "covered": 0, "percent": 0}, "regions": {"count": 476, "covered": 0, "notcovered": 476, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_oct.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 347, "covered": 0, "percent": 0}, "regions": {"count": 294, "covered": 0, "notcovered": 294, "percent": 0}}}, {"filename": "/src/openssl/crypto/ec/ecp_smpl.c", "summary": {"functions": {"count": 28, "covered": 0, "percent": 0}, "instantiations": {"count": 28, "covered": 0, "percent": 0}, "lines": {"count": 1244, "covered": 0, "percent": 0}, "regions": {"count": 938, "covered": 0, "notcovered": 938, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdh/ech_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ecdh/ech_kdf.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 44, "covered": 0, "percent": 0}, "regions": {"count": 38, "covered": 0, "notcovered": 38, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdh/ech_key.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 6, "covered": 0, "percent": 0}, "regions": {"count": 4, "covered": 0, "notcovered": 4, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdh/ech_lib.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 129, "covered": 0, "percent": 0}, "regions": {"count": 61, "covered": 0, "notcovered": 61, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdh/ech_ossl.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 112, "covered": 0, "percent": 0}, "regions": {"count": 86, "covered": 0, "notcovered": 86, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_lib.c", "summary": {"functions": {"count": 21, "covered": 0, "percent": 0}, "instantiations": {"count": 21, "covered": 0, "percent": 0}, "lines": {"count": 209, "covered": 0, "percent": 0}, "regions": {"count": 99, "covered": 0, "notcovered": 99, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_ossl.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 383, "covered": 0, "percent": 0}, "regions": {"count": 337, "covered": 0, "notcovered": 337, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_sign.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 30, "covered": 0, "percent": 0}, "regions": {"count": 14, "covered": 0, "notcovered": 14, "percent": 0}}}, {"filename": "/src/openssl/crypto/ecdsa/ecs_vrf.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 31, "covered": 0, "percent": 0}, "regions": {"count": 20, "covered": 0, "notcovered": 20, "percent": 0}}}, {"filename": "/src/openssl/crypto/engine/eng_all.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 41, "covered": 41, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/engine/eng_cnf.c", "summary": {"functions": {"count": 5, "covered": 1, "percent": 20}, "instantiations": {"count": 5, "covered": 1, "percent": 20}, "lines": {"count": 49, "covered": 4, "percent": 8.16326530612245}, "regions": {"count": 59, "covered": 1, "notcovered": 58, "percent": 1.694915254237288}}}, {"filename": "/src/openssl/crypto/engine/eng_ctrl.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 287, "covered": 0, "percent": 0}, "regions": {"count": 254, "covered": 0, "notcovered": 254, "percent": 0}}}, {"filename": "/src/openssl/crypto/engine/eng_dyn.c", "summary": {"functions": {"count": 11, "covered": 2, "percent": 18.181818181818183}, "instantiations": {"count": 11, "covered": 2, "percent": 18.181818181818183}, "lines": {"count": 360, "covered": 28, "percent": 7.777777777777778}, "regions": {"count": 275, "covered": 21, "notcovered": 254, "percent": 7.636363636363637}}}, {"filename": "/src/openssl/crypto/engine/eng_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/engine/eng_fat.c", "summary": {"functions": {"count": 4, "covered": 2, "percent": 50}, "instantiations": {"count": 4, "covered": 2, "percent": 50}, "lines": {"count": 75, "covered": 30, "percent": 40}, "regions": {"count": 75, "covered": 8, "notcovered": 67, "percent": 10.666666666666668}}}, {"filename": "/src/openssl/crypto/engine/eng_init.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 76, "covered": 12, "percent": 15.789473684210526}, "regions": {"count": 59, "covered": 6, "notcovered": 53, "percent": 10.16949152542373}}}, {"filename": "/src/openssl/crypto/engine/eng_lib.c", "summary": {"functions": {"count": 30, "covered": 15, "percent": 50}, "instantiations": {"count": 30, "covered": 15, "percent": 50}, "lines": {"count": 186, "covered": 86, "percent": 46.236559139784944}, "regions": {"count": 113, "covered": 59, "notcovered": 54, "percent": 52.21238938053098}}}, {"filename": "/src/openssl/crypto/engine/eng_list.c", "summary": {"functions": {"count": 12, "covered": 4, "percent": 33.33333333333333}, "instantiations": {"count": 12, "covered": 4, "percent": 33.33333333333333}, "lines": {"count": 276, "covered": 72, "percent": 26.08695652173913}, "regions": {"count": 204, "covered": 55, "notcovered": 149, "percent": 26.96078431372549}}}, {"filename": "/src/openssl/crypto/engine/eng_pkey.c", "summary": {"functions": {"count": 9, "covered": 2, "percent": 22.22222222222222}, "instantiations": {"count": 9, "covered": 2, "percent": 22.22222222222222}, "lines": {"count": 99, "covered": 8, "percent": 8.080808080808081}, "regions": {"count": 97, "covered": 2, "notcovered": 95, "percent": 2.0618556701030926}}}, {"filename": "/src/openssl/crypto/engine/eng_rdrand.c", "summary": {"functions": {"count": 6, "covered": 3, "percent": 50}, "instantiations": {"count": 6, "covered": 3, "percent": 50}, "lines": {"count": 58, "covered": 26, "percent": 44.827586206896555}, "regions": {"count": 41, "covered": 22, "notcovered": 19, "percent": 53.65853658536586}}}, {"filename": "/src/openssl/crypto/engine/eng_table.c", "summary": {"functions": {"count": 13, "covered": 6, "percent": 46.15384615384615}, "instantiations": {"count": 13, "covered": 6, "percent": 46.15384615384615}, "lines": {"count": 186, "covered": 109, "percent": 58.602150537634415}, "regions": {"count": 232, "covered": 117, "notcovered": 115, "percent": 50.43103448275862}}}, {"filename": "/src/openssl/crypto/engine/tb_asnmth.c", "summary": {"functions": {"count": 13, "covered": 2, "percent": 15.384615384615385}, "instantiations": {"count": 13, "covered": 2, "percent": 15.384615384615385}, "lines": {"count": 119, "covered": 18, "percent": 15.126050420168067}, "regions": {"count": 80, "covered": 9, "notcovered": 71, "percent": 11.25}}}, {"filename": "/src/openssl/crypto/engine/tb_cipher.c", "summary": {"functions": {"count": 9, "covered": 2, "percent": 22.22222222222222}, "instantiations": {"count": 9, "covered": 2, "percent": 22.22222222222222}, "lines": {"count": 53, "covered": 15, "percent": 28.30188679245283}, "regions": {"count": 29, "covered": 7, "notcovered": 22, "percent": 24.137931034482758}}}, {"filename": "/src/openssl/crypto/engine/tb_dh.c", "summary": {"functions": {"count": 8, "covered": 2, "percent": 25}, "instantiations": {"count": 8, "covered": 2, "percent": 25}, "lines": {"count": 36, "covered": 11, "percent": 30.555555555555557}, "regions": {"count": 17, "covered": 5, "notcovered": 12, "percent": 29.411764705882355}}}, {"filename": "/src/openssl/crypto/engine/tb_digest.c", "summary": {"functions": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "instantiations": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "lines": {"count": 53, "covered": 18, "percent": 33.9622641509434}, "regions": {"count": 29, "covered": 8, "notcovered": 21, "percent": 27.586206896551722}}}, {"filename": "/src/openssl/crypto/engine/tb_dsa.c", "summary": {"functions": {"count": 8, "covered": 2, "percent": 25}, "instantiations": {"count": 8, "covered": 2, "percent": 25}, "lines": {"count": 36, "covered": 11, "percent": 30.555555555555557}, "regions": {"count": 17, "covered": 5, "notcovered": 12, "percent": 29.411764705882355}}}, {"filename": "/src/openssl/crypto/engine/tb_ecdh.c", "summary": {"functions": {"count": 8, "covered": 1, "percent": 12.5}, "instantiations": {"count": 8, "covered": 1, "percent": 12.5}, "lines": {"count": 36, "covered": 4, "percent": 11.11111111111111}, "regions": {"count": 17, "covered": 3, "notcovered": 14, "percent": 17.647058823529413}}}, {"filename": "/src/openssl/crypto/engine/tb_ecdsa.c", "summary": {"functions": {"count": 8, "covered": 1, "percent": 12.5}, "instantiations": {"count": 8, "covered": 1, "percent": 12.5}, "lines": {"count": 36, "covered": 4, "percent": 11.11111111111111}, "regions": {"count": 17, "covered": 3, "notcovered": 14, "percent": 17.647058823529413}}}, {"filename": "/src/openssl/crypto/engine/tb_pkmeth.c", "summary": {"functions": {"count": 10, "covered": 2, "percent": 20}, "instantiations": {"count": 10, "covered": 2, "percent": 20}, "lines": {"count": 68, "covered": 15, "percent": 22.058823529411764}, "regions": {"count": 37, "covered": 7, "notcovered": 30, "percent": 18.91891891891892}}}, {"filename": "/src/openssl/crypto/engine/tb_rand.c", "summary": {"functions": {"count": 8, "covered": 3, "percent": 37.5}, "instantiations": {"count": 8, "covered": 3, "percent": 37.5}, "lines": {"count": 36, "covered": 14, "percent": 38.88888888888889}, "regions": {"count": 17, "covered": 6, "notcovered": 11, "percent": 35.294117647058826}}}, {"filename": "/src/openssl/crypto/engine/tb_rsa.c", "summary": {"functions": {"count": 8, "covered": 2, "percent": 25}, "instantiations": {"count": 8, "covered": 2, "percent": 25}, "lines": {"count": 36, "covered": 11, "percent": 30.555555555555557}, "regions": {"count": 17, "covered": 5, "notcovered": 12, "percent": 29.411764705882355}}}, {"filename": "/src/openssl/crypto/err/err.c", "summary": {"functions": {"count": 54, "covered": 37, "percent": 68.51851851851852}, "instantiations": {"count": 54, "covered": 37, "percent": 68.51851851851852}, "lines": {"count": 660, "covered": 486, "percent": 73.63636363636363}, "regions": {"count": 598, "covered": 423, "notcovered": 175, "percent": 70.73578595317726}}}, {"filename": "/src/openssl/crypto/err/err_all.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 49, "covered": 49, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/err/err_prn.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 36, "covered": 0, "percent": 0}, "regions": {"count": 14, "covered": 0, "notcovered": 14, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/bio_b64.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 446, "covered": 0, "percent": 0}, "regions": {"count": 321, "covered": 0, "notcovered": 321, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/bio_enc.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 296, "covered": 0, "percent": 0}, "regions": {"count": 183, "covered": 0, "notcovered": 183, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/bio_md.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 157, "covered": 0, "percent": 0}, "regions": {"count": 115, "covered": 0, "notcovered": 115, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/c_all.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 10, "covered": 10, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/evp/c_allc.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 176, "covered": 176, "percent": 100}, "regions": {"count": 115, "covered": 115, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/evp/c_alld.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 49, "covered": 49, "percent": 100}, "regions": {"count": 28, "covered": 28, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/evp/digest.c", "summary": {"functions": {"count": 12, "covered": 5, "percent": 41.66666666666667}, "instantiations": {"count": 12, "covered": 5, "percent": 41.66666666666667}, "lines": {"count": 221, "covered": 78, "percent": 35.294117647058826}, "regions": {"count": 167, "covered": 56, "notcovered": 111, "percent": 33.532934131736525}}}, {"filename": "/src/openssl/crypto/evp/e_aes.c", "summary": {"functions": {"count": 33, "covered": 5, "percent": 15.151515151515152}, "instantiations": {"count": 60, "covered": 32, "percent": 53.333333333333336}, "lines": {"count": 939, "covered": 13, "percent": 1.384451544195953}, "regions": {"count": 678, "covered": 9, "notcovered": 669, "percent": 1.3274336283185841}}}, {"filename": "/src/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c", "summary": {"functions": {"count": 7, "covered": 2, "percent": 28.57142857142857}, "instantiations": {"count": 7, "covered": 2, "percent": 28.57142857142857}, "lines": {"count": 641, "covered": 8, "percent": 1.24804992199688}, "regions": {"count": 310, "covered": 6, "notcovered": 304, "percent": 1.935483870967742}}}, {"filename": "/src/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c", "summary": {"functions": {"count": 7, "covered": 2, "percent": 28.57142857142857}, "instantiations": {"count": 7, "covered": 2, "percent": 28.57142857142857}, "lines": {"count": 682, "covered": 8, "percent": 1.1730205278592376}, "regions": {"count": 317, "covered": 8, "notcovered": 309, "percent": 2.5236593059936907}}}, {"filename": "/src/openssl/crypto/evp/e_bf.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 4, "covered": 0, "percent": 0}, "regions": {"count": 3, "covered": 0, "notcovered": 3, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_camellia.c", "summary": {"functions": {"count": 8, "covered": 1, "percent": 12.5}, "instantiations": {"count": 25, "covered": 18, "percent": 72}, "lines": {"count": 92, "covered": 2, "percent": 2.1739130434782608}, "regions": {"count": 51, "covered": 1, "notcovered": 50, "percent": 1.9607843137254901}}}, {"filename": "/src/openssl/crypto/evp/e_cast.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 4, "covered": 0, "percent": 0}, "regions": {"count": 3, "covered": 0, "notcovered": 3, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_des.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 110, "covered": 0, "percent": 0}, "regions": {"count": 75, "covered": 0, "notcovered": 75, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_des3.c", "summary": {"functions": {"count": 15, "covered": 3, "percent": 20}, "instantiations": {"count": 15, "covered": 3, "percent": 20}, "lines": {"count": 227, "covered": 9, "percent": 3.9647577092511015}, "regions": {"count": 175, "covered": 3, "notcovered": 172, "percent": 1.7142857142857144}}}, {"filename": "/src/openssl/crypto/evp/e_idea.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 23, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_null.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 12, "covered": 0, "percent": 0}, "regions": {"count": 5, "covered": 0, "notcovered": 5, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_rc2.c", "summary": {"functions": {"count": 8, "covered": 2, "percent": 25}, "instantiations": {"count": 8, "covered": 2, "percent": 25}, "lines": {"count": 90, "covered": 6, "percent": 6.666666666666667}, "regions": {"count": 70, "covered": 2, "notcovered": 68, "percent": 2.857142857142857}}}, {"filename": "/src/openssl/crypto/evp/e_rc4.c", "summary": {"functions": {"count": 4, "covered": 2, "percent": 50}, "instantiations": {"count": 4, "covered": 2, "percent": 50}, "lines": {"count": 14, "covered": 6, "percent": 42.857142857142854}, "regions": {"count": 6, "covered": 2, "notcovered": 4, "percent": 33.33333333333333}}}, {"filename": "/src/openssl/crypto/evp/e_rc4_hmac_md5.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 184, "covered": 3, "percent": 1.6304347826086956}, "regions": {"count": 96, "covered": 1, "notcovered": 95, "percent": 1.0416666666666665}}}, {"filename": "/src/openssl/crypto/evp/e_rc5.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 32, "covered": 0, "percent": 0}, "regions": {"count": 30, "covered": 0, "notcovered": 30, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_seed.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 4, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/e_xcbc_d.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 27, "covered": 3, "percent": 11.11111111111111}, "regions": {"count": 21, "covered": 1, "notcovered": 20, "percent": 4.761904761904762}}}, {"filename": "/src/openssl/crypto/evp/encode.c", "summary": {"functions": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "instantiations": {"count": 9, "covered": 5, "percent": 55.55555555555556}, "lines": {"count": 253, "covered": 112, "percent": 44.26877470355731}, "regions": {"count": 159, "covered": 86, "notcovered": 73, "percent": 54.088050314465406}}}, {"filename": "/src/openssl/crypto/evp/evp_cnf.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 35, "covered": 3, "percent": 8.571428571428571}, "regions": {"count": 35, "covered": 1, "notcovered": 34, "percent": 2.857142857142857}}}, {"filename": "/src/openssl/crypto/evp/evp_enc.c", "summary": {"functions": {"count": 24, "covered": 0, "percent": 0}, "instantiations": {"count": 24, "covered": 0, "percent": 0}, "lines": {"count": 516, "covered": 0, "percent": 0}, "regions": {"count": 406, "covered": 0, "notcovered": 406, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/evp_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/evp/evp_key.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 111, "covered": 0, "percent": 0}, "regions": {"count": 102, "covered": 0, "notcovered": 102, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/evp_lib.c", "summary": {"functions": {"count": 31, "covered": 4, "percent": 12.903225806451612}, "instantiations": {"count": 31, "covered": 4, "percent": 12.903225806451612}, "lines": {"count": 217, "covered": 13, "percent": 5.990783410138248}, "regions": {"count": 150, "covered": 8, "notcovered": 142, "percent": 5.333333333333334}}}, {"filename": "/src/openssl/crypto/evp/evp_locl.h", "summary": {"functions": {"count": 5, "covered": 1, "percent": 20}, "instantiations": {"count": 63, "covered": 38, "percent": 60.317460317460316}, "lines": {"count": 48, "covered": 1, "percent": 2.083333333333333}, "regions": {"count": 47, "covered": 1, "notcovered": 46, "percent": 2.127659574468085}}}, {"filename": "/src/openssl/crypto/evp/evp_pbe.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 137, "covered": 0, "percent": 0}, "regions": {"count": 123, "covered": 0, "notcovered": 123, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/evp_pkey.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 125, "covered": 0, "percent": 0}, "regions": {"count": 83, "covered": 0, "notcovered": 83, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/m_dss.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_dss1.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_ecdsa.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_md4.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_md5.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_mdc2.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_ripemd.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_sha.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/m_sha1.c", "summary": {"functions": {"count": 16, "covered": 8, "percent": 50}, "instantiations": {"count": 16, "covered": 8, "percent": 50}, "lines": {"count": 48, "covered": 24, "percent": 50}, "regions": {"count": 16, "covered": 8, "notcovered": 8, "percent": 50}}}, {"filename": "/src/openssl/crypto/evp/m_sigver.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 122, "covered": 0, "percent": 0}, "regions": {"count": 118, "covered": 0, "notcovered": 118, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/m_wp.c", "summary": {"functions": {"count": 4, "covered": 1, "percent": 25}, "instantiations": {"count": 4, "covered": 1, "percent": 25}, "lines": {"count": 12, "covered": 3, "percent": 25}, "regions": {"count": 4, "covered": 1, "notcovered": 3, "percent": 25}}}, {"filename": "/src/openssl/crypto/evp/names.c", "summary": {"functions": {"count": 11, "covered": 4, "percent": 36.36363636363637}, "instantiations": {"count": 11, "covered": 4, "percent": 36.36363636363637}, "lines": {"count": 110, "covered": 51, "percent": 46.36363636363636}, "regions": {"count": 55, "covered": 30, "notcovered": 25, "percent": 54.54545454545454}}}, {"filename": "/src/openssl/crypto/evp/p5_crpt.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 75, "covered": 0, "percent": 0}, "regions": {"count": 66, "covered": 0, "notcovered": 66, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/p5_crpt2.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 200, "covered": 0, "percent": 0}, "regions": {"count": 138, "covered": 0, "notcovered": 138, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/p_lib.c", "summary": {"functions": {"count": 31, "covered": 1, "percent": 3.225806451612903}, "instantiations": {"count": 31, "covered": 1, "percent": 3.225806451612903}, "lines": {"count": 291, "covered": 5, "percent": 1.718213058419244}, "regions": {"count": 242, "covered": 3, "notcovered": 239, "percent": 1.2396694214876034}}}, {"filename": "/src/openssl/crypto/evp/p_sign.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 55, "covered": 0, "percent": 0}, "regions": {"count": 50, "covered": 0, "notcovered": 50, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/p_verify.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 50, "covered": 0, "percent": 0}, "regions": {"count": 47, "covered": 0, "notcovered": 47, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/pmeth_fn.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 229, "covered": 0, "percent": 0}, "regions": {"count": 355, "covered": 0, "notcovered": 355, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/pmeth_gn.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 130, "covered": 0, "percent": 0}, "regions": {"count": 119, "covered": 0, "notcovered": 119, "percent": 0}}}, {"filename": "/src/openssl/crypto/evp/pmeth_lib.c", "summary": {"functions": {"count": 50, "covered": 13, "percent": 26}, "instantiations": {"count": 50, "covered": 13, "percent": 26}, "lines": {"count": 420, "covered": 57, "percent": 13.571428571428571}, "regions": {"count": 296, "covered": 17, "notcovered": 279, "percent": 5.743243243243244}}}, {"filename": "/src/openssl/crypto/ex_data.c", "summary": {"functions": {"count": 24, "covered": 13, "percent": 54.166666666666664}, "instantiations": {"count": 24, "covered": 13, "percent": 54.166666666666664}, "lines": {"count": 296, "covered": 160, "percent": 54.054054054054056}, "regions": {"count": 436, "covered": 224, "notcovered": 212, "percent": 51.37614678899083}}}, {"filename": "/src/openssl/crypto/hmac/hm_ameth.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 52, "covered": 0, "percent": 0}, "regions": {"count": 32, "covered": 0, "notcovered": 32, "percent": 0}}}, {"filename": "/src/openssl/crypto/hmac/hm_pmeth.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 118, "covered": 0, "percent": 0}, "regions": {"count": 75, "covered": 0, "notcovered": 75, "percent": 0}}}, {"filename": "/src/openssl/crypto/hmac/hmac.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 138, "covered": 0, "percent": 0}, "regions": {"count": 124, "covered": 0, "notcovered": 124, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/i_cbc.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 105, "covered": 0, "percent": 0}, "regions": {"count": 202, "covered": 0, "notcovered": 202, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/i_cfb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 20, "covered": 0, "notcovered": 20, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/i_ecb.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 20, "covered": 0, "percent": 0}, "regions": {"count": 9, "covered": 0, "notcovered": 9, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/i_ofb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/i_skey.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 93, "covered": 0, "percent": 0}, "regions": {"count": 33, "covered": 0, "notcovered": 33, "percent": 0}}}, {"filename": "/src/openssl/crypto/idea/idea_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/lhash/lhash.c", "summary": {"functions": {"count": 13, "covered": 11, "percent": 84.61538461538461}, "instantiations": {"count": 13, "covered": 11, "percent": 84.61538461538461}, "lines": {"count": 310, "covered": 239, "percent": 77.09677419354838}, "regions": {"count": 136, "covered": 97, "notcovered": 39, "percent": 71.32352941176471}}}, {"filename": "/src/openssl/crypto/md32_common.h", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 18, "covered": 6, "percent": 33.33333333333333}, "lines": {"count": 91, "covered": 87, "percent": 95.6043956043956}, "regions": {"count": 84, "covered": 58, "notcovered": 26, "percent": 69.04761904761905}}}, {"filename": "/src/openssl/crypto/md4/md4_dgst.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 112, "covered": 112, "percent": 100}, "regions": {"count": 184, "covered": 184, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/md4/md4_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/md5/md5_dgst.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 8, "covered": 8, "percent": 100}, "regions": {"count": 5, "covered": 5, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/md5/md5_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/mdc2/mdc2dgst.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 90, "covered": 0, "percent": 0}, "regions": {"count": 41, "covered": 0, "notcovered": 41, "percent": 0}}}, {"filename": "/src/openssl/crypto/mem.c", "summary": {"functions": {"count": 23, "covered": 5, "percent": 21.73913043478261}, "instantiations": {"count": 23, "covered": 5, "percent": 21.73913043478261}, "lines": {"count": 234, "covered": 42, "percent": 17.94871794871795}, "regions": {"count": 170, "covered": 19, "notcovered": 151, "percent": 11.176470588235295}}}, {"filename": "/src/openssl/crypto/mem_dbg.c", "summary": {"functions": {"count": 21, "covered": 4, "percent": 19.047619047619047}, "instantiations": {"count": 21, "covered": 4, "percent": 19.047619047619047}, "lines": {"count": 490, "covered": 45, "percent": 9.183673469387756}, "regions": {"count": 403, "covered": 25, "notcovered": 378, "percent": 6.20347394540943}}}, {"filename": "/src/openssl/crypto/modes/cbc128.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 135, "covered": 0, "percent": 0}, "regions": {"count": 83, "covered": 0, "notcovered": 83, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/ccm128.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 359, "covered": 0, "percent": 0}, "regions": {"count": 139, "covered": 0, "notcovered": 139, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/cfb128.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 164, "covered": 0, "percent": 0}, "regions": {"count": 85, "covered": 0, "notcovered": 85, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/ctr128.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 165, "covered": 0, "percent": 0}, "regions": {"count": 64, "covered": 0, "notcovered": 64, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/gcm128.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 732, "covered": 0, "percent": 0}, "regions": {"count": 376, "covered": 0, "notcovered": 376, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/modes_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/ofb128.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 55, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/wrap128.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 62, "covered": 0, "percent": 0}, "regions": {"count": 41, "covered": 0, "notcovered": 41, "percent": 0}}}, {"filename": "/src/openssl/crypto/modes/xts128.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 120, "covered": 0, "percent": 0}, "regions": {"count": 35, "covered": 0, "notcovered": 35, "percent": 0}}}, {"filename": "/src/openssl/crypto/o_init.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 5, "covered": 5, "percent": 100}, "regions": {"count": 4, "covered": 4, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/o_time.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 122, "covered": 0, "percent": 0}, "regions": {"count": 50, "covered": 0, "notcovered": 50, "percent": 0}}}, {"filename": "/src/openssl/crypto/objects/o_names.c", "summary": {"functions": {"count": 15, "covered": 5, "percent": 33.33333333333333}, "instantiations": {"count": 15, "covered": 5, "percent": 33.33333333333333}, "lines": {"count": 258, "covered": 87, "percent": 33.72093023255814}, "regions": {"count": 296, "covered": 75, "notcovered": 221, "percent": 25.33783783783784}}}, {"filename": "/src/openssl/crypto/objects/obj_dat.c", "summary": {"functions": {"count": 25, "covered": 8, "percent": 32}, "instantiations": {"count": 25, "covered": 8, "percent": 32}, "lines": {"count": 567, "covered": 87, "percent": 15.343915343915343}, "regions": {"count": 541, "covered": 80, "notcovered": 461, "percent": 14.78743068391867}}}, {"filename": "/src/openssl/crypto/objects/obj_dat.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/objects/obj_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/objects/obj_lib.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 68, "covered": 31, "percent": 45.588235294117645}, "regions": {"count": 51, "covered": 20, "notcovered": 31, "percent": 39.21568627450981}}}, {"filename": "/src/openssl/crypto/objects/obj_xref.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 108, "covered": 0, "percent": 0}, "regions": {"count": 133, "covered": 0, "notcovered": 133, "percent": 0}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_cl.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 219, "covered": 0, "percent": 0}, "regions": {"count": 209, "covered": 0, "notcovered": 209, "percent": 0}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_ht.c", "summary": {"functions": {"count": 14, "covered": 0, "percent": 0}, "instantiations": {"count": 14, "covered": 0, "percent": 0}, "lines": {"count": 402, "covered": 0, "percent": 0}, "regions": {"count": 328, "covered": 0, "notcovered": 328, "percent": 0}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_lib.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 192, "covered": 0, "percent": 0}, "regions": {"count": 118, "covered": 0, "notcovered": 118, "percent": 0}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_prn.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 210, "covered": 0, "percent": 0}, "regions": {"count": 226, "covered": 0, "notcovered": 226, "percent": 0}}}, {"filename": "/src/openssl/crypto/ocsp/ocsp_vfy.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 338, "covered": 0, "percent": 0}, "regions": {"count": 348, "covered": 0, "notcovered": 348, "percent": 0}}}, {"filename": "/src/openssl/crypto/pem/pem_all.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 72, "covered": 0, "percent": 0}, "regions": {"count": 33, "covered": 0, "notcovered": 33, "percent": 0}}}, {"filename": "/src/openssl/crypto/pem/pem_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/pem/pem_info.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 310, "covered": 86, "percent": 27.741935483870968}, "regions": {"count": 294, "covered": 72, "notcovered": 222, "percent": 24.489795918367346}}}, {"filename": "/src/openssl/crypto/pem/pem_lib.c", "summary": {"functions": {"count": 14, "covered": 3, "percent": 21.428571428571427}, "instantiations": {"count": 14, "covered": 3, "percent": 21.428571428571427}, "lines": {"count": 605, "covered": 118, "percent": 19.50413223140496}, "regions": {"count": 476, "covered": 71, "notcovered": 405, "percent": 14.915966386554622}}}, {"filename": "/src/openssl/crypto/pem/pem_oth.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 15, "covered": 0, "percent": 0}, "regions": {"count": 8, "covered": 0, "notcovered": 8, "percent": 0}}}, {"filename": "/src/openssl/crypto/pem/pem_pk8.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 124, "covered": 0, "percent": 0}, "regions": {"count": 81, "covered": 0, "notcovered": 81, "percent": 0}}}, {"filename": "/src/openssl/crypto/pem/pem_pkey.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 163, "covered": 0, "percent": 0}, "regions": {"count": 116, "covered": 0, "notcovered": 116, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_add.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 158, "covered": 0, "percent": 0}, "regions": {"count": 120, "covered": 0, "notcovered": 120, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_attr.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 62, "covered": 0, "percent": 0}, "regions": {"count": 73, "covered": 0, "notcovered": 73, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_crpt.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 49, "covered": 0, "percent": 0}, "regions": {"count": 40, "covered": 0, "notcovered": 40, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_decr.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 92, "covered": 0, "percent": 0}, "regions": {"count": 66, "covered": 0, "notcovered": 66, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_key.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 117, "covered": 0, "percent": 0}, "regions": {"count": 117, "covered": 0, "notcovered": 117, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_kiss.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 210, "covered": 0, "percent": 0}, "regions": {"count": 269, "covered": 0, "notcovered": 269, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_mutl.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 114, "covered": 0, "percent": 0}, "regions": {"count": 111, "covered": 0, "notcovered": 111, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_p8d.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 5, "covered": 0, "percent": 0}, "regions": {"count": 2, "covered": 0, "notcovered": 2, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_p8e.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 38, "covered": 0, "percent": 0}, "regions": {"count": 26, "covered": 0, "notcovered": 26, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/p12_utl.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 76, "covered": 0, "percent": 0}, "regions": {"count": 69, "covered": 0, "notcovered": 69, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs12/pk12err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/pkcs7/pk7_asn1.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 38, "covered": 0, "percent": 0}, "regions": {"count": 27, "covered": 0, "notcovered": 27, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs7/pk7_attr.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 82, "covered": 0, "percent": 0}, "regions": {"count": 82, "covered": 0, "notcovered": 82, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs7/pk7_doit.c", "summary": {"functions": {"count": 24, "covered": 0, "percent": 0}, "instantiations": {"count": 24, "covered": 0, "percent": 0}, "lines": {"count": 1136, "covered": 0, "percent": 0}, "regions": {"count": 1049, "covered": 0, "notcovered": 1049, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs7/pk7_lib.c", "summary": {"functions": {"count": 20, "covered": 0, "percent": 0}, "instantiations": {"count": 20, "covered": 0, "percent": 0}, "lines": {"count": 540, "covered": 0, "percent": 0}, "regions": {"count": 449, "covered": 0, "notcovered": 449, "percent": 0}}}, {"filename": "/src/openssl/crypto/pkcs7/pkcs7err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/pqueue/pqueue.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 137, "covered": 0, "percent": 0}, "regions": {"count": 69, "covered": 0, "notcovered": 69, "percent": 0}}}, {"filename": "/src/openssl/crypto/rand/md_rand.c", "summary": {"functions": {"count": 8, "covered": 5, "percent": 62.5}, "instantiations": {"count": 8, "covered": 5, "percent": 62.5}, "lines": {"count": 405, "covered": 349, "percent": 86.17283950617283}, "regions": {"count": 273, "covered": 231, "notcovered": 42, "percent": 84.61538461538461}}}, {"filename": "/src/openssl/crypto/rand/rand_egd.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 148, "covered": 0, "percent": 0}, "regions": {"count": 75, "covered": 0, "notcovered": 75, "percent": 0}}}, {"filename": "/src/openssl/crypto/rand/rand_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/rand/rand_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/rand/rand_lib.c", "summary": {"functions": {"count": 9, "covered": 4, "percent": 44.44444444444444}, "instantiations": {"count": 9, "covered": 4, "percent": 44.44444444444444}, "lines": {"count": 79, "covered": 25, "percent": 31.645569620253166}, "regions": {"count": 55, "covered": 21, "notcovered": 34, "percent": 38.18181818181819}}}, {"filename": "/src/openssl/crypto/rand/rand_unix.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 133, "covered": 114, "percent": 85.71428571428571}, "regions": {"count": 57, "covered": 37, "notcovered": 20, "percent": 64.91228070175438}}}, {"filename": "/src/openssl/crypto/rand/randfile.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 159, "covered": 0, "percent": 0}, "regions": {"count": 89, "covered": 0, "notcovered": 89, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2_cbc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 161, "covered": 0, "percent": 0}, "regions": {"count": 75, "covered": 0, "notcovered": 75, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2_ecb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 17, "covered": 0, "percent": 0}, "regions": {"count": 8, "covered": 0, "notcovered": 8, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2_skey.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 45, "covered": 0, "percent": 0}, "regions": {"count": 19, "covered": 0, "notcovered": 19, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2cfb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 20, "covered": 0, "notcovered": 20, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc2/rc2ofb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc4/rc4_utl.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 2, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5_ecb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 17, "covered": 0, "percent": 0}, "regions": {"count": 8, "covered": 0, "notcovered": 8, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5_enc.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 140, "covered": 0, "percent": 0}, "regions": {"count": 271, "covered": 0, "notcovered": 271, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5_skey.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 47, "covered": 0, "percent": 0}, "regions": {"count": 50, "covered": 0, "notcovered": 50, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5cfb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 20, "covered": 0, "notcovered": 20, "percent": 0}}}, {"filename": "/src/openssl/crypto/rc5/rc5ofb64.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/crypto/ripemd/rmd_dgst.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 249, "covered": 0, "percent": 0}, "regions": {"count": 841, "covered": 0, "notcovered": 841, "percent": 0}}}, {"filename": "/src/openssl/crypto/ripemd/rmd_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_ameth.c", "summary": {"functions": {"count": 32, "covered": 0, "percent": 0}, "instantiations": {"count": 32, "covered": 0, "percent": 0}, "lines": {"count": 751, "covered": 0, "percent": 0}, "regions": {"count": 780, "covered": 0, "notcovered": 780, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_asn1.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 19, "covered": 0, "percent": 0}, "regions": {"count": 16, "covered": 0, "notcovered": 16, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_crpt.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 122, "covered": 0, "percent": 0}, "regions": {"count": 88, "covered": 0, "notcovered": 88, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_eay.c", "summary": {"functions": {"count": 11, "covered": 1, "percent": 9.090909090909092}, "instantiations": {"count": 11, "covered": 1, "percent": 9.090909090909092}, "lines": {"count": 724, "covered": 3, "percent": 0.4143646408839779}, "regions": {"count": 598, "covered": 1, "notcovered": 597, "percent": 0.16722408026755853}}}, {"filename": "/src/openssl/crypto/rsa/rsa_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/rsa/rsa_gen.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 151, "covered": 0, "percent": 0}, "regions": {"count": 178, "covered": 0, "notcovered": 178, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_lib.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 207, "covered": 0, "percent": 0}, "regions": {"count": 118, "covered": 0, "notcovered": 118, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_none.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 25, "covered": 0, "percent": 0}, "regions": {"count": 17, "covered": 0, "notcovered": 17, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_oaep.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 232, "covered": 0, "percent": 0}, "regions": {"count": 129, "covered": 0, "notcovered": 129, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_pk1.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 196, "covered": 0, "percent": 0}, "regions": {"count": 93, "covered": 0, "notcovered": 93, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_pmeth.c", "summary": {"functions": {"count": 12, "covered": 0, "percent": 0}, "instantiations": {"count": 12, "covered": 0, "percent": 0}, "lines": {"count": 456, "covered": 0, "percent": 0}, "regions": {"count": 439, "covered": 0, "notcovered": 439, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_pss.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 206, "covered": 0, "percent": 0}, "regions": {"count": 166, "covered": 0, "notcovered": 166, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_saos.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 74, "covered": 0, "percent": 0}, "regions": {"count": 51, "covered": 0, "notcovered": 51, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_sign.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 195, "covered": 0, "percent": 0}, "regions": {"count": 182, "covered": 0, "notcovered": 182, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_ssl.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 80, "covered": 0, "percent": 0}, "regions": {"count": 60, "covered": 0, "notcovered": 60, "percent": 0}}}, {"filename": "/src/openssl/crypto/rsa/rsa_x931.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 92, "covered": 0, "percent": 0}, "regions": {"count": 55, "covered": 0, "notcovered": 55, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 106, "covered": 0, "percent": 0}, "regions": {"count": 216, "covered": 0, "notcovered": 216, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed_cbc.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 8, "covered": 0, "percent": 0}, "regions": {"count": 4, "covered": 0, "notcovered": 4, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed_cfb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 4, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed_ecb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 6, "covered": 0, "percent": 0}, "regions": {"count": 4, "covered": 0, "notcovered": 4, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/seed/seed_ofb.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 4, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/sha/sha1_one.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 13, "covered": 0, "percent": 0}, "regions": {"count": 6, "covered": 0, "notcovered": 6, "percent": 0}}}, {"filename": "/src/openssl/crypto/sha/sha256.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 56, "covered": 0, "percent": 0}, "regions": {"count": 12, "covered": 0, "notcovered": 12, "percent": 0}}}, {"filename": "/src/openssl/crypto/sha/sha512.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 171, "covered": 0, "percent": 0}, "regions": {"count": 71, "covered": 0, "notcovered": 71, "percent": 0}}}, {"filename": "/src/openssl/crypto/sha/sha_locl.h", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 204, "covered": 9, "percent": 4.411764705882353}, "regions": {"count": 632, "covered": 6, "notcovered": 626, "percent": 0.949367088607595}}}, {"filename": "/src/openssl/crypto/srp/srp_grps.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/srp/srp_lib.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 254, "covered": 0, "percent": 0}, "regions": {"count": 209, "covered": 0, "notcovered": 209, "percent": 0}}}, {"filename": "/src/openssl/crypto/srp/srp_vfy.c", "summary": {"functions": {"count": 21, "covered": 0, "percent": 0}, "instantiations": {"count": 21, "covered": 0, "percent": 0}, "lines": {"count": 567, "covered": 0, "percent": 0}, "regions": {"count": 511, "covered": 0, "notcovered": 511, "percent": 0}}}, {"filename": "/src/openssl/crypto/stack/stack.c", "summary": {"functions": {"count": 23, "covered": 16, "percent": 69.56521739130434}, "instantiations": {"count": 23, "covered": 16, "percent": 69.56521739130434}, "lines": {"count": 253, "covered": 165, "percent": 65.21739130434783}, "regions": {"count": 194, "covered": 107, "notcovered": 87, "percent": 55.154639175257735}}}, {"filename": "/src/openssl/crypto/ts/ts_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/txt_db/txt_db.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 314, "covered": 0, "percent": 0}, "regions": {"count": 386, "covered": 0, "notcovered": 386, "percent": 0}}}, {"filename": "/src/openssl/crypto/ui/ui_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/ui/ui_lib.c", "summary": {"functions": {"count": 55, "covered": 0, "percent": 0}, "instantiations": {"count": 55, "covered": 0, "percent": 0}, "lines": {"count": 653, "covered": 0, "percent": 0}, "regions": {"count": 465, "covered": 0, "notcovered": 465, "percent": 0}}}, {"filename": "/src/openssl/crypto/ui/ui_locl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/ui/ui_openssl.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 196, "covered": 0, "percent": 0}, "regions": {"count": 124, "covered": 0, "notcovered": 124, "percent": 0}}}, {"filename": "/src/openssl/crypto/uid.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 7, "covered": 0, "percent": 0}, "regions": {"count": 7, "covered": 0, "notcovered": 7, "percent": 0}}}, {"filename": "/src/openssl/crypto/whrlpool/wp_dgst.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 191, "covered": 0, "percent": 0}, "regions": {"count": 97, "covered": 0, "notcovered": 97, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/by_dir.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 290, "covered": 0, "percent": 0}, "regions": {"count": 302, "covered": 0, "notcovered": 302, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/by_file.c", "summary": {"functions": {"count": 5, "covered": 3, "percent": 60}, "instantiations": {"count": 5, "covered": 3, "percent": 60}, "lines": {"count": 180, "covered": 42, "percent": 23.333333333333332}, "regions": {"count": 175, "covered": 40, "notcovered": 135, "percent": 22.857142857142858}}}, {"filename": "/src/openssl/crypto/x509/x509_att.c", "summary": {"functions": {"count": 19, "covered": 0, "percent": 0}, "instantiations": {"count": 19, "covered": 0, "percent": 0}, "lines": {"count": 261, "covered": 0, "percent": 0}, "regions": {"count": 280, "covered": 0, "notcovered": 280, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_cmp.c", "summary": {"functions": {"count": 26, "covered": 2, "percent": 7.6923076923076925}, "instantiations": {"count": 26, "covered": 2, "percent": 7.6923076923076925}, "lines": {"count": 327, "covered": 22, "percent": 6.727828746177369}, "regions": {"count": 278, "covered": 13, "notcovered": 265, "percent": 4.676258992805756}}}, {"filename": "/src/openssl/crypto/x509/x509_d2.c", "summary": {"functions": {"count": 2, "covered": 1, "percent": 50}, "instantiations": {"count": 2, "covered": 1, "percent": 50}, "lines": {"count": 39, "covered": 14, "percent": 35.8974358974359}, "regions": {"count": 39, "covered": 15, "notcovered": 24, "percent": 38.46153846153847}}}, {"filename": "/src/openssl/crypto/x509/x509_def.c", "summary": {"functions": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "instantiations": {"count": 6, "covered": 1, "percent": 16.666666666666664}, "lines": {"count": 18, "covered": 3, "percent": 16.666666666666664}, "regions": {"count": 15, "covered": 2, "notcovered": 13, "percent": 13.333333333333334}}}, {"filename": "/src/openssl/crypto/x509/x509_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/crypto/x509/x509_ext.c", "summary": {"functions": {"count": 27, "covered": 0, "percent": 0}, "instantiations": {"count": 27, "covered": 0, "percent": 0}, "lines": {"count": 83, "covered": 0, "percent": 0}, "regions": {"count": 27, "covered": 0, "notcovered": 27, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_lu.c", "summary": {"functions": {"count": 34, "covered": 13, "percent": 38.23529411764706}, "instantiations": {"count": 34, "covered": 13, "percent": 38.23529411764706}, "lines": {"count": 554, "covered": 167, "percent": 30.144404332129966}, "regions": {"count": 608, "covered": 138, "notcovered": 470, "percent": 22.697368421052634}}}, {"filename": "/src/openssl/crypto/x509/x509_obj.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 123, "covered": 77, "percent": 62.601626016260155}, "regions": {"count": 104, "covered": 63, "notcovered": 41, "percent": 60.57692307692307}}}, {"filename": "/src/openssl/crypto/x509/x509_req.c", "summary": {"functions": {"count": 18, "covered": 0, "percent": 0}, "instantiations": {"count": 18, "covered": 0, "percent": 0}, "lines": {"count": 198, "covered": 0, "percent": 0}, "regions": {"count": 168, "covered": 0, "notcovered": 168, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_trs.c", "summary": {"functions": {"count": 17, "covered": 0, "percent": 0}, "instantiations": {"count": 17, "covered": 0, "percent": 0}, "lines": {"count": 182, "covered": 0, "percent": 0}, "regions": {"count": 209, "covered": 0, "notcovered": 209, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_txt.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 147, "covered": 0, "percent": 0}, "regions": {"count": 134, "covered": 0, "notcovered": 134, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_v3.c", "summary": {"functions": {"count": 15, "covered": 0, "percent": 0}, "instantiations": {"count": 15, "covered": 0, "percent": 0}, "lines": {"count": 180, "covered": 0, "percent": 0}, "regions": {"count": 223, "covered": 0, "notcovered": 223, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509_vfy.c", "summary": {"functions": {"count": 72, "covered": 1, "percent": 1.3888888888888888}, "instantiations": {"count": 72, "covered": 1, "percent": 1.3888888888888888}, "lines": {"count": 2208, "covered": 8, "percent": 0.36231884057971014}, "regions": {"count": 1926, "covered": 2, "notcovered": 1924, "percent": 0.10384215991692627}}}, {"filename": "/src/openssl/crypto/x509/x509_vpm.c", "summary": {"functions": {"count": 35, "covered": 5, "percent": 14.285714285714285}, "instantiations": {"count": 35, "covered": 5, "percent": 14.285714285714285}, "lines": {"count": 386, "covered": 110, "percent": 28.497409326424872}, "regions": {"count": 461, "covered": 87, "notcovered": 374, "percent": 18.872017353579178}}}, {"filename": "/src/openssl/crypto/x509/x509cset.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 88, "covered": 0, "percent": 0}, "regions": {"count": 75, "covered": 0, "notcovered": 75, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509name.c", "summary": {"functions": {"count": 18, "covered": 0, "percent": 0}, "instantiations": {"count": 18, "covered": 0, "percent": 0}, "lines": {"count": 274, "covered": 0, "percent": 0}, "regions": {"count": 288, "covered": 0, "notcovered": 288, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509rset.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 15, "covered": 0, "percent": 0}, "regions": {"count": 16, "covered": 0, "notcovered": 16, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x509type.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 62, "covered": 0, "percent": 0}, "regions": {"count": 57, "covered": 0, "notcovered": 57, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509/x_all.c", "summary": {"functions": {"count": 80, "covered": 0, "percent": 0}, "instantiations": {"count": 80, "covered": 0, "percent": 0}, "lines": {"count": 291, "covered": 0, "percent": 0}, "regions": {"count": 422, "covered": 0, "notcovered": 422, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/ext_dat.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_cache.c", "summary": {"functions": {"count": 7, "covered": 1, "percent": 14.285714285714285}, "instantiations": {"count": 7, "covered": 1, "percent": 14.285714285714285}, "lines": {"count": 179, "covered": 3, "percent": 1.675977653631285}, "regions": {"count": 196, "covered": 3, "notcovered": 193, "percent": 1.530612244897959}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_data.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 50, "covered": 0, "percent": 0}, "regions": {"count": 54, "covered": 0, "notcovered": 54, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_int.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_lib.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 60, "covered": 0, "percent": 0}, "regions": {"count": 64, "covered": 0, "notcovered": 64, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_map.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 59, "covered": 0, "percent": 0}, "regions": {"count": 76, "covered": 0, "notcovered": 76, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_node.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 99, "covered": 0, "percent": 0}, "regions": {"count": 120, "covered": 0, "notcovered": 120, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/pcy_tree.c", "summary": {"functions": {"count": 14, "covered": 0, "percent": 0}, "instantiations": {"count": 14, "covered": 0, "percent": 0}, "lines": {"count": 576, "covered": 0, "percent": 0}, "regions": {"count": 541, "covered": 0, "notcovered": 541, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_akey.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 103, "covered": 0, "percent": 0}, "regions": {"count": 110, "covered": 0, "notcovered": 110, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_alt.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 478, "covered": 0, "percent": 0}, "regions": {"count": 527, "covered": 0, "notcovered": 527, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_bcons.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 5, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_bitst.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 8, "covered": 0, "percent": 0}, "regions": {"count": 6, "covered": 0, "notcovered": 6, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_conf.c", "summary": {"functions": {"count": 27, "covered": 0, "percent": 0}, "instantiations": {"count": 27, "covered": 0, "percent": 0}, "lines": {"count": 304, "covered": 0, "percent": 0}, "regions": {"count": 244, "covered": 0, "notcovered": 244, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_cpols.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 338, "covered": 0, "percent": 0}, "regions": {"count": 410, "covered": 0, "notcovered": 410, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_crld.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 292, "covered": 0, "percent": 0}, "regions": {"count": 348, "covered": 0, "notcovered": 348, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_enum.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 10, "covered": 0, "percent": 0}, "regions": {"count": 7, "covered": 0, "notcovered": 7, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_extku.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 41, "covered": 0, "percent": 0}, "regions": {"count": 61, "covered": 0, "notcovered": 61, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_genn.c", "summary": {"functions": {"count": 7, "covered": 0, "percent": 0}, "instantiations": {"count": 7, "covered": 0, "percent": 0}, "lines": {"count": 132, "covered": 0, "percent": 0}, "regions": {"count": 93, "covered": 0, "notcovered": 93, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_ia5.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 31, "covered": 0, "percent": 0}, "regions": {"count": 30, "covered": 0, "notcovered": 30, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_info.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 93, "covered": 0, "percent": 0}, "regions": {"count": 117, "covered": 0, "notcovered": 117, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_int.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 3, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_lib.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 226, "covered": 0, "percent": 0}, "regions": {"count": 241, "covered": 0, "notcovered": 241, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_ncons.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 358, "covered": 0, "percent": 0}, "regions": {"count": 355, "covered": 0, "notcovered": 355, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_ocsp.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 117, "covered": 0, "percent": 0}, "regions": {"count": 129, "covered": 0, "notcovered": 129, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_pci.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 105, "covered": 0, "percent": 0}, "regions": {"count": 102, "covered": 0, "notcovered": 102, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_pcons.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 8, "covered": 0, "percent": 0}, "regions": {"count": 1, "covered": 0, "notcovered": 1, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_pku.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 14, "covered": 0, "percent": 0}, "regions": {"count": 7, "covered": 0, "notcovered": 7, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_pmaps.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 56, "covered": 0, "percent": 0}, "regions": {"count": 87, "covered": 0, "notcovered": 87, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_prn.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 143, "covered": 0, "percent": 0}, "regions": {"count": 146, "covered": 0, "notcovered": 146, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_purp.c", "summary": {"functions": {"count": 34, "covered": 0, "percent": 0}, "instantiations": {"count": 34, "covered": 0, "percent": 0}, "lines": {"count": 598, "covered": 0, "percent": 0}, "regions": {"count": 670, "covered": 0, "notcovered": 670, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_scts.c", "summary": {"functions": {"count": 6, "covered": 0, "percent": 0}, "instantiations": {"count": 6, "covered": 0, "percent": 0}, "lines": {"count": 186, "covered": 0, "percent": 0}, "regions": {"count": 125, "covered": 0, "notcovered": 125, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_skey.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 69, "covered": 0, "percent": 0}, "regions": {"count": 57, "covered": 0, "notcovered": 57, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_sxnet.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 124, "covered": 0, "percent": 0}, "regions": {"count": 138, "covered": 0, "notcovered": 138, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3_utl.c", "summary": {"functions": {"count": 43, "covered": 0, "percent": 0}, "instantiations": {"count": 43, "covered": 0, "percent": 0}, "lines": {"count": 1020, "covered": 0, "percent": 0}, "regions": {"count": 974, "covered": 0, "notcovered": 974, "percent": 0}}}, {"filename": "/src/openssl/crypto/x509v3/v3err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/e_os.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/e_gost_err.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 26, "covered": 12, "percent": 46.15384615384615}, "regions": {"count": 12, "covered": 5, "notcovered": 7, "percent": 41.66666666666667}}}, {"filename": "/src/openssl/engines/ccgost/e_gost_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost2001.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 375, "covered": 0, "percent": 0}, "regions": {"count": 336, "covered": 0, "notcovered": 336, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost2001_keyx.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 237, "covered": 0, "percent": 0}, "regions": {"count": 129, "covered": 0, "notcovered": 129, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost89.c", "summary": {"functions": {"count": 18, "covered": 0, "percent": 0}, "instantiations": {"count": 18, "covered": 0, "percent": 0}, "lines": {"count": 293, "covered": 0, "percent": 0}, "regions": {"count": 74, "covered": 0, "notcovered": 74, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost94_keyx.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 222, "covered": 0, "percent": 0}, "regions": {"count": 131, "covered": 0, "notcovered": 131, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_ameth.c", "summary": {"functions": {"count": 39, "covered": 1, "percent": 2.564102564102564}, "instantiations": {"count": 39, "covered": 1, "percent": 2.564102564102564}, "lines": {"count": 835, "covered": 45, "percent": 5.389221556886228}, "regions": {"count": 486, "covered": 11, "notcovered": 475, "percent": 2.263374485596708}}}, {"filename": "/src/openssl/engines/ccgost/gost_crypt.c", "summary": {"functions": {"count": 20, "covered": 0, "percent": 0}, "instantiations": {"count": 20, "covered": 0, "percent": 0}, "lines": {"count": 425, "covered": 0, "percent": 0}, "regions": {"count": 232, "covered": 0, "notcovered": 232, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_ctl.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 49, "covered": 0, "percent": 0}, "regions": {"count": 42, "covered": 0, "notcovered": 42, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_eng.c", "summary": {"functions": {"count": 10, "covered": 6, "percent": 60}, "instantiations": {"count": 10, "covered": 6, "percent": 60}, "lines": {"count": 202, "covered": 78, "percent": 38.613861386138616}, "regions": {"count": 144, "covered": 80, "notcovered": 64, "percent": 55.55555555555556}}}, {"filename": "/src/openssl/engines/ccgost/gost_keywrap.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 53, "covered": 0, "percent": 0}, "regions": {"count": 15, "covered": 0, "notcovered": 15, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_lcl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_md.c", "summary": {"functions": {"count": 5, "covered": 0, "percent": 0}, "instantiations": {"count": 5, "covered": 0, "percent": 0}, "lines": {"count": 28, "covered": 0, "percent": 0}, "regions": {"count": 11, "covered": 0, "notcovered": 11, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gost_pmeth.c", "summary": {"functions": {"count": 25, "covered": 1, "percent": 4}, "instantiations": {"count": 25, "covered": 1, "percent": 4}, "lines": {"count": 491, "covered": 57, "percent": 11.608961303462321}, "regions": {"count": 313, "covered": 10, "notcovered": 303, "percent": 3.1948881789137378}}}, {"filename": "/src/openssl/engines/ccgost/gost_sign.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 239, "covered": 0, "percent": 0}, "regions": {"count": 152, "covered": 0, "notcovered": 152, "percent": 0}}}, {"filename": "/src/openssl/engines/ccgost/gosthash.c", "summary": {"functions": {"count": 11, "covered": 0, "percent": 0}, "instantiations": {"count": 11, "covered": 0, "percent": 0}, "lines": {"count": 183, "covered": 0, "percent": 0}, "regions": {"count": 56, "covered": 0, "notcovered": 56, "percent": 0}}}, {"filename": "/src/openssl/engines/e_4758cca.c", "summary": {"functions": {"count": 20, "covered": 5, "percent": 25}, "instantiations": {"count": 20, "covered": 5, "percent": 25}, "lines": {"count": 659, "covered": 59, "percent": 8.952959028831563}, "regions": {"count": 321, "covered": 43, "notcovered": 278, "percent": 13.395638629283487}}}, {"filename": "/src/openssl/engines/e_4758cca_err.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 26, "covered": 16, "percent": 61.53846153846154}, "regions": {"count": 12, "covered": 8, "notcovered": 4, "percent": 66.66666666666666}}}, {"filename": "/src/openssl/engines/e_4758cca_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_aep.c", "summary": {"functions": {"count": 24, "covered": 3, "percent": 12.5}, "instantiations": {"count": 24, "covered": 3, "percent": 12.5}, "lines": {"count": 613, "covered": 85, "percent": 13.866231647634583}, "regions": {"count": 327, "covered": 29, "notcovered": 298, "percent": 8.868501529051988}}}, {"filename": "/src/openssl/engines/e_aep_err.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 26, "covered": 12, "percent": 46.15384615384615}, "regions": {"count": 12, "covered": 5, "notcovered": 7, "percent": 41.66666666666667}}}, {"filename": "/src/openssl/engines/e_aep_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_atalla.c", "summary": {"functions": {"count": 16, "covered": 3, "percent": 18.75}, "instantiations": {"count": 16, "covered": 3, "percent": 18.75}, "lines": {"count": 313, "covered": 78, "percent": 24.920127795527154}, "regions": {"count": 163, "covered": 29, "notcovered": 134, "percent": 17.791411042944784}}}, {"filename": "/src/openssl/engines/e_atalla_err.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 35, "covered": 17, "percent": 48.57142857142857}, "regions": {"count": 13, "covered": 6, "notcovered": 7, "percent": 46.15384615384615}}}, {"filename": "/src/openssl/engines/e_atalla_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_chil.c", "summary": {"functions": {"count": 28, "covered": 5, "percent": 17.857142857142858}, "instantiations": {"count": 28, "covered": 5, "percent": 17.857142857142858}, "lines": {"count": 847, "covered": 104, "percent": 12.278630460448642}, "regions": {"count": 560, "covered": 44, "notcovered": 516, "percent": 7.857142857142857}}}, {"filename": "/src/openssl/engines/e_chil_err.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 35, "covered": 21, "percent": 60}, "regions": {"count": 13, "covered": 9, "notcovered": 4, "percent": 69.23076923076923}}}, {"filename": "/src/openssl/engines/e_chil_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_cswift.c", "summary": {"functions": {"count": 22, "covered": 5, "percent": 22.727272727272727}, "instantiations": {"count": 22, "covered": 5, "percent": 22.727272727272727}, "lines": {"count": 732, "covered": 91, "percent": 12.431693989071038}, "regions": {"count": 455, "covered": 42, "notcovered": 413, "percent": 9.230769230769232}}}, {"filename": "/src/openssl/engines/e_cswift_err.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 35, "covered": 21, "percent": 60}, "regions": {"count": 13, "covered": 9, "notcovered": 4, "percent": 69.23076923076923}}}, {"filename": "/src/openssl/engines/e_cswift_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_nuron.c", "summary": {"functions": {"count": 16, "covered": 3, "percent": 18.75}, "instantiations": {"count": 16, "covered": 3, "percent": 18.75}, "lines": {"count": 195, "covered": 78, "percent": 40}, "regions": {"count": 104, "covered": 29, "notcovered": 75, "percent": 27.884615384615387}}}, {"filename": "/src/openssl/engines/e_nuron_err.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 35, "covered": 17, "percent": 48.57142857142857}, "regions": {"count": 13, "covered": 6, "notcovered": 7, "percent": 46.15384615384615}}}, {"filename": "/src/openssl/engines/e_nuron_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_padlock.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 2, "covered": 2, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/engines/e_sureware.c", "summary": {"functions": {"count": 22, "covered": 4, "percent": 18.181818181818183}, "instantiations": {"count": 22, "covered": 4, "percent": 18.181818181818183}, "lines": {"count": 734, "covered": 123, "percent": 16.7574931880109}, "regions": {"count": 489, "covered": 47, "notcovered": 442, "percent": 9.611451942740286}}}, {"filename": "/src/openssl/engines/e_sureware_err.c", "summary": {"functions": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "instantiations": {"count": 3, "covered": 2, "percent": 66.66666666666666}, "lines": {"count": 35, "covered": 21, "percent": 60}, "regions": {"count": 13, "covered": 9, "notcovered": 4, "percent": 69.23076923076923}}}, {"filename": "/src/openssl/engines/e_sureware_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/e_ubsec.c", "summary": {"functions": {"count": 19, "covered": 3, "percent": 15.789473684210526}, "instantiations": {"count": 19, "covered": 3, "percent": 15.789473684210526}, "lines": {"count": 649, "covered": 69, "percent": 10.631741140215716}, "regions": {"count": 314, "covered": 29, "notcovered": 285, "percent": 9.235668789808917}}}, {"filename": "/src/openssl/engines/e_ubsec_err.c", "summary": {"functions": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "instantiations": {"count": 3, "covered": 1, "percent": 33.33333333333333}, "lines": {"count": 35, "covered": 17, "percent": 48.57142857142857}, "regions": {"count": 13, "covered": 6, "notcovered": 7, "percent": 46.15384615384615}}}, {"filename": "/src/openssl/engines/e_ubsec_err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/aep.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/cswift.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/hw_4758_cca.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/hw_ubsec.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/hwcryptohook.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/engines/vendor_defns/sureware.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/aes.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/asn1.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/asn1_mac.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/asn1t.h", "summary": {"functions": {"count": 9, "covered": 3, "percent": 33.33333333333333}, "instantiations": {"count": 484, "covered": 11, "percent": 2.272727272727273}, "lines": {"count": 28, "covered": 9, "percent": 32.142857142857146}, "regions": {"count": 18, "covered": 6, "notcovered": 12, "percent": 33.33333333333333}}}, {"filename": "/src/openssl/include/openssl/bio.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/blowfish.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/bn.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/cast.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/cms.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/conf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/crypto.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/des.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/dh.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/dsa.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/dso.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/dtls1.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/e_os2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ec.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ecdh.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/engine.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/err.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/evp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/hmac.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/lhash.h", "summary": {"functions": {"count": 4, "covered": 2, "percent": 50}, "instantiations": {"count": 34, "covered": 10, "percent": 29.411764705882355}, "lines": {"count": 14, "covered": 7, "percent": 50}, "regions": {"count": 4, "covered": 2, "notcovered": 2, "percent": 50}}}, {"filename": "/src/openssl/include/openssl/md4.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/md5.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/mdc2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/obj_mac.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/objects.h", "summary": {"functions": {"count": 4, "covered": 2, "percent": 50}, "instantiations": {"count": 26, "covered": 2, "percent": 7.6923076923076925}, "lines": {"count": 18, "covered": 9, "percent": 50}, "regions": {"count": 4, "covered": 2, "notcovered": 2, "percent": 50}}}, {"filename": "/src/openssl/include/openssl/ocsp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/opensslconf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/opensslv.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/pem.h", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 84, "covered": 0, "percent": 0}, "lines": {"count": 36, "covered": 0, "percent": 0}, "regions": {"count": 10, "covered": 0, "notcovered": 10, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/pkcs12.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/pkcs7.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/rc5.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ripemd.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/rsa.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/safestack.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/sha.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/srp.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ssl.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ssl2.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ssl23.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ssl3.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/tls1.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/txt_db.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/ui.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/whrlpool.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/x509.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/x509_vfy.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/include/openssl/x509v3.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/openssl/ssl/bio_ssl.c", "summary": {"functions": {"count": 13, "covered": 0, "percent": 0}, "instantiations": {"count": 13, "covered": 0, "percent": 0}, "lines": {"count": 452, "covered": 0, "percent": 0}, "regions": {"count": 331, "covered": 0, "notcovered": 331, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_both.c", "summary": {"functions": {"count": 28, "covered": 0, "percent": 0}, "instantiations": {"count": 28, "covered": 0, "percent": 0}, "lines": {"count": 1270, "covered": 0, "percent": 0}, "regions": {"count": 723, "covered": 0, "notcovered": 723, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_clnt.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 522, "covered": 0, "percent": 0}, "regions": {"count": 447, "covered": 0, "notcovered": 447, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_lib.c", "summary": {"functions": {"count": 20, "covered": 0, "percent": 0}, "instantiations": {"count": 20, "covered": 0, "percent": 0}, "lines": {"count": 394, "covered": 0, "percent": 0}, "regions": {"count": 210, "covered": 0, "notcovered": 210, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_meth.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 10, "covered": 0, "percent": 0}, "regions": {"count": 13, "covered": 0, "notcovered": 13, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_pkt.c", "summary": {"functions": {"count": 17, "covered": 0, "percent": 0}, "instantiations": {"count": 17, "covered": 0, "percent": 0}, "lines": {"count": 1452, "covered": 0, "percent": 0}, "regions": {"count": 912, "covered": 0, "notcovered": 912, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_srtp.c", "summary": {"functions": {"count": 10, "covered": 0, "percent": 0}, "instantiations": {"count": 10, "covered": 0, "percent": 0}, "lines": {"count": 273, "covered": 0, "percent": 0}, "regions": {"count": 220, "covered": 0, "notcovered": 220, "percent": 0}}}, {"filename": "/src/openssl/ssl/d1_srvr.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 660, "covered": 0, "percent": 0}, "regions": {"count": 557, "covered": 0, "notcovered": 557, "percent": 0}}}, {"filename": "/src/openssl/ssl/s23_clnt.c", "summary": {"functions": {"count": 6, "covered": 4, "percent": 66.66666666666666}, "instantiations": {"count": 6, "covered": 4, "percent": 66.66666666666666}, "lines": {"count": 577, "covered": 320, "percent": 55.45927209705373}, "regions": {"count": 474, "covered": 218, "notcovered": 256, "percent": 45.9915611814346}}}, {"filename": "/src/openssl/ssl/s23_lib.c", "summary": {"functions": {"count": 8, "covered": 3, "percent": 37.5}, "instantiations": {"count": 8, "covered": 3, "percent": 37.5}, "lines": {"count": 92, "covered": 13, "percent": 14.130434782608695}, "regions": {"count": 87, "covered": 5, "notcovered": 82, "percent": 5.747126436781609}}}, {"filename": "/src/openssl/ssl/s23_meth.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 16, "covered": 0, "percent": 0}, "regions": {"count": 17, "covered": 0, "notcovered": 17, "percent": 0}}}, {"filename": "/src/openssl/ssl/s23_pkt.c", "summary": {"functions": {"count": 2, "covered": 2, "percent": 100}, "instantiations": {"count": 2, "covered": 2, "percent": 100}, "lines": {"count": 44, "covered": 36, "percent": 81.81818181818183}, "regions": {"count": 22, "covered": 19, "notcovered": 3, "percent": 86.36363636363636}}}, {"filename": "/src/openssl/ssl/s23_srvr.c", "summary": {"functions": {"count": 3, "covered": 0, "percent": 0}, "instantiations": {"count": 3, "covered": 0, "percent": 0}, "lines": {"count": 453, "covered": 0, "percent": 0}, "regions": {"count": 355, "covered": 0, "notcovered": 355, "percent": 0}}}, {"filename": "/src/openssl/ssl/s3_both.c", "summary": {"functions": {"count": 16, "covered": 8, "percent": 50}, "instantiations": {"count": 16, "covered": 8, "percent": 50}, "lines": {"count": 538, "covered": 214, "percent": 39.77695167286245}, "regions": {"count": 435, "covered": 142, "notcovered": 293, "percent": 32.64367816091954}}}, {"filename": "/src/openssl/ssl/s3_cbc.c", "summary": {"functions": {"count": 9, "covered": 0, "percent": 0}, "instantiations": {"count": 9, "covered": 0, "percent": 0}, "lines": {"count": 550, "covered": 0, "percent": 0}, "regions": {"count": 215, "covered": 0, "notcovered": 215, "percent": 0}}}, {"filename": "/src/openssl/ssl/s3_clnt.c", "summary": {"functions": {"count": 20, "covered": 2, "percent": 10}, "instantiations": {"count": 20, "covered": 2, "percent": 10}, "lines": {"count": 3303, "covered": 92, "percent": 2.785346654556464}, "regions": {"count": 2670, "covered": 58, "notcovered": 2612, "percent": 2.1722846441947565}}}, {"filename": "/src/openssl/ssl/s3_enc.c", "summary": {"functions": {"count": 16, "covered": 3, "percent": 18.75}, "instantiations": {"count": 16, "covered": 3, "percent": 18.75}, "lines": {"count": 737, "covered": 19, "percent": 2.578018995929444}, "regions": {"count": 577, "covered": 15, "notcovered": 562, "percent": 2.5996533795493932}}}, {"filename": "/src/openssl/ssl/s3_lib.c", "summary": {"functions": {"count": 27, "covered": 8, "percent": 29.629629629629626}, "instantiations": {"count": 27, "covered": 8, "percent": 29.629629629629626}, "lines": {"count": 1385, "covered": 224, "percent": 16.173285198555956}, "regions": {"count": 1021, "covered": 103, "notcovered": 918, "percent": 10.088148873653282}}}, {"filename": "/src/openssl/ssl/s3_meth.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 6, "covered": 0, "percent": 0}, "regions": {"count": 5, "covered": 0, "notcovered": 5, "percent": 0}}}, {"filename": "/src/openssl/ssl/s3_pkt.c", "summary": {"functions": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "instantiations": {"count": 11, "covered": 7, "percent": 63.63636363636363}, "lines": {"count": 1515, "covered": 535, "percent": 35.31353135313531}, "regions": {"count": 1083, "covered": 290, "notcovered": 793, "percent": 26.777469990766388}}}, {"filename": "/src/openssl/ssl/s3_srvr.c", "summary": {"functions": {"count": 16, "covered": 0, "percent": 0}, "instantiations": {"count": 16, "covered": 0, "percent": 0}, "lines": {"count": 3192, "covered": 0, "percent": 0}, "regions": {"count": 2464, "covered": 0, "notcovered": 2464, "percent": 0}}}, {"filename": "/src/openssl/ssl/ssl_algs.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 86, "covered": 86, "percent": 100}, "regions": {"count": 22, "covered": 22, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/ssl/ssl_asn1.c", "summary": {"functions": {"count": 2, "covered": 0, "percent": 0}, "instantiations": {"count": 2, "covered": 0, "percent": 0}, "lines": {"count": 482, "covered": 0, "percent": 0}, "regions": {"count": 715, "covered": 0, "notcovered": 715, "percent": 0}}}, {"filename": "/src/openssl/ssl/ssl_cert.c", "summary": {"functions": {"count": 35, "covered": 6, "percent": 17.142857142857142}, "instantiations": {"count": 35, "covered": 6, "percent": 17.142857142857142}, "lines": {"count": 974, "covered": 197, "percent": 20.2258726899384}, "regions": {"count": 902, "covered": 87, "notcovered": 815, "percent": 9.645232815964523}}}, {"filename": "/src/openssl/ssl/ssl_ciph.c", "summary": {"functions": {"count": 31, "covered": 14, "percent": 45.16129032258064}, "instantiations": {"count": 31, "covered": 14, "percent": 45.16129032258064}, "lines": {"count": 1468, "covered": 783, "percent": 53.33787465940054}, "regions": {"count": 1300, "covered": 575, "notcovered": 725, "percent": 44.230769230769226}}}, {"filename": "/src/openssl/ssl/ssl_err.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 9, "covered": 9, "percent": 100}, "regions": {"count": 3, "covered": 3, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/ssl/ssl_err2.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 6, "covered": 6, "percent": 100}, "regions": {"count": 1, "covered": 1, "notcovered": 0, "percent": 100}}}, {"filename": "/src/openssl/ssl/ssl_lib.c", "summary": {"functions": {"count": 171, "covered": 30, "percent": 17.543859649122805}, "instantiations": {"count": 171, "covered": 30, "percent": 17.543859649122805}, "lines": {"count": 2598, "covered": 762, "percent": 29.330254041570434}, "regions": {"count": 2003, "covered": 395, "notcovered": 1608, "percent": 19.720419370943585}}}, {"filename": "/src/openssl/ssl/ssl_locl.h", "summary": {"functions": {"count": 4, "covered": 2, "percent": 50}, "instantiations": {"count": 24, "covered": 2, "percent": 8.333333333333332}, "lines": {"count": 136, "covered": 68, "percent": 50}, "regions": {"count": 6, "covered": 3, "notcovered": 3, "percent": 50}}}, {"filename": "/src/openssl/ssl/ssl_rsa.c", "summary": {"functions": {"count": 27, "covered": 0, "percent": 0}, "instantiations": {"count": 27, "covered": 0, "percent": 0}, "lines": {"count": 879, "covered": 0, "percent": 0}, "regions": {"count": 640, "covered": 0, "notcovered": 640, "percent": 0}}}, {"filename": "/src/openssl/ssl/ssl_sess.c", "summary": {"functions": {"count": 46, "covered": 9, "percent": 19.565217391304348}, "instantiations": {"count": 46, "covered": 9, "percent": 19.565217391304348}, "lines": {"count": 938, "covered": 152, "percent": 16.204690831556505}, "regions": {"count": 656, "covered": 84, "notcovered": 572, "percent": 12.804878048780488}}}, {"filename": "/src/openssl/ssl/ssl_stat.c", "summary": {"functions": {"count": 8, "covered": 0, "percent": 0}, "instantiations": {"count": 8, "covered": 0, "percent": 0}, "lines": {"count": 742, "covered": 0, "percent": 0}, "regions": {"count": 637, "covered": 0, "notcovered": 637, "percent": 0}}}, {"filename": "/src/openssl/ssl/t1_clnt.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 9, "covered": 0, "percent": 0}, "regions": {"count": 13, "covered": 0, "notcovered": 13, "percent": 0}}}, {"filename": "/src/openssl/ssl/t1_enc.c", "summary": {"functions": {"count": 12, "covered": 2, "percent": 16.666666666666664}, "instantiations": {"count": 12, "covered": 2, "percent": 16.666666666666664}, "lines": {"count": 912, "covered": 69, "percent": 7.565789473684211}, "regions": {"count": 780, "covered": 24, "notcovered": 756, "percent": 3.076923076923077}}}, {"filename": "/src/openssl/ssl/t1_ext.c", "summary": {"functions": {"count": 11, "covered": 4, "percent": 36.36363636363637}, "instantiations": {"count": 11, "covered": 4, "percent": 36.36363636363637}, "lines": {"count": 194, "covered": 23, "percent": 11.855670103092782}, "regions": {"count": 139, "covered": 11, "notcovered": 128, "percent": 7.913669064748201}}}, {"filename": "/src/openssl/ssl/t1_lib.c", "summary": {"functions": {"count": 61, "covered": 9, "percent": 14.754098360655737}, "instantiations": {"count": 61, "covered": 9, "percent": 14.754098360655737}, "lines": {"count": 3401, "covered": 396, "percent": 11.643634225227874}, "regions": {"count": 2727, "covered": 247, "notcovered": 2480, "percent": 9.057572423909058}}}, {"filename": "/src/openssl/ssl/t1_meth.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 9, "covered": 0, "percent": 0}, "regions": {"count": 13, "covered": 0, "notcovered": 13, "percent": 0}}}, {"filename": "/src/openssl/ssl/t1_reneg.c", "summary": {"functions": {"count": 4, "covered": 0, "percent": 0}, "instantiations": {"count": 4, "covered": 0, "percent": 0}, "lines": {"count": 140, "covered": 0, "percent": 0}, "regions": {"count": 84, "covered": 0, "notcovered": 84, "percent": 0}}}, {"filename": "/src/openssl/ssl/t1_srvr.c", "summary": {"functions": {"count": 1, "covered": 0, "percent": 0}, "instantiations": {"count": 1, "covered": 0, "percent": 0}, "lines": {"count": 9, "covered": 0, "percent": 0}, "regions": {"count": 13, "covered": 0, "notcovered": 13, "percent": 0}}}, {"filename": "/src/openssl/ssl/tls_srp.c", "summary": {"functions": {"count": 22, "covered": 4, "percent": 18.181818181818183}, "instantiations": {"count": 22, "covered": 4, "percent": 18.181818181818183}, "lines": {"count": 417, "covered": 136, "percent": 32.61390887290168}, "regions": {"count": 260, "covered": 48, "notcovered": 212, "percent": 18.461538461538463}}}, {"filename": "/src/zlib/adler32.c", "summary": {"functions": {"count": 5, "covered": 2, "percent": 40}, "instantiations": {"count": 5, "covered": 2, "percent": 40}, "lines": {"count": 97, "covered": 68, "percent": 70.10309278350515}, "regions": {"count": 140, "covered": 111, "notcovered": 29, "percent": 79.28571428571428}}}, {"filename": "/src/zlib/crc32.c", "summary": {"functions": {"count": 10, "covered": 3, "percent": 30}, "instantiations": {"count": 10, "covered": 3, "percent": 30}, "lines": {"count": 159, "covered": 41, "percent": 25.78616352201258}, "regions": {"count": 106, "covered": 33, "notcovered": 73, "percent": 31.132075471698112}}}, {"filename": "/src/zlib/inffast.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 219, "covered": 210, "percent": 95.8904109589041}, "regions": {"count": 84, "covered": 81, "notcovered": 3, "percent": 96.42857142857143}}}, {"filename": "/src/zlib/inffixed.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/zlib/inflate.c", "summary": {"functions": {"count": 22, "covered": 10, "percent": 45.45454545454545}, "instantiations": {"count": 22, "covered": 10, "percent": 45.45454545454545}, "lines": {"count": 1023, "covered": 744, "percent": 72.72727272727273}, "regions": {"count": 1170, "covered": 894, "notcovered": 276, "percent": 76.41025641025641}}}, {"filename": "/src/zlib/inftrees.c", "summary": {"functions": {"count": 1, "covered": 1, "percent": 100}, "instantiations": {"count": 1, "covered": 1, "percent": 100}, "lines": {"count": 266, "covered": 256, "percent": 96.2406015037594}, "regions": {"count": 109, "covered": 101, "notcovered": 8, "percent": 92.66055045871559}}}, {"filename": "/src/zlib/inftrees.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/zlib/zconf.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/zlib/zlib.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}, {"filename": "/src/zlib/zutil.c", "summary": {"functions": {"count": 5, "covered": 1, "percent": 20}, "instantiations": {"count": 5, "covered": 1, "percent": 20}, "lines": {"count": 45, "covered": 3, "percent": 6.666666666666667}, "regions": {"count": 30, "covered": 2, "notcovered": 28, "percent": 6.666666666666667}}}, {"filename": "/src/zlib/zutil.h", "summary": {"functions": {"count": 0, "covered": 0, "percent": 0}, "instantiations": {"count": 0, "covered": 0, "percent": 0}, "lines": {"count": 0, "covered": 0, "percent": 0}, "regions": {"count": 0, "covered": 0, "notcovered": 0, "percent": 0}}}], "totals": {"functions": {"count": 6666, "covered": 1907, "percent": 28.60786078607861}, "instantiations": {"count": 7495, "covered": 2012, "percent": 26.844563042028017}, "lines": {"count": 197515, "covered": 51027, "percent": 25.834493582765866}, "regions": {"count": 143296, "covered": 30159, "notcovered": 113137, "percent": 21.046644707458686}}}], "type": "llvm.coverage.json.export", "version": "2.0.0"}
\ No newline at end of file
diff --git a/infra/cifuzz/test_data/external-project/Makefile b/infra/cifuzz/test_data/external-project/Makefile
deleted file mode 100644
index 2c17737..0000000
--- a/infra/cifuzz/test_data/external-project/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2017 Google Inc. All Rights Reserved.
-# Licensed under the Apache License, Version 2.0 (the "License");
-
-# Simple example of a build file that nicely integrates a fuzz target
-# with the rest of the project.
-#
-# We use 'make' as the build system, but these ideas are applicable
-# to any other build system
-
-# By default, use our own standalone_fuzz_target_runner.
-# This runner does no fuzzing, but simply executes the inputs
-# provided via parameters.
-# Run e.g. "make all LIB_FUZZING_ENGINE=/path/to/libFuzzer.a"
-# to link the fuzzer(s) against a real fuzzing engine.
-#
-# OSS-Fuzz will define its own value for LIB_FUZZING_ENGINE.
-LIB_FUZZING_ENGINE ?= standalone_fuzz_target_runner.o
-
-# Values for CC, CFLAGS, CXX, CXXFLAGS are provided by OSS-Fuzz.
-# Outside of OSS-Fuzz use the ones you prefer or rely on the default values.
-# Do not use the -fsanitize=* flags by default.
-# OSS-Fuzz will use different -fsanitize=* flags for different builds (asan, ubsan, msan, ...)
-
-# You may add extra compiler flags like this:
-CXXFLAGS += -std=c++11
-
-all: do_stuff_fuzzer
-
-clean:
-	rm -fv *.a *.o *_fuzzer crash-* *.zip
-
-# Fuzz target, links against $LIB_FUZZING_ENGINE, so that
-# you may choose which fuzzing engine to use.
-do_stuff_fuzzer: do_stuff_fuzzer.cpp my_api.a standalone_fuzz_target_runner.o
-	${CXX} ${CXXFLAGS} $< my_api.a ${LIB_FUZZING_ENGINE} -o $@
-
-
-# The library itself.
-my_api.a: my_api.cpp my_api.h
-	${CXX} ${CXXFLAGS} $< -c
-	ar ruv my_api.a my_api.o
-
-# The standalone fuzz target runner.
-standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cpp
diff --git a/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.cpp b/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.cpp
deleted file mode 100644
index 71fa8ca..0000000
--- a/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "my_api.h"
-
-#include <string>
-
-// Simple fuzz target for DoStuff().
-// See http://libfuzzer.info for details.
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  std::string str(reinterpret_cast<const char *>(data), size);
-  DoStuff(str);  // Disregard the output.
-  return 0;
-}
diff --git a/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.dict b/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.dict
deleted file mode 100644
index 224679b..0000000
--- a/infra/cifuzz/test_data/external-project/do_stuff_fuzzer.dict
+++ /dev/null
@@ -1,6 +0,0 @@
-# A dictionary for more efficient fuzzing of DoStuff(). 
-# If the inputs contain multi-byte tokens, list them here.
-# See http://libfuzzer.info#dictionaries
-"foo"
-"bar"
-"ouch"
diff --git a/infra/cifuzz/test_data/external-project/my_api.cpp b/infra/cifuzz/test_data/external-project/my_api.cpp
deleted file mode 100644
index 9a2c1bc..0000000
--- a/infra/cifuzz/test_data/external-project/my_api.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Implementation of "my_api".
-#include "my_api.h"
-
-#include <vector>
-
-// Do some computations with 'str', return the result.
-// This function contains a bug. Can you spot it?
-size_t DoStuff(const std::string &str) {
-  std::vector<int> Vec({0, 1, 2, 3, 4});
-  size_t Idx = 0;
-  if (str.size() > 5)
-    Idx++;
-  if (str.find("foo") != std::string::npos)
-    Idx++;
-  if (str.find("bar") != std::string::npos)
-    Idx++;
-  if (str.find("ouch") != std::string::npos)
-    Idx++;
-  if (str.find("omg") != std::string::npos)
-    Idx++;
-  return Vec[Idx];
-}
diff --git a/infra/cifuzz/test_data/external-project/my_api.h b/infra/cifuzz/test_data/external-project/my_api.h
deleted file mode 100644
index 325aa15..0000000
--- a/infra/cifuzz/test_data/external-project/my_api.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// A library that does ... stuff.
-// Serves as an example of good fuzz testing and OSS-Fuzz integration.
-#include <string>
-
-size_t DoStuff(const std::string &str);
diff --git a/infra/cifuzz/test_data/external-project/oss-fuzz/Dockerfile b/infra/cifuzz/test_data/external-project/oss-fuzz/Dockerfile
deleted file mode 100644
index e9dc330..0000000
--- a/infra/cifuzz/test_data/external-project/oss-fuzz/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-
-COPY . $SRC/external-project
-WORKDIR external-project
-COPY oss-fuzz/build.sh $SRC/
diff --git a/infra/cifuzz/test_data/external-project/oss-fuzz/build.sh b/infra/cifuzz/test_data/external-project/oss-fuzz/build.sh
deleted file mode 100644
index 2c52ef9..0000000
--- a/infra/cifuzz/test_data/external-project/oss-fuzz/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-make clean  # Not strictly necessary, since we are building in a fresh dir.
-make -j$(nproc) all    # Build the fuzz targets.
-
-# Copy the fuzzer executables, zip-ed corpora, option and dictionary files to $OUT
-find . -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'     # If you have dictionaries.
-find . -name '*_fuzzer.options' -exec cp -v '{}' $OUT ';'  # If you have custom options.
diff --git a/infra/cifuzz/test_data/external-project/standalone_fuzz_target_runner.cpp b/infra/cifuzz/test_data/external-project/standalone_fuzz_target_runner.cpp
deleted file mode 100644
index 38a0454..0000000
--- a/infra/cifuzz/test_data/external-project/standalone_fuzz_target_runner.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Example of a standalone runner for "fuzz targets".
-// It reads all files passed as parameters and feeds their contents
-// one by one into the fuzz target (LLVMFuzzerTestOneInput).
-// This runner does not do any fuzzing, but allows us to run the fuzz target
-// on the test corpus (e.g. "do_stuff_test_data") or on a single file,
-// e.g. the one that comes from a bug report.
-
-#include <cassert>
-#include <iostream>
-#include <fstream>
-#include <vector>
-
-// Forward declare the "fuzz target" interface.
-// We deliberately keep this inteface simple and header-free.
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
-
-int main(int argc, char **argv) {
-  for (int i = 1; i < argc; i++) {
-    std::ifstream in(argv[i]);
-    in.seekg(0, in.end);
-    size_t length = in.tellg();
-    in.seekg (0, in.beg);
-    std::cout << "Reading " << length << " bytes from " << argv[i] << std::endl;
-    // Allocate exactly length bytes so that we reliably catch buffer overflows.
-    std::vector<char> bytes(length);
-    in.read(bytes.data(), bytes.size());
-    assert(in);
-    LLVMFuzzerTestOneInput(reinterpret_cast<const uint8_t *>(bytes.data()),
-                           bytes.size());
-    std::cout << "Execution successful" << std::endl;
-  }
-  return 0;
-}
diff --git a/infra/cifuzz/test_data/memory/out/curl_fuzzer_memory b/infra/cifuzz/test_data/memory/out/curl_fuzzer_memory
deleted file mode 100755
index c602ce9..0000000
--- a/infra/cifuzz/test_data/memory/out/curl_fuzzer_memory
+++ /dev/null
Binary files differ
diff --git a/infra/cifuzz/test_data/msan_crash_fuzzer_bug_summary.txt b/infra/cifuzz/test_data/msan_crash_fuzzer_bug_summary.txt
deleted file mode 100644
index b55e9c6..0000000
--- a/infra/cifuzz/test_data/msan_crash_fuzzer_bug_summary.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-MemorySanitizer: use-of-uninitialized-value
-#0 0x52675f in LLVMFuzzerTestOneInput /src/cifuzz-example/do_stuff_fuzzer.cpp:13:7
-#1 0x45a431 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
-#2 0x45ba46 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:792:3
-#3 0x45bed9 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:845:3
-#4 0x44a4bc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:906:6
-#5 0x474432 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
-#6 0x7eff5562683f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2083f)
-#7 0x41eab8 in _start (out/do_stuff_fuzzer+0x41eab8)
-
-DEDUP_TOKEN: LLVMFuzzerTestOneInput--fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long)--fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&)
-Uninitialized value was created by a heap allocation
-#0 0x4d57ad in malloc /src/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:901:3
-#1 0x437c07 in operator new(unsigned long) (out/do_stuff_fuzzer+0x437c07)
-#2 0x45ba46 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:792:3
-#3 0x45bed9 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:845:3
-#4 0x44a4bc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:906:6
-#5 0x474432 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
-#6 0x7eff5562683f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2083f)
-DEDUP_TOKEN: malloc--operator new(unsigned long)--fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&)
-
-SUMMARY:
\ No newline at end of file
diff --git a/infra/cifuzz/test_data/msan_crash_fuzzer_output.txt b/infra/cifuzz/test_data/msan_crash_fuzzer_output.txt
deleted file mode 100644
index c803bfb..0000000
--- a/infra/cifuzz/test_data/msan_crash_fuzzer_output.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-Dictionary: 3 entries
-INFO: Running with entropic power schedule (0xFF, 100).
-INFO: Seed: 1337
-INFO: Loaded 1 modules   (184 inline 8-bit counters): 184 [0x829300, 0x8293b8), 
-INFO: Loaded 1 PC tables (184 PCs): 184 [0x5dc910,0x5dd490), 
-INFO:        5 files found in /tmp/do_stuff_fuzzer_corpus
-INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
-==13==WARNING: MemorySanitizer: use-of-uninitialized-value
-#0 0x52675f in LLVMFuzzerTestOneInput /src/cifuzz-example/do_stuff_fuzzer.cpp:13:7
-#1 0x45a431 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
-#2 0x45ba46 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:792:3
-#3 0x45bed9 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:845:3
-#4 0x44a4bc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:906:6
-#5 0x474432 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
-#6 0x7eff5562683f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2083f)
-#7 0x41eab8 in _start (out/do_stuff_fuzzer+0x41eab8)
-
-DEDUP_TOKEN: LLVMFuzzerTestOneInput--fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long)--fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&)
-Uninitialized value was created by a heap allocation
-#0 0x4d57ad in malloc /src/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:901:3
-#1 0x437c07 in operator new(unsigned long) (out/do_stuff_fuzzer+0x437c07)
-#2 0x45ba46 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:792:3
-#3 0x45bed9 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:845:3
-#4 0x44a4bc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:906:6
-#5 0x474432 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
-#6 0x7eff5562683f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2083f)
-DEDUP_TOKEN: malloc--operator new(unsigned long)--fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&)
-
-SUMMARY: MemorySanitizer: use-of-uninitialized-value /src/cifuzz-example/do_stuff_fuzzer.cpp:13:7 in LLVMFuzzerTestOneInput
-Unique heap origins: 65
-Stack depot allocated bytes: 4424
-Unique origin histories: 29
-History depot allocated bytes: 696
-Exiting
-MS: 0 ; base unit: 0000000000000000000000000000000000000000
-
-
-artifact_prefix='./'; Test unit written to ./crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
-Base64: 
diff --git a/infra/cifuzz/test_data/out/example_crash_fuzzer b/infra/cifuzz/test_data/out/example_crash_fuzzer
deleted file mode 100755
index 704800d..0000000
--- a/infra/cifuzz/test_data/out/example_crash_fuzzer
+++ /dev/null
Binary files differ
diff --git a/infra/cifuzz/test_data/out/example_nocrash_fuzzer b/infra/cifuzz/test_data/out/example_nocrash_fuzzer
deleted file mode 100755
index e4ff860..0000000
--- a/infra/cifuzz/test_data/out/example_nocrash_fuzzer
+++ /dev/null
Binary files differ
diff --git a/infra/cifuzz/test_data/undefined/out/curl_fuzzer_undefined b/infra/cifuzz/test_data/undefined/out/curl_fuzzer_undefined
deleted file mode 100755
index 504cab1..0000000
--- a/infra/cifuzz/test_data/undefined/out/curl_fuzzer_undefined
+++ /dev/null
Binary files differ
diff --git a/infra/dev-requirements.txt b/infra/dev-requirements.txt
new file mode 100644
index 0000000..55e3b50
--- /dev/null
+++ b/infra/dev-requirements.txt
@@ -0,0 +1,5 @@
+# Requirements for submitting code changes to infra/ (needed by presubmit.py).
+pylint==2.4.4
+yapf==0.28.0
+PyYAML==5.1
+
diff --git a/infra/gcb/.gitignore b/infra/gcb/.gitignore
new file mode 100644
index 0000000..4d3dae7
--- /dev/null
+++ b/infra/gcb/.gitignore
@@ -0,0 +1 @@
+default/
diff --git a/infra/gcb/badge_images/building.png b/infra/gcb/badge_images/building.png
new file mode 100644
index 0000000..9e7e734
--- /dev/null
+++ b/infra/gcb/badge_images/building.png
Binary files differ
diff --git a/infra/gcb/badge_images/building.svg b/infra/gcb/badge_images/building.svg
new file mode 100644
index 0000000..19f28d7
--- /dev/null
+++ b/infra/gcb/badge_images/building.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="104" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h55v20H0z"/><path fill="#4c1" d="M55 0h49v20H55z"/><path fill="url(#b)" d="M0 0h104v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="285" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="285" y="140" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="785" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">fuzzing</text><text x="785" y="140" transform="scale(.1)" textLength="390">fuzzing</text></g> </svg>
\ No newline at end of file
diff --git a/infra/gcb/badge_images/coverage_failing.png b/infra/gcb/badge_images/coverage_failing.png
new file mode 100644
index 0000000..85abe23
--- /dev/null
+++ b/infra/gcb/badge_images/coverage_failing.png
Binary files differ
diff --git a/infra/gcb/badge_images/coverage_failing.svg b/infra/gcb/badge_images/coverage_failing.svg
new file mode 100644
index 0000000..dc7b72e
--- /dev/null
+++ b/infra/gcb/badge_images/coverage_failing.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="152" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h55v20H0z"/><path fill="#dfb317" d="M55 0h97v20H55z"/><path fill="url(#b)" d="M0 0h152v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="285" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="285" y="140" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="1025" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="870">coverage failing</text><text x="1025" y="140" transform="scale(.1)" textLength="870">coverage failing</text></g> </svg>
\ No newline at end of file
diff --git a/infra/gcb/badge_images/failing.png b/infra/gcb/badge_images/failing.png
new file mode 100644
index 0000000..0d2bb47
--- /dev/null
+++ b/infra/gcb/badge_images/failing.png
Binary files differ
diff --git a/infra/gcb/badge_images/failing.svg b/infra/gcb/badge_images/failing.svg
new file mode 100644
index 0000000..ed0f862
--- /dev/null
+++ b/infra/gcb/badge_images/failing.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="128" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h55v20H0z"/><path fill="#e05d44" d="M55 0h73v20H55z"/><path fill="url(#b)" d="M0 0h128v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="285" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="285" y="140" transform="scale(.1)" textLength="450">oss-fuzz</text><text x="905" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="630">build failing</text><text x="905" y="140" transform="scale(.1)" textLength="630">build failing</text></g> </svg>
\ No newline at end of file
diff --git a/infra/gcb/build_and_run_coverage.py b/infra/gcb/build_and_run_coverage.py
new file mode 100644
index 0000000..b94fe35
--- /dev/null
+++ b/infra/gcb/build_and_run_coverage.py
@@ -0,0 +1,282 @@
+#!/usr/bin/python2
+"""Starts and runs coverage build on Google Cloud Builder.
+
+Usage: build_and_run_coverage.py <project_dir>
+"""
+
+import datetime
+import json
+import os
+import requests
+import sys
+import urlparse
+
+import build_lib
+import build_project
+
+SANITIZER = 'coverage'
+CONFIGURATION = ['FUZZING_ENGINE=libfuzzer', 'SANITIZER=%s' % SANITIZER]
+PLATFORM = 'linux'
+
+COVERAGE_BUILD_TAG = 'coverage'
+
+# Where code coverage reports need to be uploaded to.
+COVERAGE_BUCKET_NAME = 'oss-fuzz-coverage'
+
+# Link to the code coverage report in HTML format.
+HTML_REPORT_URL_FORMAT = (build_lib.GCS_URL_BASENAME + COVERAGE_BUCKET_NAME +
+                          '/{project}/reports/{date}/{platform}/index.html')
+
+# This is needed for ClusterFuzz to pick up the most recent reports data.
+LATEST_REPORT_INFO_URL = ('/' + COVERAGE_BUCKET_NAME +
+                          '/latest_report_info/{project}.json')
+
+# Link where to upload code coverage report files to.
+UPLOAD_URL_FORMAT = 'gs://' + COVERAGE_BUCKET_NAME + '/{project}/{type}/{date}'
+
+# Languages from project.yaml that have code coverage support.
+LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'cpp']
+
+
+def skip_build(message):
+  """Exit with 0 code not to mark code coverage job as failed."""
+  sys.stderr.write('%s\n' % message)
+
+  # Since the script should print build_id, print '0' as a special value.
+  print '0'
+  exit(0)
+
+
+def usage():
+  sys.stderr.write("Usage: " + sys.argv[0] + " <project_dir>\n")
+  exit(1)
+
+
+def get_build_steps(project_dir):
+  project_name = os.path.basename(project_dir)
+  project_yaml = build_project.load_project_yaml(project_dir)
+  if project_yaml['disabled']:
+    skip_build('Project "%s" is disabled.' % project_name)
+
+  build_script_path = os.path.join(project_dir, 'build.sh')
+  if os.path.exists(build_script_path):
+    with open(build_script_path) as fh:
+      if project_yaml['language'] not in LANGUAGES_WITH_COVERAGE_SUPPORT:
+        skip_build(('Project "{project_name}" is written in "{language}", '
+                    'coverage is not supported yet.').format(
+                        project_name=project_name,
+                        language=project_yaml['language']))
+
+  dockerfile_path = os.path.join(project_dir, 'Dockerfile')
+  name = project_yaml['name']
+  image = project_yaml['image']
+  report_date = datetime.datetime.now().strftime('%Y%m%d')
+
+  build_steps = [
+      {
+          'args': [
+              'clone',
+              'https://github.com/google/oss-fuzz.git',
+          ],
+          'name': 'gcr.io/cloud-builders/git',
+      },
+      {
+          'name': 'gcr.io/cloud-builders/docker',
+          'args': [
+              'build',
+              '-t',
+              image,
+              '.',
+          ],
+          'dir': 'oss-fuzz/projects/' + name,
+      },
+      {
+          'name': image,
+          'args': [
+              'bash', '-c',
+              'srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json'
+          ],
+          'env': ['OSSFUZZ_REVISION=$REVISION_ID'],
+      },
+  ]
+
+  env = CONFIGURATION[:]
+  out = '/workspace/out/' + SANITIZER
+  env.append('OUT=' + out)
+
+  workdir = build_project.workdir_from_dockerfile(dockerfile_path)
+  if not workdir:
+    workdir = '/src'
+
+  failure_msg = ('*' * 80 + '\nCoverage build failed.\nTo reproduce, run:\n'
+                 'python infra/helper.py build_image {name}\n'
+                 'python infra/helper.py build_fuzzers --sanitizer coverage '
+                 '{name}\n' + '*' * 80).format(name=name)
+
+  # Compilation step.
+  build_steps.append({
+      'name':
+          image,
+      'env':
+          env,
+      'args': [
+          'bash',
+          '-c',
+          # Remove /out to make sure there are non instrumented binaries.
+          # `cd /src && cd {workdir}` (where {workdir} is parsed from the
+          # Dockerfile). Container Builder overrides our workdir so we need
+          # to add this step to set it back.
+          ('rm -r /out && cd /src && cd {workdir} && mkdir -p {out} && '
+           'compile || (echo "{failure_msg}" && false)'
+          ).format(workdir=workdir, out=out, failure_msg=failure_msg),
+      ],
+  })
+
+  download_corpora_step = build_lib.download_corpora_step(project_name)
+  if not download_corpora_step:
+    skip_build("Skipping code coverage build for %s.\n" % project_name)
+
+  build_steps.append(download_corpora_step)
+
+  failure_msg = ('*' * 80 + '\nCode coverage report generation failed.\n'
+                 'To reproduce, run:\n'
+                 'python infra/helper.py build_image {name}\n'
+                 'python infra/helper.py build_fuzzers --sanitizer coverage '
+                 '{name}\n'
+                 'python infra/helper.py coverage {name}\n' +
+                 '*' * 80).format(name=name)
+
+  # Unpack the corpus and run coverage script.
+  build_steps.append({
+      'name':
+          'gcr.io/oss-fuzz-base/base-runner',
+      'env':
+          env + [
+              'HTTP_PORT=',
+              'COVERAGE_EXTRA_ARGS=%s' %
+              project_yaml['coverage_extra_args'].strip()
+          ],
+      'args': [
+          'bash', '-c',
+          ('for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*} || ('
+           'echo "Failed to unpack the corpus for $(basename ${f%%.*}). '
+           'This usually means that corpus backup for a particular fuzz '
+           'target does not exist. If a fuzz target was added in the last '
+           '24 hours, please wait one more day. Otherwise, something is '
+           'wrong with the fuzz target or the infrastructure, and corpus '
+           'pruning task does not finish successfully." && exit 1'
+           '); done && coverage || (echo "' + failure_msg + '" && false)')
+      ],
+      'volumes': [{
+          'name': 'corpus',
+          'path': '/corpus'
+      }],
+  })
+
+  # Upload the report.
+  upload_report_url = UPLOAD_URL_FORMAT.format(project=project_name,
+                                               type='reports',
+                                               date=report_date)
+  build_steps.append({
+      'name':
+          'gcr.io/cloud-builders/gsutil',
+      'args': [
+          '-m',
+          'cp',
+          '-r',
+          os.path.join(out, 'report'),
+          upload_report_url,
+      ],
+  })
+
+  # Upload the fuzzer stats.
+  upload_fuzzer_stats_url = UPLOAD_URL_FORMAT.format(project=project_name,
+                                                     type='fuzzer_stats',
+                                                     date=report_date)
+  build_steps.append({
+      'name':
+          'gcr.io/cloud-builders/gsutil',
+      'args': [
+          '-m',
+          'cp',
+          '-r',
+          os.path.join(out, 'fuzzer_stats'),
+          upload_fuzzer_stats_url,
+      ],
+  })
+
+  # Upload the fuzzer logs.
+  build_steps.append({
+      'name':
+          'gcr.io/cloud-builders/gsutil',
+      'args': [
+          '-m',
+          'cp',
+          '-r',
+          os.path.join(out, 'logs'),
+          UPLOAD_URL_FORMAT.format(project=project_name,
+                                   type='logs',
+                                   date=report_date),
+      ],
+  })
+
+  # Upload srcmap.
+  srcmap_upload_url = UPLOAD_URL_FORMAT.format(project=project_name,
+                                               type='srcmap',
+                                               date=report_date)
+  srcmap_upload_url = srcmap_upload_url.rstrip('/') + '.json'
+  build_steps.append({
+      'name': 'gcr.io/cloud-builders/gsutil',
+      'args': [
+          'cp',
+          '/workspace/srcmap.json',
+          srcmap_upload_url,
+      ],
+  })
+
+  # Update the latest report information file for ClusterFuzz.
+  latest_report_info_url = build_lib.get_signed_url(
+      LATEST_REPORT_INFO_URL.format(project=project_name),
+      method='PUT',
+      content_type='application/json')
+  latest_report_info_body = json.dumps({
+      'fuzzer_stats_dir':
+          upload_fuzzer_stats_url,
+      'html_report_url':
+          HTML_REPORT_URL_FORMAT.format(project=project_name,
+                                        date=report_date,
+                                        platform=PLATFORM),
+      'report_date':
+          report_date,
+      'report_summary_path':
+          os.path.join(upload_report_url, PLATFORM, 'summary.json'),
+  })
+
+  build_steps.append({
+      'name':
+          'gcr.io/cloud-builders/curl',
+      'args': [
+          '-H',
+          'Content-Type: application/json',
+          '-X',
+          'PUT',
+          '-d',
+          latest_report_info_body,
+          latest_report_info_url,
+      ],
+  })
+  return build_steps
+
+
+def main():
+  if len(sys.argv) != 2:
+    usage()
+
+  project_dir = sys.argv[1].rstrip(os.path.sep)
+  project_name = os.path.basename(project_dir)
+  steps = get_build_steps(project_dir)
+  build_project.run_build(steps, project_name, COVERAGE_BUILD_TAG)
+
+
+if __name__ == "__main__":
+  main()
diff --git a/infra/gcb/build_base_images.py b/infra/gcb/build_base_images.py
new file mode 100755
index 0000000..3c2bace
--- /dev/null
+++ b/infra/gcb/build_base_images.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python2
+"""Build base images on Google Cloud Builder.
+
+Usage: build_base_images.py
+"""
+
+import os
+import sys
+import yaml
+
+from oauth2client.client import GoogleCredentials
+from googleapiclient.discovery import build
+
+BASE_IMAGES = [
+    'base-image',
+    'base-clang',
+    'base-builder',
+    'base-runner',
+    'base-runner-debug',
+    'base-msan-builder',
+]
+
+TAG_PREFIX = 'gcr.io/oss-fuzz-base/'
+
+
+def get_steps(images):
+  steps = [{
+      'args': [
+          'clone',
+          'https://github.com/google/oss-fuzz.git',
+      ],
+      'name': 'gcr.io/cloud-builders/git',
+  }]
+
+  for base_image in images:
+    steps.append({
+        'args': [
+            'build',
+            '-t',
+            TAG_PREFIX + base_image,
+            '.',
+        ],
+        'dir': 'oss-fuzz/infra/base-images/' + base_image,
+        'name': 'gcr.io/cloud-builders/docker',
+    })
+
+  return steps
+
+
+def get_logs_url(build_id):
+  URL_FORMAT = ('https://console.developers.google.com/logs/viewer?'
+                'resource=build%2Fbuild_id%2F{0}&project=oss-fuzz-base')
+  return URL_FORMAT.format(build_id)
+
+
+def main():
+  options = {}
+  if 'GCB_OPTIONS' in os.environ:
+    options = yaml.safe_load(os.environ['GCB_OPTIONS'])
+
+  build_body = {
+      'steps': get_steps(BASE_IMAGES),
+      'timeout': str(4 * 3600) + 's',
+      'options': options,
+      'images': [TAG_PREFIX + base_image for base_image in BASE_IMAGES],
+  }
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
+  build_info = cloudbuild.projects().builds().create(
+      projectId='oss-fuzz-base', body=build_body).execute()
+  build_id = build_info['metadata']['build']['id']
+
+  print >> sys.stderr, 'Logs:', get_logs_url(build_id)
+  print build_id
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/gcb/build_lib.py b/infra/gcb/build_lib.py
new file mode 100644
index 0000000..d350873
--- /dev/null
+++ b/infra/gcb/build_lib.py
@@ -0,0 +1,134 @@
+"""Utility module for Google Cloud Build scripts."""
+import base64
+import collections
+import os
+import requests
+import sys
+import time
+import urllib
+import urlparse
+
+from oauth2client.service_account import ServiceAccountCredentials
+
+BUILD_TIMEOUT = 12 * 60 * 60
+
+# Needed for reading public target.list.* files.
+GCS_URL_BASENAME = 'https://storage.googleapis.com/'
+
+GCS_UPLOAD_URL_FORMAT = '/{0}/{1}/{2}'
+
+# Where corpus backups can be downloaded from.
+CORPUS_BACKUP_URL = ('/{project}-backup.clusterfuzz-external.appspot.com/'
+                     'corpus/libFuzzer/{fuzzer}/latest.zip')
+
+# Cloud Builder has a limit of 100 build steps and 100 arguments for each step.
+CORPUS_DOWNLOAD_BATCH_SIZE = 100
+
+TARGETS_LIST_BASENAME = 'targets.list'
+
+EngineInfo = collections.namedtuple(
+    'EngineInfo',
+    ['upload_bucket', 'supported_sanitizers', 'supported_architectures'])
+
+ENGINE_INFO = {
+    'libfuzzer':
+        EngineInfo(upload_bucket='clusterfuzz-builds',
+                   supported_sanitizers=['address', 'memory', 'undefined'],
+                   supported_architectures=['x86_64', 'i386']),
+    'afl':
+        EngineInfo(upload_bucket='clusterfuzz-builds-afl',
+                   supported_sanitizers=['address'],
+                   supported_architectures=['x86_64']),
+    'honggfuzz':
+        EngineInfo(upload_bucket='clusterfuzz-builds-honggfuzz',
+                   supported_sanitizers=['address', 'memory', 'undefined'],
+                   supported_architectures=['x86_64']),
+    'dataflow':
+        EngineInfo(upload_bucket='clusterfuzz-builds-dataflow',
+                   supported_sanitizers=['dataflow'],
+                   supported_architectures=['x86_64']),
+    'none':
+        EngineInfo(upload_bucket='clusterfuzz-builds-no-engine',
+                   supported_sanitizers=['address'],
+                   supported_architectures=['x86_64']),
+}
+
+
+def get_targets_list_filename(sanitizer):
+  return TARGETS_LIST_BASENAME + '.' + sanitizer
+
+
+def get_targets_list_url(bucket, project, sanitizer):
+  filename = get_targets_list_filename(sanitizer)
+  url = GCS_UPLOAD_URL_FORMAT.format(bucket, project, filename)
+  return url
+
+
+def _get_targets_list(project_name):
+  # libFuzzer ASan is the default configuration, get list of targets from it.
+  url = get_targets_list_url(ENGINE_INFO['libfuzzer'].upload_bucket,
+                             project_name, 'address')
+
+  url = urlparse.urljoin(GCS_URL_BASENAME, url)
+  response = requests.get(url)
+  if not response.status_code == 200:
+    sys.stderr.write('Failed to get list of targets from "%s".\n' % url)
+    sys.stderr.write('Status code: %d \t\tText:\n%s\n' %
+                     (response.status_code, response.text))
+    return None
+
+  return response.text.split()
+
+
+def get_signed_url(path, method='PUT', content_type=''):
+  timestamp = int(time.time() + BUILD_TIMEOUT)
+  blob = '{0}\n\n{1}\n{2}\n{3}'.format(method, content_type, timestamp, path)
+
+  creds = ServiceAccountCredentials.from_json_keyfile_name(
+      os.environ['GOOGLE_APPLICATION_CREDENTIALS'])
+  client_id = creds.service_account_email
+  signature = base64.b64encode(creds.sign_blob(blob)[1])
+  values = {
+      'GoogleAccessId': client_id,
+      'Expires': timestamp,
+      'Signature': signature,
+  }
+
+  return ('https://storage.googleapis.com{0}?'.format(path) +
+          urllib.urlencode(values))
+
+
+def download_corpora_step(project_name):
+  """Returns a GCB step for downloading corpora backups for the given project.
+  """
+  fuzz_targets = _get_targets_list(project_name)
+  if not fuzz_targets:
+    sys.stderr.write('No fuzz targets found for project "%s".\n' % project_name)
+    return None
+
+  # Split fuzz targets into batches of CORPUS_DOWNLOAD_BATCH_SIZE.
+  for i in range(0, len(fuzz_targets), CORPUS_DOWNLOAD_BATCH_SIZE):
+    download_corpus_args = []
+    for binary_name in fuzz_targets[i:i + CORPUS_DOWNLOAD_BATCH_SIZE]:
+      qualified_name = binary_name
+      qualified_name_prefix = '%s_' % project_name
+      if not binary_name.startswith(qualified_name_prefix):
+        qualified_name = qualified_name_prefix + binary_name
+
+      url = get_signed_url(CORPUS_BACKUP_URL.format(project=project_name,
+                                                    fuzzer=qualified_name),
+                           method='GET')
+
+      corpus_archive_path = os.path.join('/corpus', binary_name + '.zip')
+      download_corpus_args.append('%s %s' % (corpus_archive_path, url))
+
+    step = {
+        'name': 'gcr.io/oss-fuzz-base/base-runner',
+        'entrypoint': 'download_corpus',
+        'args': download_corpus_args,
+        'volumes': [{
+            'name': 'corpus',
+            'path': '/corpus'
+        }],
+    }
+    return step
diff --git a/infra/gcb/build_msan_libs.py b/infra/gcb/build_msan_libs.py
new file mode 100755
index 0000000..2c87b15
--- /dev/null
+++ b/infra/gcb/build_msan_libs.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python2
+"""Build base images on Google Cloud Builder.
+
+Usage: build_base_images.py
+"""
+
+import datetime
+import os
+import yaml
+import sys
+
+from oauth2client.client import GoogleCredentials
+from googleapiclient.discovery import build
+
+import build_base_images
+
+
+def main():
+  options = {}
+  if 'GCB_OPTIONS' in os.environ:
+    options = yaml.safe_load(os.environ['GCB_OPTIONS'])
+
+  image = 'gcr.io/oss-fuzz-base/msan-builder'
+  steps = build_base_images.get_steps(['base-msan-builder', 'msan-builder'])
+  ts = datetime.datetime.utcnow().strftime('%Y%m%d%H%M')
+  upload_name = 'msan-libs-' + ts + '.zip'
+
+  steps.extend([{
+      'name': image,
+      'args': [
+          'bash',
+          '-c',
+          'cd /msan && zip -r /workspace/libs.zip .',
+      ],
+  }, {
+      'name':
+          'gcr.io/cloud-builders/gsutil',
+      'args': [
+          'cp',
+          '/workspace/libs.zip',
+          'gs://oss-fuzz-msan-libs/' + upload_name,
+      ],
+  }])
+
+  build_body = {
+      'steps': steps,
+      'timeout': str(6 * 3600) + 's',
+      'options': options,
+      'images': [
+          'gcr.io/oss-fuzz-base/base-msan-builder',
+          image,
+      ],
+  }
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
+  build_info = cloudbuild.projects().builds().create(
+      projectId='oss-fuzz-base', body=build_body).execute()
+  build_id = build_info['metadata']['build']['id']
+
+  print >> sys.stderr, 'Logs:', build_base_images.get_logs_url(build_id)
+  print build_id
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/gcb/build_project.py b/infra/gcb/build_project.py
new file mode 100644
index 0000000..f45b099
--- /dev/null
+++ b/infra/gcb/build_project.py
@@ -0,0 +1,405 @@
+#!/usr/bin/python2
+"""Starts project build on Google Cloud Builder.
+
+Usage: build_project.py <project_dir>
+"""
+
+from __future__ import print_function
+
+import datetime
+import json
+import os
+import re
+import sys
+import yaml
+
+from oauth2client.client import GoogleCredentials
+from googleapiclient.discovery import build
+
+import build_lib
+
+FUZZING_BUILD_TAG = 'fuzzing'
+
+GCB_LOGS_BUCKET = 'oss-fuzz-gcb-logs'
+
+CONFIGURATIONS = {
+    'sanitizer-address': ['SANITIZER=address'],
+    'sanitizer-dataflow': ['SANITIZER=dataflow'],
+    'sanitizer-memory': ['SANITIZER=memory'],
+    'sanitizer-undefined': ['SANITIZER=undefined'],
+    'engine-libfuzzer': ['FUZZING_ENGINE=libfuzzer'],
+    'engine-afl': ['FUZZING_ENGINE=afl'],
+    'engine-honggfuzz': ['FUZZING_ENGINE=honggfuzz'],
+    'engine-dataflow': ['FUZZING_ENGINE=dataflow'],
+    'engine-none': ['FUZZING_ENGINE=none'],
+}
+
+DEFAULT_ARCHITECTURES = ['x86_64']
+DEFAULT_ENGINES = ['libfuzzer', 'afl', 'honggfuzz']
+DEFAULT_SANITIZERS = ['address', 'undefined']
+
+
+def usage():
+  sys.stderr.write('Usage: ' + sys.argv[0] + ' <project_dir>\n')
+  exit(1)
+
+
+def load_project_yaml(project_dir):
+  project_name = os.path.basename(project_dir)
+  project_yaml_path = os.path.join(project_dir, 'project.yaml')
+  with open(project_yaml_path) as f:
+    project_yaml = yaml.safe_load(f)
+    project_yaml.setdefault('disabled', False)
+    project_yaml.setdefault('name', project_name)
+    project_yaml.setdefault('image', 'gcr.io/oss-fuzz/' + project_name)
+    project_yaml.setdefault('architectures', DEFAULT_ARCHITECTURES)
+    project_yaml.setdefault('sanitizers', DEFAULT_SANITIZERS)
+    project_yaml.setdefault('fuzzing_engines', DEFAULT_ENGINES)
+    project_yaml.setdefault('run_tests', True)
+    project_yaml.setdefault('coverage_extra_args', '')
+    project_yaml.setdefault('labels', {})
+    project_yaml.setdefault('language', 'cpp')
+    return project_yaml
+
+
+def is_supported_configuration(fuzzing_engine, sanitizer, architecture):
+  fuzzing_engine_info = build_lib.ENGINE_INFO[fuzzing_engine]
+  if architecture == 'i386' and sanitizer != 'address':
+    return False
+  return (sanitizer in fuzzing_engine_info.supported_sanitizers and
+          architecture in fuzzing_engine_info.supported_architectures)
+
+
+def get_sanitizers(project_yaml):
+  sanitizers = project_yaml['sanitizers']
+  assert isinstance(sanitizers, list)
+
+  processed_sanitizers = []
+  for sanitizer in sanitizers:
+    if isinstance(sanitizer, basestring):
+      processed_sanitizers.append(sanitizer)
+    elif isinstance(sanitizer, dict):
+      for key in sanitizer.iterkeys():
+        processed_sanitizers.append(key)
+
+  return processed_sanitizers
+
+
+def workdir_from_dockerfile(dockerfile):
+  """Parse WORKDIR from the Dockerfile."""
+  WORKDIR_REGEX = re.compile(r'\s*WORKDIR\s*([^\s]+)')
+
+  with open(dockerfile) as f:
+    lines = f.readlines()
+
+  for line in lines:
+    match = re.match(WORKDIR_REGEX, line)
+    if match:
+      # We need to escape '$' since they're used for subsitutions in Container
+      # Builer builds.
+      return match.group(1).replace('$', '$$')
+
+  return None
+
+
+def get_build_steps(project_dir):
+  project_yaml = load_project_yaml(project_dir)
+  dockerfile_path = os.path.join(project_dir, 'Dockerfile')
+  name = project_yaml['name']
+  image = project_yaml['image']
+  run_tests = project_yaml['run_tests']
+
+  ts = datetime.datetime.now().strftime('%Y%m%d%H%M')
+
+  build_steps = [
+      {
+          'args': [
+              'clone',
+              'https://github.com/google/oss-fuzz.git',
+          ],
+          'name': 'gcr.io/cloud-builders/git',
+      },
+      {
+          'name': 'gcr.io/cloud-builders/docker',
+          'args': [
+              'build',
+              '-t',
+              image,
+              '.',
+          ],
+          'dir': 'oss-fuzz/projects/' + name,
+      },
+      {
+          'name': image,
+          'args': [
+              'bash', '-c',
+              'srcmap > /workspace/srcmap.json && cat /workspace/srcmap.json'
+          ],
+          'env': ['OSSFUZZ_REVISION=$REVISION_ID'],
+      },
+      {
+          'name': 'gcr.io/oss-fuzz-base/msan-builder',
+          'args': [
+              'bash',
+              '-c',
+              'cp -r /msan /workspace',
+          ],
+      },
+  ]
+
+  for fuzzing_engine in project_yaml['fuzzing_engines']:
+    for sanitizer in get_sanitizers(project_yaml):
+      for architecture in project_yaml['architectures']:
+        if not is_supported_configuration(fuzzing_engine, sanitizer,
+                                          architecture):
+          continue
+
+        env = CONFIGURATIONS['engine-' + fuzzing_engine][:]
+        env.extend(CONFIGURATIONS['sanitizer-' + sanitizer])
+        out = '/workspace/out/' + sanitizer
+        stamped_name = '-'.join([name, sanitizer, ts])
+        zip_file = stamped_name + '.zip'
+        stamped_srcmap_file = stamped_name + '.srcmap.json'
+        bucket = build_lib.ENGINE_INFO[fuzzing_engine].upload_bucket
+        if architecture != 'x86_64':
+          bucket += '-' + architecture
+        upload_url = build_lib.get_signed_url(
+            build_lib.GCS_UPLOAD_URL_FORMAT.format(bucket, name, zip_file))
+        srcmap_url = build_lib.get_signed_url(
+            build_lib.GCS_UPLOAD_URL_FORMAT.format(bucket, name,
+                                                   stamped_srcmap_file))
+
+        targets_list_filename = build_lib.get_targets_list_filename(sanitizer)
+        targets_list_url = build_lib.get_signed_url(
+            build_lib.get_targets_list_url(bucket, name, sanitizer))
+
+        env.append('OUT=' + out)
+        env.append('MSAN_LIBS_PATH=/workspace/msan')
+        env.append('ARCHITECTURE=' + architecture)
+
+        workdir = workdir_from_dockerfile(dockerfile_path)
+        if not workdir:
+          workdir = '/src'
+
+        failure_msg = ('*' * 80 + '\nFailed to build.\nTo reproduce, run:\n'
+                       'python infra/helper.py build_image {name}\n'
+                       'python infra/helper.py build_fuzzers --sanitizer '
+                       '{sanitizer} --engine {engine} --architecture '
+                       '{architecture} {name}\n' + '*' * 80).format(
+                           name=name,
+                           sanitizer=sanitizer,
+                           engine=fuzzing_engine,
+                           architecture=architecture)
+
+        build_steps.append(
+            # compile
+            {
+                'name':
+                    image,
+                'env':
+                    env,
+                'args': [
+                    'bash',
+                    '-c',
+                    # Remove /out to break loudly when a build script
+                    # incorrectly uses /out instead of $OUT.
+                    # `cd /src && cd {workdir}` (where {workdir} is parsed from
+                    # the Dockerfile). Container Builder overrides our workdir
+                    # so we need to add this step to set it back.
+                    ('rm -r /out && cd /src && cd {workdir} && mkdir -p {out} && '
+                     'compile || (echo "{failure_msg}" && false)'
+                    ).format(workdir=workdir, out=out, failure_msg=failure_msg),
+                ],
+            })
+
+        if sanitizer == 'memory':
+          # Patch dynamic libraries to use instrumented ones.
+          build_steps.append({
+              'name':
+                  'gcr.io/oss-fuzz-base/msan-builder',
+              'args': [
+                  'bash',
+                  '-c',
+                  # TODO(ochang): Replace with just patch_build.py once
+                  # permission in image is fixed.
+                  'python /usr/local/bin/patch_build.py {0}'.format(out),
+              ],
+          })
+
+        if run_tests:
+          failure_msg = ('*' * 80 + '\nBuild checks failed.\n'
+                         'To reproduce, run:\n'
+                         'python infra/helper.py build_image {name}\n'
+                         'python infra/helper.py build_fuzzers --sanitizer '
+                         '{sanitizer} --engine {engine} --architecture '
+                         '{architecture} {name}\n'
+                         'python infra/helper.py check_build --sanitizer '
+                         '{sanitizer} --engine {engine} --architecture '
+                         '{architecture} {name}\n' + '*' * 80).format(
+                             name=name,
+                             sanitizer=sanitizer,
+                             engine=fuzzing_engine,
+                             architecture=architecture)
+
+          build_steps.append(
+              # test binaries
+              {
+                  'name':
+                      'gcr.io/oss-fuzz-base/base-runner',
+                  'env':
+                      env,
+                  'args': [
+                      'bash', '-c',
+                      'test_all || (echo "{0}" && false)'.format(failure_msg)
+                  ],
+              })
+
+        if project_yaml['labels']:
+          # write target labels
+          build_steps.append({
+              'name':
+                  image,
+              'env':
+                  env,
+              'args': [
+                  '/usr/local/bin/write_labels.py',
+                  json.dumps(project_yaml['labels']),
+                  out,
+              ],
+          })
+
+        if sanitizer == 'dataflow' and fuzzing_engine == 'dataflow':
+          dataflow_steps = dataflow_post_build_steps(name, env)
+          if dataflow_steps:
+            build_steps.extend(dataflow_steps)
+          else:
+            sys.stderr.write('Skipping dataflow post build steps.\n')
+
+        build_steps.extend([
+            # generate targets list
+            {
+                'name':
+                    'gcr.io/oss-fuzz-base/base-runner',
+                'env':
+                    env,
+                'args': [
+                    'bash',
+                    '-c',
+                    'targets_list > /workspace/{0}'.format(
+                        targets_list_filename),
+                ],
+            },
+            # zip binaries
+            {
+                'name':
+                    image,
+                'args': [
+                    'bash', '-c',
+                    'cd {out} && zip -r {zip_file} *'.format(out=out,
+                                                             zip_file=zip_file)
+                ],
+            },
+            # upload srcmap
+            {
+                'name': 'gcr.io/oss-fuzz-base/uploader',
+                'args': [
+                    '/workspace/srcmap.json',
+                    srcmap_url,
+                ],
+            },
+            # upload binaries
+            {
+                'name': 'gcr.io/oss-fuzz-base/uploader',
+                'args': [
+                    os.path.join(out, zip_file),
+                    upload_url,
+                ],
+            },
+            # upload targets list
+            {
+                'name':
+                    'gcr.io/oss-fuzz-base/uploader',
+                'args': [
+                    '/workspace/{0}'.format(targets_list_filename),
+                    targets_list_url,
+                ],
+            },
+            # cleanup
+            {
+                'name': image,
+                'args': [
+                    'bash',
+                    '-c',
+                    'rm -r ' + out,
+                ],
+            },
+        ])
+
+  return build_steps
+
+
+def dataflow_post_build_steps(project_name, env):
+  steps = []
+  download_corpora_step = build_lib.download_corpora_step(project_name)
+  if not download_corpora_step:
+    return None
+
+  steps = [download_corpora_step]
+  steps.append({
+      'name': 'gcr.io/oss-fuzz-base/base-runner',
+      'env': env,
+      'args': [
+          'bash', '-c',
+          ('for f in /corpus/*.zip; do unzip -q $f -d ${f%%.*}; done && '
+           'collect_dft || (echo "DFT collection failed." && false)')
+      ],
+      'volumes': [{
+          'name': 'corpus',
+          'path': '/corpus'
+      }],
+  })
+  return steps
+
+
+def get_logs_url(build_id):
+  URL_FORMAT = ('https://console.developers.google.com/logs/viewer?'
+                'resource=build%2Fbuild_id%2F{0}&project=oss-fuzz')
+  return URL_FORMAT.format(build_id)
+
+
+def run_build(build_steps, project_name, tag):
+  options = {}
+  if 'GCB_OPTIONS' in os.environ:
+    options = yaml.safe_load(os.environ['GCB_OPTIONS'])
+
+  build_body = {
+      'steps': build_steps,
+      'timeout': str(build_lib.BUILD_TIMEOUT) + 's',
+      'options': options,
+      'logsBucket': GCB_LOGS_BUCKET,
+      'tags': [project_name + '-' + tag,],
+  }
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
+  build_info = cloudbuild.projects().builds().create(projectId='oss-fuzz',
+                                                     body=build_body).execute()
+  build_id = build_info['metadata']['build']['id']
+
+  print('Logs:', get_logs_url(build_id), file=sys.stderr)
+  print(build_id)
+
+
+def main():
+  if len(sys.argv) != 2:
+    usage()
+
+  project_dir = sys.argv[1].rstrip(os.path.sep)
+  steps = get_build_steps(project_dir)
+
+  project_name = os.path.basename(project_dir)
+  run_build(steps, project_name, FUZZING_BUILD_TAG)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/gcb/builds_status.py b/infra/gcb/builds_status.py
new file mode 100755
index 0000000..5352d36
--- /dev/null
+++ b/infra/gcb/builds_status.py
@@ -0,0 +1,243 @@
+#!/usr/bin/env python2
+
+import datetime
+import os
+import sys
+import json
+import tempfile
+import time
+
+import dateutil.parser
+from oauth2client.client import GoogleCredentials
+from googleapiclient.discovery import build as gcb_build
+from google.cloud import storage
+
+import build_and_run_coverage
+import build_project
+
+STATUS_BUCKET = 'oss-fuzz-build-logs'
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+BADGE_DIR = 'badges'
+RETRY_COUNT = 3
+RETRY_WAIT = 5
+MAX_BUILD_RESULTS = 2000
+BUILDS_PAGE_SIZE = 256
+BADGE_IMAGE_TYPES = {'svg': 'image/svg+xml', 'png': 'image/png'}
+
+_client = None
+
+
+def _get_storage_client():
+  """Return storage client."""
+  global _client
+  if not _client:
+    _client = storage.Client()
+
+  return _client
+
+
+def usage():
+  sys.stderr.write('Usage: ' + sys.argv[0] + ' <projects_dir>\n')
+  exit(1)
+
+
+def scan_project_names(projects_dir):
+  projects = []
+  for root, dirs, files in os.walk(projects_dir):
+    for f in files:
+      if f == 'Dockerfile':
+        projects.append(os.path.basename(root))
+  return sorted(projects)
+
+
+def upload_status(successes, failures, status_filename):
+  """Upload main status page."""
+  data = {
+      'projects': failures + successes,
+      'failures': failures,
+      'successes': successes,
+      'last_updated': datetime.datetime.utcnow().ctime()
+  }
+
+  bucket = _get_storage_client().get_bucket(STATUS_BUCKET)
+  blob = bucket.blob(status_filename)
+  blob.cache_control = 'no-cache'
+  blob.upload_from_string(json.dumps(data), content_type='application/json')
+
+
+def is_build_successful(build):
+  return build['status'] == 'SUCCESS'
+
+
+def find_last_build(builds, project, build_tag_suffix):
+  DELAY_MINUTES = 40
+  tag = project + '-' + build_tag_suffix
+
+  builds = builds.get(tag)
+  if not builds:
+    print >> sys.stderr, 'Failed to find builds with tag', tag
+    return None
+
+  for build in builds:
+    if build['status'] == 'WORKING':
+      continue
+
+    if tag not in build['tags']:
+      continue
+
+    if not 'finishTime' in build:
+      continue
+
+    finish_time = dateutil.parser.parse(build['finishTime'], ignoretz=True)
+    if (datetime.datetime.utcnow() - finish_time >=
+        datetime.timedelta(minutes=DELAY_MINUTES)):
+      status_bucket = _get_storage_client().get_bucket(STATUS_BUCKET)
+      gcb_bucket = _get_storage_client().get_bucket(
+          build_project.GCB_LOGS_BUCKET)
+      log_name = 'log-{0}.txt'.format(build['id'])
+      log = gcb_bucket.blob(log_name)
+      dest_log = status_bucket.blob(log_name)
+
+      with tempfile.NamedTemporaryFile() as f:
+        log.download_to_filename(f.name)
+        dest_log.upload_from_filename(f.name, content_type='text/plain')
+
+      return build
+
+  return None
+
+
+def execute_with_retries(request):
+  for i in xrange(RETRY_COUNT + 1):
+    try:
+      return request.execute()
+    except Exception as e:
+      print('request failed with {0}, retrying...'.format(str(e)))
+      if i < RETRY_COUNT:
+        time.sleep(RETRY_WAIT)
+        continue
+
+      raise
+
+
+def get_builds(cloudbuild):
+  """Get a batch of the latest builds (up to MAX_BUILD_RESULTS), grouped by
+  tag."""
+  ungrouped_builds = []
+  next_page_token = None
+
+  while True:
+    page_size = min(BUILDS_PAGE_SIZE, MAX_BUILD_RESULTS - len(ungrouped_builds))
+    response = execute_with_retries(cloudbuild.projects().builds().list(
+        projectId='oss-fuzz', pageSize=page_size, pageToken=next_page_token))
+
+    if not 'builds' in response:
+      print >> sys.stderr, 'Invalid response from builds list:', response
+      return None
+
+    ungrouped_builds.extend(response['builds'])
+    if len(ungrouped_builds) >= MAX_BUILD_RESULTS:
+      break
+
+    next_page_token = response.get('nextPageToken')
+
+  builds = {}
+  for build in ungrouped_builds:
+    for tag in build['tags']:
+      builds.setdefault(tag, []).append(build)
+
+  return builds
+
+
+def update_build_status(builds, projects, build_tag_suffix, status_filename):
+  successes = []
+  failures = []
+
+  for project in projects:
+    print project
+
+    last_build = find_last_build(builds, project, build_tag_suffix)
+    if not last_build:
+      print >> sys.stderr, 'Failed to get build for', project
+      continue
+
+    print last_build['startTime'], last_build['status'], last_build['id']
+    if is_build_successful(last_build):
+      successes.append({
+          'name': project,
+          'build_id': last_build['id'],
+          'finish_time': last_build['finishTime'],
+          'success': True,
+      })
+    else:
+      failures.append({
+          'name': project,
+          'build_id': last_build['id'],
+          'finish_time': last_build['finishTime'],
+          'success': False,
+      })
+
+  upload_status(successes, failures, status_filename)
+
+
+def update_build_badges(builds, projects, build_tag, coverage_tag):
+  for project in projects:
+    last_build = find_last_build(builds, project, build_tag)
+    last_coverage_build = find_last_build(builds, project, coverage_tag)
+    if not last_build or not last_coverage_build:
+      continue
+
+    badge = 'building'
+    if not is_build_successful(last_coverage_build):
+      badge = 'coverage_failing'
+    if not is_build_successful(last_build):
+      badge = 'failing'
+
+    print("[badge] {}: {}".format(project, badge))
+
+    for extension, mime_type in BADGE_IMAGE_TYPES.items():
+      badge_name = '{badge}.{extension}'.format(
+          badge=badge, extension=extension)
+      # Retrieve the image relative to this script's location
+      badge_file = os.path.join(SCRIPT_DIR, 'badge_images', badge_name)
+
+      # The uploaded blob name should look like `badges/project.png`
+      blob_name = '{badge_dir}/{project_name}.{extension}'.format(
+          badge_dir=BADGE_DIR, project_name=project, extension=extension)
+
+      status_bucket = _get_storage_client().get_bucket(STATUS_BUCKET)
+      badge_blob = status_bucket.blob(blob_name)
+      badge_blob.upload_from_filename(badge_file, content_type=mime_type)
+
+
+def main():
+  if len(sys.argv) != 2:
+    usage()
+
+  projects_dir = sys.argv[1]
+  projects = scan_project_names(projects_dir)
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = gcb_build('cloudbuild', 'v1', credentials=credentials)
+
+  builds = get_builds(cloudbuild)
+  update_build_status(
+      builds,
+      projects,
+      build_project.FUZZING_BUILD_TAG,
+      status_filename='status.json')
+  update_build_status(
+      builds,
+      projects,
+      build_and_run_coverage.COVERAGE_BUILD_TAG,
+      status_filename='status-coverage.json')
+
+  update_build_badges(
+      builds,
+      projects,
+      build_tag=build_project.FUZZING_BUILD_TAG,
+      coverage_tag=build_and_run_coverage.COVERAGE_BUILD_TAG)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/gcb/cancel.py b/infra/gcb/cancel.py
new file mode 100755
index 0000000..8393a51
--- /dev/null
+++ b/infra/gcb/cancel.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python2
+"""Cancels project build on Google Cloud Builder.
+
+Usage: cancel.py <build_id>
+"""
+
+import base64
+import collections
+import datetime
+import os
+import subprocess
+import sys
+import time
+import urllib
+import yaml
+
+from oauth2client.client import GoogleCredentials
+from googleapiclient.discovery import build
+
+
+def usage():
+  sys.stderr.write('Usage: ' + sys.argv[0] + ' <build_id>\n')
+  exit(1)
+
+
+def main():
+  if len(sys.argv) != 2:
+    usage()
+
+  build_id = sys.argv[1]
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
+  print cloudbuild.projects().builds().cancel(projectId='oss-fuzz',
+                                              id=build_id,
+                                              body={}).execute()
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/gcb/jenkins_config/base_job.xml b/infra/gcb/jenkins_config/base_job.xml
new file mode 100644
index 0000000..fa90aa4
--- /dev/null
+++ b/infra/gcb/jenkins_config/base_job.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<project>
+  <actions/>
+  <description></description>
+  <keepDependencies>false</keepDependencies>
+  <properties/>
+  <scm class="hudson.plugins.git.GitSCM" plugin="git@3.1.0">
+    <configVersion>2</configVersion>
+    <userRemoteConfigs>
+      <hudson.plugins.git.UserRemoteConfig>
+        <url>https://github.com/google/oss-fuzz.git</url>
+      </hudson.plugins.git.UserRemoteConfig>
+    </userRemoteConfigs>
+    <branches>
+      <hudson.plugins.git.BranchSpec>
+        <name>*/master</name>
+      </hudson.plugins.git.BranchSpec>
+    </branches>
+    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
+    <submoduleCfg class="list"/>
+    <extensions>
+      <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
+        <relativeTargetDir>oss-fuzz</relativeTargetDir>
+      </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
+    </extensions>
+  </scm>
+  <canRoam>true</canRoam>
+  <disabled>false</disabled>
+  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
+  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
+  <triggers>
+    <jenkins.triggers.ReverseBuildTrigger>
+      <spec/>
+      <upstreamProjects>infra/base-images</upstreamProjects>
+      <threshold>
+        <name>SUCCESS</name>
+        <ordinal>0</ordinal>
+        <color>BLUE</color>
+        <completeBuild>true</completeBuild>
+      </threshold>
+    </jenkins.triggers.ReverseBuildTrigger>
+  </triggers>
+  <concurrentBuild>false</concurrentBuild>
+  <builders>
+    <hudson.tasks.Shell>
+      <command>#!/bin/bash -eux
+
+virtualenv ENV
+set +o nounset
+. ENV/bin/activate
+set -o nounset
+
+cd $WORKSPACE/oss-fuzz/infra/gcb
+pip install -r requirements.txt
+build_id=$(python build_project.py $WORKSPACE/oss-fuzz/$JOB_NAME)
+python wait_for_build.py $build_id
+</command>
+    </hudson.tasks.Shell>
+  </builders>
+  <publishers/>
+  <buildWrappers/>
+</project>
diff --git a/infra/gcb/jenkins_config/coverage_job.xml b/infra/gcb/jenkins_config/coverage_job.xml
new file mode 100644
index 0000000..be5cb82
--- /dev/null
+++ b/infra/gcb/jenkins_config/coverage_job.xml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<project>
+  <actions/>
+  <description></description>
+  <keepDependencies>false</keepDependencies>
+  <properties/>
+  <scm class="hudson.plugins.git.GitSCM" plugin="git@3.1.0">
+    <configVersion>2</configVersion>
+    <userRemoteConfigs>
+      <hudson.plugins.git.UserRemoteConfig>
+        <url>https://github.com/google/oss-fuzz.git</url>
+      </hudson.plugins.git.UserRemoteConfig>
+    </userRemoteConfigs>
+    <branches>
+      <hudson.plugins.git.BranchSpec>
+        <name>*/master</name>
+      </hudson.plugins.git.BranchSpec>
+    </branches>
+    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
+    <submoduleCfg class="list"/>
+    <extensions>
+      <hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
+        <relativeTargetDir>oss-fuzz</relativeTargetDir>
+      </hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
+    </extensions>
+  </scm>
+  <canRoam>true</canRoam>
+  <disabled>false</disabled>
+  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
+  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
+  <triggers>
+    <hudson.triggers.TimerTrigger>
+      <spec>H 6 * * *</spec>
+    </hudson.triggers.TimerTrigger>
+  </triggers>
+  <concurrentBuild>false</concurrentBuild>
+  <builders>
+    <hudson.tasks.Shell>
+      <command>#!/bin/bash -eux
+
+virtualenv ENV
+set +o nounset
+. ENV/bin/activate
+set -o nounset
+
+cd $WORKSPACE/oss-fuzz/infra/gcb
+pip install -r requirements.txt
+project_dir=$WORKSPACE/oss-fuzz/projects/$(basename $JOB_NAME)
+build_id=$(python build_and_run_coverage.py $project_dir)
+if [[ "$build_id" == "0" ]]; then
+  echo "Intentionally skipping code coverage job."
+else
+  python wait_for_build.py $build_id
+fi
+</command>
+    </hudson.tasks.Shell>
+  </builders>
+  <publishers/>
+  <buildWrappers/>
+</project>
diff --git a/infra/gcb/requirements.txt b/infra/gcb/requirements.txt
new file mode 100644
index 0000000..af53d16
--- /dev/null
+++ b/infra/gcb/requirements.txt
@@ -0,0 +1,35 @@
+cachetools==2.1.0
+certifi==2018.4.16
+chardet==3.0.4
+enum34==1.1.6
+futures==3.2.0
+google-api-core==1.2.0
+google-api-python-client==1.7.0
+google-auth==1.5.0
+google-auth-httplib2==0.0.3
+google-cloud-core==0.28.1
+google-cloud-logging==1.6.0
+google-cloud-pubsub==0.35.2
+google-cloud-storage==1.10.0
+google-resumable-media==0.3.1
+googleapis-common-protos==1.5.3
+grpc-google-iam-v1==0.11.4
+grpcio==1.12.0
+httplib2==0.11.3
+idna==2.6
+Jinja2==2.10.1
+MarkupSafe==1.0
+multi-key-dict==2.0.3
+oauth2client==4.1.2
+pbr==4.0.3
+protobuf==3.5.2.post1
+pyasn1==0.4.3
+pyasn1-modules==0.2.1
+python-dateutil==2.7.3
+python-jenkins==1.0.0
+pytz==2018.4
+PyYAML==5.1
+requests==2.21.0
+rsa==3.4.2
+six==1.11.0
+uritemplate==3.0.0
diff --git a/infra/gcb/sync.py b/infra/gcb/sync.py
new file mode 100755
index 0000000..9004678
--- /dev/null
+++ b/infra/gcb/sync.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+"""Script to sync CF and Jenkins jobs."""
+
+import json
+import os
+import re
+import sys
+import yaml
+
+import jenkins
+
+JENKINS_SERVER = ('localhost', 8080)
+
+JOB_TEMPLATES = [
+    {'prefix': 'projects/', 'config': 'base_job.xml'},
+    {'prefix': 'coverage/', 'config': 'coverage_job.xml'},
+]
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+OSSFUZZ_DIR = os.path.dirname(os.path.dirname(SCRIPT_DIR))
+
+VALID_PROJECT_NAME = re.compile(r'^[a-zA-Z0-9_-]+$')
+
+
+def main():
+  # Connect to jenkins server.
+  jenkins_login = get_jenkins_login()
+  server = jenkins.Jenkins(
+      'http://%s:%d' % JENKINS_SERVER,
+      username=jenkins_login[0],
+      password=jenkins_login[1])
+
+  for project in get_projects():
+    print 'syncing configs for', project
+    try:
+      # Create/update jenkins build job.
+      sync_jenkins_job(server, project)
+
+    except Exception as e:
+      print >> sys.stderr, 'Failed to setup job with exception', e
+
+
+def _has_dockerfile(project_dir):
+  """Whether or not the project has a Dockerfile."""
+  if os.path.exists(os.path.join(project_dir, 'Dockerfile')):
+    return True
+
+  project_yaml_path = os.path.join(project_dir, 'project.yaml')
+  if not os.path.exists(project_yaml_path):
+    return False
+
+  with open(project_yaml_path) as f:
+    project_info = yaml.safe_load(f)
+
+  return 'dockerfile' in project_info
+
+
+def get_projects():
+  """Return list of projects for oss-fuzz."""
+  projects = []
+  projects_dir = os.path.join(OSSFUZZ_DIR, 'projects')
+  for name in os.listdir(projects_dir):
+    full_path = os.path.join(projects_dir, name)
+    if not os.path.isdir(full_path) or not _has_dockerfile(full_path):
+      continue
+
+    if not VALID_PROJECT_NAME.match(name):
+      print >> sys.stderr, 'Invalid project name:', name
+      continue
+
+    projects.append(name)
+
+  if not projects:
+    print >> sys.stderr, 'No projects found.'
+
+  return projects
+
+
+def get_jenkins_login():
+  """Returns (username, password) for jenkins."""
+  username = os.getenv('JENKINS_USER')
+  password = os.getenv('JENKINS_PASS')
+
+  return username, password
+
+
+def sync_jenkins_job(server, project):
+  """Sync the config with jenkins."""
+  project_yaml = os.path.join(OSSFUZZ_DIR, 'projects', project, 'project.yaml')
+  with open(project_yaml, 'r') as f:
+    project_json_string = json.dumps(json.dumps(yaml.safe_load(f)))
+
+  for job in JOB_TEMPLATES:
+    job_name = job['prefix'] + project
+    with open(os.path.join(SCRIPT_DIR, 'jenkins_config', job['config'])) as f:
+      job_config_xml = f.read()
+
+    if server.job_exists(job_name):
+      server.reconfig_job(job_name, job_config_xml)
+    else:
+      server.create_job(job_name, job_config_xml)
+      server.build_job(job_name)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/build/status/bower.json b/infra/gcb/templates/bower.json
similarity index 100%
rename from infra/build/status/bower.json
rename to infra/gcb/templates/bower.json
diff --git a/infra/gcb/templates/deploy.sh b/infra/gcb/templates/deploy.sh
new file mode 100755
index 0000000..36aa871
--- /dev/null
+++ b/infra/gcb/templates/deploy.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+gsutil -h "Cache-Control:no-cache,max-age=0" -m cp -r bower_components index.html src manifest.json gs://oss-fuzz-build-logs
diff --git a/infra/gcb/templates/index.html b/infra/gcb/templates/index.html
new file mode 100644
index 0000000..36dd15b
--- /dev/null
+++ b/infra/gcb/templates/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
+    <title>OSS-Fuzz build status</title>
+    <meta name="description" content="OSS-Fuzz build status">
+
+    <!-- See https://goo.gl/OOhYW5 -->
+    <link rel="manifest" href="/manifest.json">
+
+    <script src="/bower_components/webcomponentsjs/webcomponents-loader.js"></script>
+
+
+    <link rel="import" href="/src/build-status/build-status.html">
+
+    <style>
+      body {
+        font-family: 'Roboto', 'Noto', sans-serif;
+        background: #f1f1f1;
+        margin: 0;
+      }
+    </style>
+  </head>
+  <body>
+    <build-status></build-status>
+  </body>
+</html>
diff --git a/infra/build/status/manifest.json b/infra/gcb/templates/manifest.json
similarity index 100%
rename from infra/build/status/manifest.json
rename to infra/gcb/templates/manifest.json
diff --git a/infra/build/status/polymer.json b/infra/gcb/templates/polymer.json
similarity index 100%
rename from infra/build/status/polymer.json
rename to infra/gcb/templates/polymer.json
diff --git a/infra/gcb/templates/src/build-status/build-status.html b/infra/gcb/templates/src/build-status/build-status.html
new file mode 100644
index 0000000..35ee99a
--- /dev/null
+++ b/infra/gcb/templates/src/build-status/build-status.html
@@ -0,0 +1,223 @@
+<link rel="import" href="../../bower_components/polymer/polymer-element.html">
+<link rel="import" href="../../bower_components/app-layout/app-drawer-layout/app-drawer-layout.html">
+<link rel="import" href="../../bower_components/app-layout/app-drawer/app-drawer.html">
+<link rel="import" href="../../bower_components/app-layout/app-scroll-effects/app-scroll-effects.html">
+<link rel="import" href="../../bower_components/app-layout/app-header/app-header.html">
+<link rel="import" href="../../bower_components/app-layout/app-header-layout/app-header-layout.html">
+<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">
+<link rel="import" href="../../bower_components/paper-item/paper-item.html">
+<link rel="import" href="../../bower_components/paper-item/paper-item-body.html">
+<link rel="import" href="../../bower_components/paper-card/paper-card.html">
+<link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html">
+<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
+<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">
+<link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout-classes.html">
+<link rel="import" href="../../bower_components/polymer/lib/elements/dom-if.html">
+<link rel="import" href="../../bower_components/polymer/lib/elements/dom-repeat.html">
+<link rel="import" href="../../bower_components/app-route/app-location.html">
+<link rel="import" href="../../bower_components/app-route/app-route.html">
+
+<dom-module id="build-status">
+  <template>
+    <app-location route="{{route}}" use-hash-as-path></app-location>
+    <app-route route="{{route}}"
+      pattern=":project_name"
+      data="{{routeData}}">
+    </app-route>
+    <style is="custom-style" include="iron-flex iron-flex-alignment">
+    <style>
+      .paper-item-link {
+        color: inherit;
+        text-decoration: none;
+      }
+
+      app-header {
+        background-color: #2ba4ad;
+        color: #fff;
+      }
+
+      paper-card {
+        margin: 0.5em;
+      }
+
+      paper-item {
+        cursor: pointer;
+      }
+
+      paper-tabs {
+        -webkit-font-smoothing: antialiased;
+        width: 100%;
+        margin-bottom: 1px;
+        height: 40px;
+      }
+
+      :host {
+        display: block;
+      }
+
+      .icon-error {
+        color: #e83030;
+        margin-right: 0.2em;
+      }
+
+      .projects {
+        min-width: 10em;
+      }
+
+      .log {
+        width: 80%;
+        display: inline;
+      }
+
+      pre {
+        white-space: pre-wrap;
+      }
+    </style>
+    <app-header reveals>
+      <app-toolbar>
+        <div main-title>OSS-Fuzz build status</div>
+        <div><small>(Updated every 30 minutes)</small></div>
+      </app-toolbar>
+    </app-header>
+    <div class="layout horizontal">
+      <paper-card class="projects">
+        <div class="card-tabs">
+          <paper-tabs selected="fuzzing" id="build_type" attr-for-selected="type" on-click="onChanged">
+            <paper-tab type="fuzzing">Fuzzing Builds</paper-tab>
+            <paper-tab type="coverage">Coverage Builds</paper-tab>
+          </paper-tabs>
+        </div>
+        <div class="card-content">
+          <template is="dom-repeat" items="[[status.projects]]" as="project">
+            <paper-item on-tap="onTap">
+              <paper-item-body two-line>
+                <div>
+                  <template is="dom-if" if="[[!project.success]]">
+                    <iron-icon class="icon-error" icon="icons:error"></iron-icon>
+                  </template>
+                  [[project.name]]
+                </div>
+                <div secondary title$="Last built [[toLocalDate(project.finish_time)]]">
+                  Last built [[toLocalDate(project.finish_time)]]
+                </div>
+              </paper-item-body>
+            </paper-item>
+          </template>
+        </div>
+      </paper-card>
+      <paper-card class="log">
+        <div class="card-content">
+          <template is="dom-if" if="[[showMessage(loading_log, log)]]">
+            Select a project to see logs.
+          </template>
+          <template is="dom-if" if="[[loading_log]]">
+            Loading...
+          </template>
+          <template is="dom-if" if="[[showLog(log)]]">
+            <a href="/log-[[build_id]].txt" tabindex="-1">
+              <iron-icon icon="icons:link"></iron-iron>
+            </a>
+          </template>
+          <pre>[[log]]</pre>
+        </div>
+      </paper-card>
+    </div>
+      <iron-ajax id="status_fuzzing" auto handle-as="json" url="/status.json" on-response="onResponseForFuzzing"></iron-ajax>
+      <iron-ajax id="status_coverage" auto handle-as="json" url="/status-coverage.json" on-response="onResponseForCoverage"></iron-ajax>
+    <iron-ajax id="logxhr" auto handle-as="text" on-response="onLogResponse"></iron-ajax>
+  </template>
+
+  <script>
+    /** @polymerElement */
+    class BuildStatus extends Polymer.Element {
+      static get is() { return 'build-status'; }
+      static get properties() {
+        return {
+          log: {
+            type: String,
+            value: ''
+          },
+          loading_log: {
+            type: Boolean,
+            value: false
+          }
+        };
+      }
+      static get observers() {
+        return [
+          '_routeChanged(route.*)'
+        ];
+      }
+
+      _routeChanged() {
+        if (!this.status || !this.routeData.project_name) {
+          // If our status json is loaded and there is a project_name specified
+          // in the URL, we can proceed to load that project's log.
+          return;
+        }
+        var project = this.getProjectByName(this.routeData.project_name);
+
+        this.$.logxhr.url = "/log-" + project.build_id + ".txt";
+        this.build_id = project.build_id;
+        this.log = '';
+        this.loading_log = true;
+      }
+
+      getProjectByName(project_name) {
+        return this.status.projects.find(p => p.name === project_name);
+      }
+
+      onResponseForFuzzing(e) {
+        this.status_fuzzing = e.detail.response;
+        if (!this.status) {
+          // Show status of the fuzzing builds by default.
+          this.status = this.status_fuzzing;
+          // Manually invoke a _routeChanged call, in order to load the log for
+          // someone going directly to a project's URL.
+          this._routeChanged();
+        }
+      }
+
+      onResponseForCoverage(e) {
+        this.status_coverage = e.detail.response;
+      }
+
+      onLogResponse(e) {
+        this.log = e.detail.response;
+        this.loading_log = false;
+      }
+
+      onTap(e) {
+        // Change the route, this should auto-magically update the url in the
+        // browser and invoke the _routeChanged method.
+        this.set('route.path', e.model.project.name);
+      }
+
+      onChanged(e) {
+        if (this.$.build_type.selected == 'coverage') {
+          this.status = this.status_coverage
+        } else {
+          this.status = this.status_fuzzing
+        }
+      }
+
+      showMessage(loading_log, log) {
+        return !loading_log && log === '';
+      }
+
+      showLog(log) {
+        return log !== '';
+      }
+
+      toLocalDate(str) {
+        let date = new Date(str);
+        let ds = date.toString();
+        let timezone = ds.substring(ds.indexOf("("));
+        return date.toLocaleString() + " " + timezone;
+      }
+    };
+
+    window.customElements.define(BuildStatus.is, BuildStatus);
+  </script>
+</dom-module>
diff --git a/infra/gcb/wait_for_build.py b/infra/gcb/wait_for_build.py
new file mode 100755
index 0000000..ec2f89e
--- /dev/null
+++ b/infra/gcb/wait_for_build.py
@@ -0,0 +1,68 @@
+#!/usr/bin/python2
+"""Waits for project build on Google Cloud Builder.
+
+Usage: wait_for_build.py <build_id>
+"""
+
+import argparse
+import sys
+import time
+import datetime
+
+from googleapiclient.discovery import build
+from oauth2client.client import GoogleCredentials
+
+POLL_INTERVAL = 15
+cloudbuild = None
+
+
+def get_build(build_id, cloudbuild, project):
+  return cloudbuild.projects().builds().get(
+      projectId=project, id=build_id).execute()
+
+
+def wait_for_build(build_id, project):
+  DONE_STATUSES = [
+      'SUCCESS',
+      'FAILURE',
+      'INTERNAL_ERROR',
+      'CANCELLED',
+      'TIMEOUT',
+  ]
+
+  status = None
+  while True:
+    build_info = get_build(build_id, cloudbuild, project)
+
+    current_status = build_info['status']
+    if current_status != status:
+      print datetime.datetime.now(), current_status
+      sys.stdout.flush()
+    status = current_status
+    if status in DONE_STATUSES:
+      return status == 'SUCCESS'
+
+    time.sleep(POLL_INTERVAL)
+
+
+def main():
+  global cloudbuild
+
+  parser = argparse.ArgumentParser(description='Wait for build to complete')
+  parser.add_argument(
+      '-p', '--project', help='Cloud Project', default='oss-fuzz')
+  parser.add_argument('build_id', help='The Container Builder build ID.')
+
+  args = parser.parse_args()
+
+  credentials = GoogleCredentials.get_application_default()
+  cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
+
+  success = wait_for_build(args.build_id, args.project)
+
+  if not success:
+    sys.exit(1)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/helper.py b/infra/helper.py
index e24df4d..5a3880b 100755
--- a/infra/helper.py
+++ b/infra/helper.py
@@ -22,6 +22,7 @@
 import argparse
 import datetime
 import errno
+import multiprocessing
 import os
 import pipes
 import re
@@ -29,8 +30,8 @@
 import sys
 import templates
 
-OSS_FUZZ_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-BUILD_DIR = os.path.join(OSS_FUZZ_DIR, 'build')
+OSSFUZZ_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+BUILD_DIR = os.path.join(OSSFUZZ_DIR, 'build')
 
 BASE_IMAGES = [
     'gcr.io/oss-fuzz-base/base-image',
@@ -38,8 +39,8 @@
     'gcr.io/oss-fuzz-base/base-builder',
     'gcr.io/oss-fuzz-base/base-runner',
     'gcr.io/oss-fuzz-base/base-runner-debug',
-    'gcr.io/oss-fuzz-base/base-sanitizer-libs-builder',
-    'gcr.io/oss-fuzz-base/msan-libs-builder',
+    'gcr.io/oss-fuzz-base/base-msan-builder',
+    'gcr.io/oss-fuzz-base/msan-builder',
 ]
 
 VALID_PROJECT_NAME_REGEX = re.compile(r'^[a-zA-Z0-9_-]+$')
@@ -55,64 +56,13 @@
     'gs://{project_name}-backup.clusterfuzz-external.appspot.com/corpus/'
     'libFuzzer/{fuzz_target}/')
 
-PROJECT_LANGUAGE_REGEX = re.compile(r'\s*language\s*:\s*([^\s]+)')
 
-# Languages from project.yaml that have code coverage support.
-LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'c++', 'go', 'rust']
-
-# pylint: disable=too-many-lines
-
-
-def main():  # pylint: disable=too-many-branches,too-many-return-statements
+def main():  # pylint: disable=too-many-branches,too-many-return-statements,too-many-statements
   """Get subcommand from program arguments and do it."""
-  os.chdir(OSS_FUZZ_DIR)
+  os.chdir(OSSFUZZ_DIR)
   if not os.path.exists(BUILD_DIR):
     os.mkdir(BUILD_DIR)
 
-  args = parse_args()
-
-  # We have different default values for `sanitizer` depending on the `engine`.
-  # Some commands do not have `sanitizer` argument, so `hasattr` is necessary.
-  if hasattr(args, 'sanitizer') and not args.sanitizer:
-    if args.engine == 'dataflow':
-      args.sanitizer = 'dataflow'
-    else:
-      args.sanitizer = 'address'
-
-  if args.command == 'generate':
-    return generate(args)
-  if args.command == 'build_image':
-    return build_image(args)
-  if args.command == 'build_fuzzers':
-    return build_fuzzers(args)
-  if args.command == 'check_build':
-    return check_build(args)
-  if args.command == 'download_corpora':
-    return download_corpora(args)
-  if args.command == 'run_fuzzer':
-    return run_fuzzer(args)
-  if args.command == 'coverage':
-    return coverage(args)
-  if args.command == 'reproduce':
-    return reproduce(args)
-  if args.command == 'shell':
-    return shell(args)
-  if args.command == 'pull_images':
-    return pull_images(args)
-
-  return 0
-
-
-def parse_args(args=None):
-  """Parses args using argparser and returns parsed args."""
-  # Use default argument None for args so that in production, argparse does its
-  # normal behavior, but unittesting is easier.
-  parser = get_parser()
-  return parser.parse_args(args)
-
-
-def get_parser():  # pylint: disable=too-many-statements
-  """Returns an argparse parser."""
   parser = argparse.ArgumentParser('helper.py', description='oss-fuzz helpers')
   subparsers = parser.add_subparsers(dest='command')
 
@@ -154,12 +104,9 @@
   check_build_parser = subparsers.add_parser(
       'check_build', help='Checks that fuzzers execute without errors.')
   _add_architecture_args(check_build_parser)
-  _add_engine_args(
-      check_build_parser,
-      choices=['libfuzzer', 'afl', 'honggfuzz', 'dataflow', 'none'])
-  _add_sanitizer_args(
-      check_build_parser,
-      choices=['address', 'memory', 'undefined', 'dataflow', 'thread'])
+  _add_engine_args(check_build_parser, choices=['libfuzzer', 'afl', 'dataflow'])
+  _add_sanitizer_args(check_build_parser,
+                      choices=['address', 'memory', 'undefined', 'dataflow'])
   _add_environment_args(check_build_parser)
   check_build_parser.add_argument('project_name', help='name of the project')
   check_build_parser.add_argument('fuzzer_name',
@@ -171,8 +118,6 @@
   _add_engine_args(run_fuzzer_parser)
   _add_sanitizer_args(run_fuzzer_parser)
   _add_environment_args(run_fuzzer_parser)
-  run_fuzzer_parser.add_argument(
-      '--corpus-dir', help='directory to store corpus for the fuzz target')
   run_fuzzer_parser.add_argument('project_name', help='name of the project')
   run_fuzzer_parser.add_argument('fuzzer_name', help='name of the fuzzer')
   run_fuzzer_parser.add_argument('fuzzer_args',
@@ -226,16 +171,45 @@
   shell_parser = subparsers.add_parser(
       'shell', help='Run /bin/bash within the builder container.')
   shell_parser.add_argument('project_name', help='name of the project')
-  shell_parser.add_argument('source_path',
-                            help='path of local source',
-                            nargs='?')
   _add_architecture_args(shell_parser)
   _add_engine_args(shell_parser)
   _add_sanitizer_args(shell_parser)
   _add_environment_args(shell_parser)
 
   subparsers.add_parser('pull_images', help='Pull base images.')
-  return parser
+
+  args = parser.parse_args()
+
+  # We have different default values for `sanitizer` depending on the `engine`.
+  # Some commands do not have `sanitizer` argument, so `hasattr` is necessary.
+  if hasattr(args, 'sanitizer') and not args.sanitizer:
+    if args.engine == 'dataflow':
+      args.sanitizer = 'dataflow'
+    else:
+      args.sanitizer = 'address'
+
+  if args.command == 'generate':
+    return generate(args)
+  if args.command == 'build_image':
+    return build_image(args)
+  if args.command == 'build_fuzzers':
+    return build_fuzzers(args)
+  if args.command == 'check_build':
+    return check_build(args)
+  if args.command == 'download_corpora':
+    return download_corpora(args)
+  if args.command == 'run_fuzzer':
+    return run_fuzzer(args)
+  if args.command == 'coverage':
+    return coverage(args)
+  if args.command == 'reproduce':
+    return reproduce(args)
+  if args.command == 'shell':
+    return shell(args)
+  if args.command == 'pull_images':
+    return pull_images(args)
+
+  return 0
 
 
 def is_base_image(image_name):
@@ -283,7 +257,7 @@
 
 def _get_project_dir(project_name):
   """Returns path to the project."""
-  return os.path.join(OSS_FUZZ_DIR, 'projects', project_name)
+  return os.path.join(OSSFUZZ_DIR, 'projects', project_name)
 
 
 def get_dockerfile_path(project_name):
@@ -292,47 +266,18 @@
 
 
 def _get_corpus_dir(project_name=''):
-  """Creates and returns path to /corpus directory for the given project (if
-  specified)."""
-  directory = os.path.join(BUILD_DIR, 'corpus', project_name)
-  if not os.path.exists(directory):
-    os.makedirs(directory)
-
-  return directory
+  """Returns path to /corpus directory for the given project (if specified)."""
+  return os.path.join(BUILD_DIR, 'corpus', project_name)
 
 
 def _get_output_dir(project_name=''):
-  """Creates and returns path to /out directory for the given project (if
-  specified)."""
-  directory = os.path.join(BUILD_DIR, 'out', project_name)
-  if not os.path.exists(directory):
-    os.makedirs(directory)
-
-  return directory
+  """Returns path to /out directory for the given project (if specified)."""
+  return os.path.join(BUILD_DIR, 'out', project_name)
 
 
 def _get_work_dir(project_name=''):
-  """Creates and returns path to /work directory for the given project (if
-  specified)."""
-  directory = os.path.join(BUILD_DIR, 'work', project_name)
-  if not os.path.exists(directory):
-    os.makedirs(directory)
-
-  return directory
-
-
-def _get_project_language(project_name):
-  """Returns project language."""
-  project_yaml_path = os.path.join(OSS_FUZZ_DIR, 'projects', project_name,
-                                   'project.yaml')
-  with open(project_yaml_path) as file_handle:
-    content = file_handle.read()
-    for line in content.splitlines():
-      match = PROJECT_LANGUAGE_REGEX.match(line)
-      if match:
-        return match.group(1)
-
-  return None
+  """Returns path to /work directory for the given project (if specified)."""
+  return os.path.join(BUILD_DIR, 'work', project_name)
 
 
 def _add_architecture_args(parser, choices=('x86_64', 'i386')):
@@ -349,7 +294,7 @@
 
 def _add_sanitizer_args(parser,
                         choices=('address', 'memory', 'undefined', 'coverage',
-                                 'dataflow', 'thread')):
+                                 'dataflow')):
   """Add common sanitizer args."""
   parser.add_argument(
       '--sanitizer',
@@ -398,8 +343,13 @@
 WORKDIR_REGEX = re.compile(r'\s*WORKDIR\s*([^\s]+)')
 
 
-def workdir_from_lines(lines, default='/src'):
-  """Get the WORKDIR from the given lines."""
+def _workdir_from_dockerfile(project_name):
+  """Parse WORKDIR from the Dockerfile for the given project."""
+  dockerfile_path = get_dockerfile_path(project_name)
+
+  with open(dockerfile_path) as file_handle:
+    lines = file_handle.readlines()
+
   for line in reversed(lines):  # reversed to get last WORKDIR.
     match = re.match(WORKDIR_REGEX, line)
     if match:
@@ -411,17 +361,7 @@
 
       return os.path.normpath(workdir)
 
-  return default
-
-
-def _workdir_from_dockerfile(project_name):
-  """Parse WORKDIR from the Dockerfile for the given project."""
-  dockerfile_path = get_dockerfile_path(project_name)
-
-  with open(dockerfile_path) as file_handle:
-    lines = file_handle.readlines()
-
-  return workdir_from_lines(lines, default=os.path.join('/src', project_name))
+  return os.path.join('/src', project_name)
 
 
 def docker_run(run_args, print_output=True):
@@ -505,7 +445,7 @@
   return 1
 
 
-def build_fuzzers_impl(  # pylint: disable=too-many-arguments,too-many-locals,too-many-branches
+def build_fuzzers_impl(  # pylint: disable=too-many-arguments
     project_name,
     clean,
     engine,
@@ -520,11 +460,6 @@
     return 1
 
   project_out_dir = _get_output_dir(project_name)
-  project_work_dir = _get_work_dir(project_name)
-  project_language = _get_project_language(project_name)
-  if not project_language:
-    print('WARNING: language not specified in project.yaml. Build may fail.')
-
   if clean:
     print('Cleaning existing build artifacts.')
 
@@ -535,12 +470,6 @@
         'gcr.io/oss-fuzz/%s' % project_name, '/bin/bash', '-c', 'rm -rf /out/*'
     ])
 
-    docker_run([
-        '-v',
-        '%s:/work' % project_work_dir, '-t',
-        'gcr.io/oss-fuzz/%s' % project_name, '/bin/bash', '-c', 'rm -rf /work/*'
-    ])
-
   else:
     print('Keeping existing build artifacts as-is (if any).')
   env = [
@@ -548,18 +477,16 @@
       'SANITIZER=' + sanitizer,
       'ARCHITECTURE=' + architecture,
   ]
-
-  if project_language:
-    env.append('FUZZING_LANGUAGE=' + project_language)
-
   if env_to_add:
     env += env_to_add
 
+  project_work_dir = _get_work_dir(project_name)
+
   # Copy instrumented libraries.
   if sanitizer == 'memory':
     docker_run([
         '-v',
-        '%s:/work' % project_work_dir, 'gcr.io/oss-fuzz-base/msan-libs-builder',
+        '%s:/work' % project_work_dir, 'gcr.io/oss-fuzz-base/msan-builder',
         'bash', '-c', 'cp -r /msan /work'
     ])
     env.append('MSAN_LIBS_PATH=' + '/work/msan')
@@ -567,21 +494,19 @@
   command = ['--cap-add', 'SYS_PTRACE'] + _env_to_docker_args(env)
   if source_path:
     workdir = _workdir_from_dockerfile(project_name)
-    if mount_location:
-      command += [
-          '-v',
-          '%s:%s' % (_get_absolute_path(source_path), mount_location),
-      ]
-    else:
-      if workdir == '/src':
-        print('Cannot use local checkout with "WORKDIR: /src".',
-              file=sys.stderr)
-        return 1
-
+    if workdir == '/src':
+      print('Cannot use local checkout with "WORKDIR: /src".', file=sys.stderr)
+      return 1
+    if not mount_location:
       command += [
           '-v',
           '%s:%s' % (_get_absolute_path(source_path), workdir),
       ]
+    else:
+      command += [
+          '-v',
+          '%s:%s' % (_get_absolute_path(source_path), mount_location),
+      ]
 
   command += [
       '-v',
@@ -597,14 +522,13 @@
 
   # Patch MSan builds to use instrumented shared libraries.
   if sanitizer == 'memory':
-    docker_run([
-        '-v',
-        '%s:/out' % project_out_dir, '-v',
-        '%s:/work' % project_work_dir
-    ] + _env_to_docker_args(env) + [
-        'gcr.io/oss-fuzz-base/base-sanitizer-libs-builder', 'patch_build.py',
-        '/out'
-    ])
+    docker_run(
+        [
+            '-v',
+            '%s:/out' % project_out_dir, '-v',
+            '%s:/work' % project_work_dir
+        ] + _env_to_docker_args(env) +
+        ['gcr.io/oss-fuzz-base/base-msan-builder', 'patch_build.py', '/out'])
 
   return 0
 
@@ -625,16 +549,10 @@
       not _check_fuzzer_exists(args.project_name, args.fuzzer_name)):
     return 1
 
-  fuzzing_language = _get_project_language(args.project_name)
-  if fuzzing_language is None:
-    print('WARNING: language not specified in project.yaml. Defaulting to C++.')
-    fuzzing_language = 'c++'
-
   env = [
       'FUZZING_ENGINE=' + args.engine,
       'SANITIZER=' + args.sanitizer,
       'ARCHITECTURE=' + args.architecture,
-      'FUZZING_LANGUAGE=' + fuzzing_language,
   ]
   if args.e:
     env += args.e
@@ -646,9 +564,9 @@
   ]
 
   if args.fuzzer_name:
-    run_args += ['test_one.py', args.fuzzer_name]
+    run_args += ['test_one', os.path.join('/out', args.fuzzer_name)]
   else:
-    run_args.append('test_all.py')
+    run_args.append('test_all')
 
   exit_code = docker_run(run_args)
   if exit_code == 0:
@@ -679,21 +597,21 @@
   if not os.path.exists(corpus_dir):
     os.makedirs(corpus_dir)
 
-  if not fuzz_target.startswith(project_name + '_'):
+  if not fuzz_target.startswith(project_name):
     fuzz_target = '%s_%s' % (project_name, fuzz_target)
 
   corpus_backup_url = CORPUS_BACKUP_URL_FORMAT.format(project_name=project_name,
                                                       fuzz_target=fuzz_target)
   command = ['gsutil', 'ls', corpus_backup_url]
 
-  # Don't capture stderr. We want it to print in real time, in case gsutil is
-  # asking for two-factor authentication.
-  corpus_listing = subprocess.Popen(command, stdout=subprocess.PIPE)
-  output, _ = corpus_listing.communicate()
+  corpus_listing = subprocess.Popen(command,
+                                    stdout=subprocess.PIPE,
+                                    stderr=subprocess.PIPE)
+  output, error = corpus_listing.communicate()
 
   # Some fuzz targets (e.g. new ones) may not have corpus yet, just skip those.
   if corpus_listing.returncode:
-    print('WARNING: corpus for {0} not found:\n'.format(fuzz_target),
+    print('WARNING: corpus for {0} not found:\n{1}'.format(fuzz_target, error),
           file=sys.stderr)
     return
 
@@ -750,7 +668,7 @@
 
   print('Downloading corpora for %s project to %s' %
         (args.project_name, corpus_dir))
-  thread_pool = ThreadPool()
+  thread_pool = ThreadPool(multiprocessing.cpu_count())
   return all(thread_pool.map(_download_for_single_target, fuzz_targets))
 
 
@@ -766,21 +684,12 @@
   if not check_project_exists(args.project_name):
     return 1
 
-  project_language = _get_project_language(args.project_name)
-  if project_language not in LANGUAGES_WITH_COVERAGE_SUPPORT:
-    print(
-        'ERROR: Project is written in %s, coverage for it is not supported yet.'
-        % project_language,
-        file=sys.stderr)
-    return 1
-
   if not args.no_corpus_download and not args.corpus_dir:
     if not download_corpora(args):
       return 1
 
   env = [
       'FUZZING_ENGINE=libfuzzer',
-      'FUZZING_LANGUAGE=%s' % project_language,
       'PROJECT=%s' % args.project_name,
       'SANITIZER=coverage',
       'HTTP_PORT=%s' % args.port,
@@ -789,12 +698,6 @@
 
   run_args = _env_to_docker_args(env)
 
-  if args.port:
-    run_args.extend([
-        '-p',
-        '%s:%s' % (args.port, args.port),
-    ])
-
   if args.corpus_dir:
     if not os.path.exists(args.corpus_dir):
       print('ERROR: the path provided in --corpus-dir argument does not exist',
@@ -808,6 +711,8 @@
   run_args.extend([
       '-v',
       '%s:/out' % _get_output_dir(args.project_name),
+      '-p',
+      '%s:%s' % (args.port, args.port),
       '-t',
       'gcr.io/oss-fuzz-base/base-runner',
   ])
@@ -842,28 +747,14 @@
   if args.e:
     env += args.e
 
-  run_args = _env_to_docker_args(env)
-
-  if args.corpus_dir:
-    if not os.path.exists(args.corpus_dir):
-      print('ERROR: the path provided in --corpus-dir argument does not exist',
-            file=sys.stderr)
-      return 1
-    corpus_dir = os.path.realpath(args.corpus_dir)
-    run_args.extend([
-        '-v',
-        '{corpus_dir}:/tmp/{fuzzer}_corpus'.format(corpus_dir=corpus_dir,
-                                                   fuzzer=args.fuzzer_name)
-    ])
-
-  run_args.extend([
+  run_args = _env_to_docker_args(env) + [
       '-v',
       '%s:/out' % _get_output_dir(args.project_name),
       '-t',
       'gcr.io/oss-fuzz-base/base-runner',
       'run_fuzzer',
       args.fuzzer_name,
-  ] + args.fuzzer_args)
+  ] + args.fuzzer_args
 
   return docker_run(run_args)
 
@@ -875,20 +766,14 @@
 
 
 def reproduce_impl(  # pylint: disable=too-many-arguments
-    project_name,
-    fuzzer_name,
-    valgrind,
-    env_to_add,
-    fuzzer_args,
-    testcase_path,
-    runner=docker_run,
-    err_result=1):
+    project_name, fuzzer_name, valgrind, env_to_add, fuzzer_args,
+    testcase_path):
   """Reproduces a testcase in the container."""
   if not check_project_exists(project_name):
-    return err_result
+    return 1
 
   if not _check_fuzzer_exists(project_name, fuzzer_name):
-    return err_result
+    return 1
 
   debugger = ''
   env = []
@@ -916,7 +801,7 @@
       '-runs=100',
   ] + fuzzer_args
 
-  return runner(run_args)
+  return docker_run(run_args)
 
 
 def generate(args):
@@ -972,9 +857,6 @@
       'ARCHITECTURE=' + args.architecture,
   ]
 
-  if args.project_name != 'base-runner-debug':
-    env.append('FUZZING_LANGUAGE=' + _get_project_language(args.project_name))
-
   if args.e:
     env += args.e
 
@@ -985,19 +867,12 @@
     image_project = 'oss-fuzz'
     out_dir = _get_output_dir(args.project_name)
 
-  run_args = _env_to_docker_args(env)
-  if args.source_path:
-    run_args.extend([
-        '-v',
-        '%s:%s' % (_get_absolute_path(args.source_path), '/src'),
-    ])
-
-  run_args.extend([
+  run_args = _env_to_docker_args(env) + [
       '-v',
       '%s:/out' % out_dir, '-v',
       '%s:/work' % _get_work_dir(args.project_name), '-t',
       'gcr.io/%s/%s' % (image_project, args.project_name), '/bin/bash'
-  ])
+  ]
 
   docker_run(run_args)
   return 0
diff --git a/infra/helper_test.py b/infra/helper_test.py
deleted file mode 100644
index d899a83..0000000
--- a/infra/helper_test.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Tests for helper.py"""
-
-import unittest
-from unittest import mock
-
-import helper
-
-
-class TestShell(unittest.TestCase):
-  """Tests 'shell' command."""
-
-  @mock.patch('helper.docker_run')
-  @mock.patch('helper.build_image_impl')
-  def test_base_runner_debug(self, mocked_build_image_impl, _):
-    """Tests that shell base-runner-debug works as intended."""
-    image_name = 'base-runner-debug'
-    unparsed_args = ['shell', image_name]
-    args = helper.parse_args(unparsed_args)
-    args.sanitizer = 'address'
-    result = helper.shell(args)
-    mocked_build_image_impl.assert_called_with(image_name)
-    self.assertEqual(result, 0)
diff --git a/infra/jenkins-cluster/deployment-jenkins.yaml b/infra/jenkins-cluster/deployment-jenkins.yaml
new file mode 100644
index 0000000..6ff526d
--- /dev/null
+++ b/infra/jenkins-cluster/deployment-jenkins.yaml
@@ -0,0 +1,60 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: jenkins-master
+spec:
+  replicas: 1
+  template:
+    metadata:
+      name: jenkins-master
+      labels:
+        app: jenkins-master
+    spec:
+      containers:
+      - name: jenkins
+        image: gcr.io/oss-fuzz-base/jenkins:20170726v4
+        env:
+          - name: JAVA_OPTS
+            value: "-Duser.timezone=America/Los_Angeles -Dhudson.security.csrf.requestfield=Jenkins-Crumb -Xmx16g -Djenkins.security.ApiTokenProperty.showTokenToAdmins=true"
+        ports:
+        - containerPort: 8080
+        - containerPort: 50000
+        volumeMounts:
+        - name: jenkins-home
+          mountPath: "/var/jenkins_home"
+        - name: secrets
+          mountPath: "/var/secrets"
+          readOnly: true
+        livenessProbe:
+          httpGet:
+            path: "/login"
+            port: 8080
+          initialDelaySeconds: 60
+          timeoutSeconds: 15
+        resources:
+          requests:
+            memory: "4Gi"
+            cpu: "4"
+      - name: kubectl-proxy
+        image: lachlanevenson/k8s-kubectl
+        args:
+          - "proxy"
+          - "-p"
+          - "8081"
+      volumes:
+      - name: jenkins-home
+        gcePersistentDisk:
+          pdName: jenkins-home
+          fsType: ext4
+      - name: secrets
+        secret:
+          secretName: secrets
+          items:
+            - key: build-service-account.json
+              path: build-service-account.json
+            - key: base-build-service-account.json
+              path: base-build-service-account.json
+            - key: tls-cert
+              path: cert.pem
+            - key: tls-key
+              path: cert.key
diff --git a/infra/jenkins-cluster/ingress-jenkins-https.yaml b/infra/jenkins-cluster/ingress-jenkins-https.yaml
new file mode 100644
index 0000000..396a9b6
--- /dev/null
+++ b/infra/jenkins-cluster/ingress-jenkins-https.yaml
@@ -0,0 +1,10 @@
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: jenkins-https-ingress
+spec:
+  backend:
+    serviceName: jenkins-master
+    servicePort: 8080
+  tls:
+    - secretName: tls
diff --git a/infra/jenkins-cluster/server/Dockerfile b/infra/jenkins-cluster/server/Dockerfile
new file mode 100644
index 0000000..c164a0c
--- /dev/null
+++ b/infra/jenkins-cluster/server/Dockerfile
@@ -0,0 +1,19 @@
+FROM jenkins/jenkins:lts
+USER root
+
+RUN mkdir /var/secrets
+RUN apt-get -y update && apt-get -y upgrade && apt-get -y install python-dev virtualenv python-pip build-essential
+
+WORKDIR /
+RUN wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.zip
+RUN unzip google-cloud-sdk.zip
+
+RUN /google-cloud-sdk/install.sh --usage-reporting=false --bash-completion=false --disable-installation-options
+RUN /google-cloud-sdk/bin/gcloud -q components install alpha beta
+RUN /google-cloud-sdk/bin/gcloud -q components update
+
+RUN chown -R jenkins:jenkins /google-cloud-sdk
+
+USER jenkins
+ENV JENKINS_OPTS --httpPort=8080 --httpsPort=8082 --httpsCertificate=/var/secrets/cert.pem --httpsPrivateKey=/var/secrets/cert.key
+ENV PATH=$PATH:/google-cloud-sdk/bin
diff --git a/infra/jenkins-cluster/service-jenkins-master.yaml b/infra/jenkins-cluster/service-jenkins-master.yaml
new file mode 100644
index 0000000..f68dc2c
--- /dev/null
+++ b/infra/jenkins-cluster/service-jenkins-master.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: jenkins-master
+  labels:
+    app: jenkins-master
+spec:
+  type: NodePort
+  selector:
+    app: jenkins-master
+  ports:
+  - name: agent
+    port: 50000
+  - name: http
+    port: 8080
+    targetPort: 8080
diff --git a/infra/presubmit.py b/infra/presubmit.py
index 90b4f90..7be16a8 100755
--- a/infra/presubmit.py
+++ b/infra/presubmit.py
@@ -20,7 +20,6 @@
 import os
 import subprocess
 import sys
-import unittest
 import yaml
 
 _SRC_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -75,43 +74,29 @@
   SECTIONS_AND_CONSTANTS = {
       'sanitizers': {'address', 'none', 'memory', 'undefined', 'dataflow'},
       'architectures': {'i386', 'x86_64'},
-      'fuzzing_engines': {'afl', 'libfuzzer', 'honggfuzz', 'dataflow', 'none'},
+      'fuzzing_engines': {'afl', 'libfuzzer', 'honggfuzz', 'dataflow'},
   }
 
   # Note: this list must be updated when we allow new sections.
   VALID_SECTION_NAMES = [
       'architectures',
       'auto_ccs',
-      'blackbox',
-      'builds_per_day',
       'coverage_extra_args',
       'disabled',
       'fuzzing_engines',
-      'help_url',
       'homepage',
-      'language',
-      'labels',  # For internal use only, hard to lint as it uses fuzzer names.
-      'main_repo',
       'primary_contact',
-      'run_tests',
       'sanitizers',
-      'selective_unpack',
       'vendor_ccs',
       'view_restrictions',
+      'language',
   ]
 
-  LANGUAGES_SUPPORTED = [
-      'c',
-      'c++',
-      'go',
-      'jvm',
-      'python',
-      'rust',
-  ]
+  LANGUAGES_SUPPORTED = ['c', 'cpp', 'go', 'rust', 'python']
 
   # Note that some projects like boost only have auto-ccs. However, forgetting
   # primary contact is probably a mistake.
-  REQUIRED_SECTIONS = ['primary_contact', 'main_repo']
+  REQUIRED_SECTIONS = ['primary_contact']
 
   def __init__(self, filename):
     self.filename = filename
@@ -195,20 +180,20 @@
     if auto_ccs:
       email_addresses.extend(auto_ccs)
 
-    # Check that email addresses seem normal.
+    # Sanity check them.
     for email_address in email_addresses:
       if '@' not in email_address or '.' not in email_address:
         self.error(email_address + ' is an invalid email address.')
 
   def check_valid_language(self):
-    """Check that the language is specified and valid."""
+    """Check that the language specified is valid."""
     language = self.data.get('language')
     if not language:
-      self.error('Missing "language" attribute in project.yaml.')
-    elif language not in self.LANGUAGES_SUPPORTED:
-      self.error(
-          '"language: {language}" is not supported ({supported}).'.format(
-              language=language, supported=self.LANGUAGES_SUPPORTED))
+      return
+
+    if language not in self.LANGUAGES_SUPPORTED:
+      self.error('{language} is not supported ({supported}).'.format(
+          language=language, supported=self.LANGUAGES_SUPPORTED))
 
 
 def _check_one_project_yaml(project_yaml_filename):
@@ -288,15 +273,21 @@
   return 1
 
 
-def is_nonfuzzer_python(path):
+def is_python(path):
   """Returns True if |path| ends in .py."""
-  return os.path.splitext(path)[1] == '.py' and '/projects/' not in path
+  return os.path.splitext(path)[1] == '.py'
 
 
-def lint(_=None):
-  """Run python's linter on infra. Return False if it fails linting."""
+def lint(paths):
+  """Run python's linter on |paths| if it is a python file. Return False if it
+  fails linting."""
+  paths = [path for path in paths if is_python(path)]
+  if not paths:
+    return True
 
-  command = ['python3', '-m', 'pylint', '-j', '0', 'infra']
+  command = ['python3', '-m', 'pylint', '-j', '0']
+  command.extend(paths)
+
   returncode = subprocess.run(command, check=False).returncode
   return returncode == 0
 
@@ -305,7 +296,7 @@
   """Do yapf on |path| if it is Python file. Only validates format if
   |validate| otherwise, formats the file. Returns False if validation
   or formatting fails."""
-  paths = [path for path in paths if is_nonfuzzer_python(path)]
+  paths = [path for path in paths if is_python(path)]
   if not paths:
     return True
 
@@ -319,127 +310,43 @@
 
 def get_changed_files():
   """Return a list of absolute paths of files changed in this git branch."""
-  branch_commit_hash = subprocess.check_output(
-      ['git', 'merge-base', 'FETCH_HEAD', 'origin/HEAD']).strip().decode()
-
-  diff_commands = [
-      # Return list of modified files in the commits on this branch.
-      ['git', 'diff', '--name-only', branch_commit_hash + '..'],
-      # Return list of modified files from uncommitted changes.
-      ['git', 'diff', '--name-only']
+  # FIXME: This doesn't work if branch is behind master.
+  diff_command = ['git', 'diff', '--name-only', 'FETCH_HEAD']
+  return [
+      os.path.abspath(path)
+      for path in subprocess.check_output(diff_command).decode().splitlines()
+      if os.path.isfile(path)
   ]
 
-  changed_files = set()
-  for command in diff_commands:
-    file_paths = subprocess.check_output(command).decode().splitlines()
-    for file_path in file_paths:
-      if not os.path.isfile(file_path):
-        continue
-      changed_files.add(file_path)
-  print('Changed files: {changed_files}'.format(
-      changed_files=' '.join(changed_files)))
-  return [os.path.abspath(f) for f in changed_files]
-
-
-def run_build_tests():
-  """Runs build tests because they can't be run in parallel."""
-  suite_list = [
-      unittest.TestLoader().discover(os.path.join(_SRC_ROOT, 'infra', 'build'),
-                                     pattern='*_test.py'),
-  ]
-  suite = unittest.TestSuite(suite_list)
-  print('Running build tests.')
-  result = unittest.TextTestRunner().run(suite)
-  return not result.failures and not result.errors
-
-
-def run_nonbuild_tests(parallel):
-  """Run all tests but build tests. Do it in parallel if |parallel|. The reason
-  why we exclude build tests is because they use an emulator that prevents them
-  from being used in parallel."""
-  # We look for all project directories because otherwise pytest won't run tests
-  # that are not in valid modules (e.g. "base-images").
-  relevant_dirs = set()
-  all_files = get_all_files()
-  for file_path in all_files:
-    directory = os.path.dirname(file_path)
-    relevant_dirs.add(directory)
-
-  # Use ignore-glob because ignore doesn't seem to work properly with the way we
-  # pass directories to pytest.
-  command = [
-      'pytest',
-      # Test errors with error: "ModuleNotFoundError: No module named 'apt'.
-      '--ignore-glob=infra/base-images/base-sanitizer-libs-builder/*',
-      '--ignore-glob=infra/build/*',
-  ]
-  if parallel:
-    command.extend(['-n', 'auto'])
-  command += list(relevant_dirs)
-  print('Running non-build tests.')
-  return subprocess.run(command, check=False).returncode == 0
-
-
-def run_tests(_=None, parallel=False):
-  """Runs all unit tests."""
-  nonbuild_success = run_nonbuild_tests(parallel)
-  build_success = run_build_tests()
-  return nonbuild_success and build_success
-
-
-def get_all_files():
-  """Returns a list of absolute paths of files in this repo."""
-  get_all_files_command = ['git', 'ls-files']
-  output = subprocess.check_output(get_all_files_command).decode().splitlines()
-  return [os.path.abspath(path) for path in output if os.path.isfile(path)]
-
 
 def main():
   """Check changes on a branch for common issues before submitting."""
   # Get program arguments.
   parser = argparse.ArgumentParser(description='Presubmit script for oss-fuzz.')
   parser.add_argument('command',
-                      choices=['format', 'lint', 'license', 'infra-tests'],
+                      choices=['format', 'lint', 'license'],
                       nargs='?')
-  parser.add_argument('-a',
-                      '--all-files',
-                      action='store_true',
-                      help='Run presubmit check(s) on all files',
-                      default=False)
-  parser.add_argument('-p',
-                      '--parallel',
-                      action='store_true',
-                      help='Run tests in parallel.',
-                      default=False)
   args = parser.parse_args()
 
-  if args.all_files:
-    relevant_files = get_all_files()
-  else:
-    relevant_files = get_changed_files()
+  changed_files = get_changed_files()
 
   os.chdir(_SRC_ROOT)
 
   # Do one specific check if the user asked for it.
   if args.command == 'format':
-    success = yapf(relevant_files, False)
+    success = yapf(changed_files, False)
     return bool_to_returncode(success)
 
   if args.command == 'lint':
-    success = lint()
+    success = lint(changed_files)
     return bool_to_returncode(success)
 
   if args.command == 'license':
-    success = check_license(relevant_files)
+    success = check_license(changed_files)
     return bool_to_returncode(success)
 
-  if args.command == 'infra-tests':
-    success = run_tests(relevant_files, parallel=args.parallel)
-    return bool_to_returncode(success)
-
-  # Do all the checks (but no tests).
-  success = do_checks(relevant_files)
-
+  # Otherwise, do all of them.
+  success = do_checks(changed_files)
   return bool_to_returncode(success)
 
 
diff --git a/infra/pytest.ini b/infra/pytest.ini
deleted file mode 100644
index d9bb373..0000000
--- a/infra/pytest.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[pytest]
-python_files = *_test.py
\ No newline at end of file
diff --git a/infra/repo_manager.py b/infra/repo_manager.py
index a0b97b3..cf98ab9 100644
--- a/infra/repo_manager.py
+++ b/infra/repo_manager.py
@@ -21,8 +21,6 @@
     r_man =  RepoManager('https://github.com/google/oss-fuzz.git')
     r_man.checkout('5668cc422c2c92d38a370545d3591039fb5bb8d4')
 """
-import datetime
-import logging
 import os
 import shutil
 
@@ -30,10 +28,45 @@
 
 
 class RepoManager:
-  """Repo manager."""
+  """Class to manage git repos from python.
 
-  def __init__(self, repo_dir):
-    self.repo_dir = repo_dir
+  Attributes:
+    repo_url: The location of the git repo.
+    base_dir: The location of where the repo clone is stored locally.
+    repo_name: The name of the GitHub project.
+    repo_dir: The location of the main repo.
+  """
+
+  def __init__(self, repo_url, base_dir, repo_name=None):
+    """Constructs a repo manager class.
+
+    Args:
+      repo_url: The github url needed to clone.
+      base_dir: The full file-path where the git repo is located.
+      repo_name: The name of the directory the repo is cloned to.
+    """
+    self.repo_url = repo_url
+    self.base_dir = base_dir
+    if repo_name:
+      self.repo_name = repo_name
+    else:
+      self.repo_name = os.path.basename(self.repo_url).strip('.git')
+    self.repo_dir = os.path.join(self.base_dir, self.repo_name)
+    self._clone()
+
+  def _clone(self):
+    """Creates a clone of the repo in the specified directory.
+
+      Raises:
+        ValueError: when the repo is not able to be cloned.
+    """
+    if not os.path.exists(self.base_dir):
+      os.makedirs(self.base_dir)
+    self.remove_repo()
+    out, err = utils.execute(['git', 'clone', self.repo_url, self.repo_name],
+                             location=self.base_dir)
+    if not self._is_git_repo():
+      raise ValueError('%s is not a git repo' % self.repo_url)
 
   def _is_git_repo(self):
     """Test if the current repo dir is a git repo or not.
@@ -44,20 +77,6 @@
     git_path = os.path.join(self.repo_dir, '.git')
     return os.path.isdir(git_path)
 
-  def git(self, cmd, check_result=False):
-    """Run a git command.
-
-    Args:
-      command: The git command as a list to be run.
-      check_result: Should an exception be thrown on failed command.
-
-    Returns:
-      stdout, stderr, error code.
-    """
-    return utils.execute(['git'] + cmd,
-                         location=self.repo_dir,
-                         check_result=check_result)
-
   def commit_exists(self, commit):
     """Checks to see if a commit exists in the project repo.
 
@@ -70,122 +89,61 @@
     if not commit.rstrip():
       return False
 
-    _, _, err_code = self.git(['cat-file', '-e', commit])
+    _, err_code = utils.execute(['git', 'cat-file', '-e', commit],
+                                self.repo_dir)
     return not err_code
 
-  def commit_date(self, commit):
-    """Get the date of a commit.
-
-    Args:
-      commit: The commit hash.
-
-    Returns:
-      A datetime representing the date of the commit.
-    """
-    out, _, _ = self.git(['show', '-s', '--format=%ct', commit],
-                         check_result=True)
-    return datetime.datetime.fromtimestamp(int(out), tz=datetime.timezone.utc)
-
-  def get_git_diff(self, base='origin...'):
-    """Gets a list of files that have changed from the repo head.
-
-    Returns:
-      A list of changed file paths or None on Error.
-    """
-    self.fetch_unshallow()
-    # Add '--' so that git knows we aren't talking about files.
-    command = ['diff', '--name-only', base, '--']
-    out, err_msg, err_code = self.git(command)
-    if err_code:
-      logging.error('Git diff failed with error message %s.', err_msg)
-      return None
-    if not out:
-      logging.error('No diff was found.')
-      return None
-    return [line for line in out.splitlines() if line]
-
   def get_current_commit(self):
     """Gets the current commit SHA of the repo.
 
     Returns:
       The current active commit SHA.
     """
-    out, _, _ = self.git(['rev-parse', 'HEAD'], check_result=True)
-    return out.strip()
+    out, _ = utils.execute(['git', 'rev-parse', 'HEAD'],
+                           self.repo_dir,
+                           check_result=True)
+    return out.strip('\n')
 
-  def get_parent(self, commit, count):
-    """Gets the count'th parent of the given commit.
-
-    Returns:
-      The parent commit SHA.
-    """
-    self.fetch_unshallow()
-    out, _, err_code = self.git(['rev-parse', commit + '~' + str(count)],
-                                check_result=False)
-    if err_code:
-      return None
-
-    return out.strip()
-
-  def fetch_all_remotes(self):
-    """Fetch all remotes for checkouts that track a single branch."""
-    self.git([
-        'config', 'remote.origin.fetch', '+refs/heads/*:refs/remotes/origin/*'
-    ],
-             check_result=True)
-    self.git(['remote', 'update'], check_result=True)
-
-  def get_commit_list(self, newest_commit, oldest_commit=None):
+  def get_commit_list(self, old_commit, new_commit):
     """Gets the list of commits(inclusive) between the old and new commits.
 
     Args:
-      newest_commit: The newest commit to be in the list.
-      oldest_commit: The (optional) oldest commit to be in the list.
+      old_commit: The oldest commit to be in the list.
+      new_commit: The newest commit to be in the list.
 
     Returns:
       The list of commit SHAs from newest to oldest.
 
     Raises:
-      ValueError: When either the oldest or newest commit does not exist.
+      ValueError: When either the old or new commit does not exist.
       RuntimeError: When there is an error getting the commit list.
     """
-    self.fetch_unshallow()
-    if oldest_commit and not self.commit_exists(oldest_commit):
-      raise ValueError('The oldest commit %s does not exist' % oldest_commit)
-    if not self.commit_exists(newest_commit):
-      raise ValueError('The newest commit %s does not exist' % newest_commit)
-    if oldest_commit == newest_commit:
-      return [oldest_commit]
 
-    if oldest_commit:
-      commit_range = oldest_commit + '..' + newest_commit
-    else:
-      commit_range = newest_commit
-
-    out, _, err_code = self.git(['rev-list', commit_range])
+    if not self.commit_exists(old_commit):
+      raise ValueError('The old commit %s does not exist' % old_commit)
+    if not self.commit_exists(new_commit):
+      raise ValueError('The new commit %s does not exist' % new_commit)
+    if old_commit == new_commit:
+      return [old_commit]
+    out, err_code = utils.execute(
+        ['git', 'rev-list', old_commit + '..' + new_commit], self.repo_dir)
     commits = out.split('\n')
     commits = [commit for commit in commits if commit]
     if err_code or not commits:
       raise RuntimeError('Error getting commit list between %s and %s ' %
-                         (oldest_commit, newest_commit))
+                         (old_commit, new_commit))
 
     # Make sure result is inclusive
-    if oldest_commit:
-      commits.append(oldest_commit)
+    commits.append(old_commit)
     return commits
 
-  def fetch_branch(self, branch):
-    """Fetches a remote branch from origin."""
-    return self.git(
-        ['fetch', 'origin', '{branch}:{branch}'.format(branch=branch)])
-
   def fetch_unshallow(self):
     """Gets the current git repository history."""
-    shallow_file = os.path.join(self.repo_dir, '.git', 'shallow')
-    if os.path.exists(shallow_file):
-      _, err, err_code = self.git(['fetch', '--unshallow'], check_result=False)
-      if err_code:
-        logging.error('Unshallow returned non-zero code: %s', err)
+    git_path = os.path.join(self.repo_dir, '.git', 'shallow')
+    if os.path.exists(git_path):
+      utils.execute(['git', 'fetch', '--unshallow'],
+                    self.repo_dir,
+                    check_result=True)
 
   def checkout_pr(self, pr_ref):
     """Checks out a remote pull request.
@@ -194,10 +152,14 @@
       pr_ref: The pull request reference to be checked out.
     """
     self.fetch_unshallow()
-    self.git(['fetch', 'origin', pr_ref], check_result=True)
-    self.git(['checkout', '-f', 'FETCH_HEAD'], check_result=True)
+    utils.execute(['git', 'fetch', 'origin', pr_ref],
+                  self.repo_dir,
+                  check_result=True)
+    utils.execute(['git', 'checkout', '-f', 'FETCH_HEAD'],
+                  self.repo_dir,
+                  check_result=True)
 
-  def checkout_commit(self, commit, clean=True):
+  def checkout_commit(self, commit):
     """Checks out a specific commit from the repo.
 
     Args:
@@ -210,43 +172,14 @@
     self.fetch_unshallow()
     if not self.commit_exists(commit):
       raise ValueError('Commit %s does not exist in current branch' % commit)
-    self.git(['checkout', '-f', commit], check_result=True)
-    if clean:
-      self.git(['clean', '-fxd'], check_result=True)
+    utils.execute(['git', 'checkout', '-f', commit],
+                  self.repo_dir,
+                  check_result=True)
+    utils.execute(['git', 'clean', '-fxd'], self.repo_dir, check_result=True)
     if self.get_current_commit() != commit:
       raise RuntimeError('Error checking out commit %s' % commit)
 
   def remove_repo(self):
-    """Removes the git repo from disk."""
+    """Attempts to remove the git repo. """
     if os.path.isdir(self.repo_dir):
       shutil.rmtree(self.repo_dir)
-
-
-def clone_repo_and_get_manager(repo_url, base_dir, repo_name=None):
-  """Clones a repo and constructs a repo manager class.
-
-    Args:
-      repo_url: The github url needed to clone.
-      base_dir: The full file-path where the git repo is located.
-      repo_name: The name of the directory the repo is cloned to.
-    """
-  if repo_name is None:
-    repo_name = os.path.basename(repo_url).replace('.git', '')
-  repo_dir = os.path.join(base_dir, repo_name)
-  manager = RepoManager(repo_dir)
-
-  if not os.path.exists(repo_dir):
-    _clone(repo_url, base_dir, repo_name)
-
-  return manager
-
-
-def _clone(repo_url, base_dir, repo_name):
-  """Creates a clone of the repo in the specified directory.
-
-     Raises:
-       ValueError: when the repo is not able to be cloned.
-  """
-  utils.execute(['git', 'clone', repo_url, repo_name],
-                location=base_dir,
-                check_result=True)
diff --git a/infra/repo_manager_test.py b/infra/repo_manager_test.py
index 36a773c..f489b2d 100644
--- a/infra/repo_manager_test.py
+++ b/infra/repo_manager_test.py
@@ -9,87 +9,79 @@
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
+# See the License for the specific language governing perepo_managerissions and
 # limitations under the License.
 """Test the functionality of the RepoManager class."""
 
-import contextlib
 import os
-import tempfile
 import unittest
-from unittest import mock
+import tempfile
 
 import repo_manager
-import utils
 
-# pylint: disable=protected-access
-
-OSS_FUZZ_REPO_URL = 'https://github.com/google/oss-fuzz'
+OSS_FUZZ_REPO = 'https://github.com/google/oss-fuzz'
 
 
-@contextlib.contextmanager
-def get_oss_fuzz_repo():
-  """Clones a temporary copy of the OSS-Fuzz repo. Returns the path to the
-  repo."""
-  repo_name = 'oss-fuzz'
-  with tempfile.TemporaryDirectory() as tmp_dir:
-    repo_manager._clone(OSS_FUZZ_REPO_URL, tmp_dir, repo_name)
-    yield os.path.join(tmp_dir, repo_name)
+class TestRepoManager(unittest.TestCase):
+  """Class to test the functionality of the RepoManager class."""
 
 
-class CloneTest(unittest.TestCase):
-  """Tests the _clone function."""
+class RepoManagerCloneUnitTests(unittest.TestCase):
+  """Class to test the functionality of clone of the RepoManager class."""
 
-  @unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                   'INTEGRATION_TESTS=1 not set')
-  def test_clone_valid_repo_integration(self):
-    """Integration test that tests the correct location of the git repo."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      git_path = os.path.join(oss_fuzz_repo, '.git')
+  def test_clone_valid_repo(self):
+    """Tests the correct location of the git repo."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
+      git_path = os.path.join(test_repo_manager.base_dir,
+                              test_repo_manager.repo_name, '.git')
       self.assertTrue(os.path.isdir(git_path))
+      test_repo_manager.remove_repo()
 
   def test_clone_invalid_repo(self):
-    """Tests that cloning an invalid repo will fail."""
+    """Test that constructing RepoManager with an invalid repo will fail."""
     with tempfile.TemporaryDirectory() as tmp_dir:
-      with self.assertRaises(RuntimeError):
-        repo_manager._clone('https://github.com/oss-fuzz-not-real.git', tmp_dir,
-                            'oss-fuzz')
+      with self.assertRaises(ValueError):
+        repo_manager.RepoManager(' ', tmp_dir)
+      with self.assertRaises(ValueError):
+        repo_manager.RepoManager('not_a_valid_repo', tmp_dir)
+      with self.assertRaises(ValueError):
+        repo_manager.RepoManager('https://github.com/oss-fuzz-not-real.git',
+                                 tmp_dir)
 
 
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class RepoManagerCheckoutTest(unittest.TestCase):
-  """Tests the checkout functionality of RepoManager."""
+class RepoManagerCheckoutUnitTests(unittest.TestCase):
+  """Class to test the functionality of checkout of the RepoManager class."""
 
   def test_checkout_valid_commit(self):
     """Tests that the git checkout command works."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
       commit_to_test = '04ea24ee15bbe46a19e5da6c5f022a2ffdfbdb3b'
-      repo_man.checkout_commit(commit_to_test)
-      self.assertEqual(commit_to_test, repo_man.get_current_commit())
+      test_repo_manager.checkout_commit(commit_to_test)
+      self.assertEqual(commit_to_test, test_repo_manager.get_current_commit())
 
   def test_checkout_invalid_commit(self):
     """Tests that the git checkout invalid commit fails."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
       with self.assertRaises(ValueError):
-        repo_man.checkout_commit(' ')
+        test_repo_manager.checkout_commit(' ')
       with self.assertRaises(ValueError):
-        repo_man.checkout_commit('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
+        test_repo_manager.checkout_commit(
+            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
       with self.assertRaises(ValueError):
-        repo_man.checkout_commit('not-a-valid-commit')
+        test_repo_manager.checkout_commit('not-a-valid-commit')
 
 
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class RepoManagerGetCommitListTest(unittest.TestCase):
-  """Tests the get_commit_list method of RepoManager."""
+class RepoManagerGetCommitListUnitTests(unittest.TestCase):
+  """Class to test the functionality of get commit list in the
+   RepoManager class."""
 
   def test_get_valid_commit_list(self):
     """Tests an accurate commit list can be retrieved from the repo manager."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
       old_commit = '04ea24ee15bbe46a19e5da6c5f022a2ffdfbdb3b'
       new_commit = 'fa662173bfeb3ba08d2e84cefc363be11e6c8463'
       commit_list = [
@@ -98,88 +90,47 @@
           '97dee00a3c4ce95071c3e061592f5fd577dea886',
           '04ea24ee15bbe46a19e5da6c5f022a2ffdfbdb3b'
       ]
-      result_list = repo_man.get_commit_list(new_commit, old_commit)
+      result_list = test_repo_manager.get_commit_list(old_commit, new_commit)
       self.assertListEqual(commit_list, result_list)
 
-  def test_get_invalid_commit_list(self):
-    """Tests that the proper errors are thrown when invalid commits are
-    passed to get_commit_list."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
+  def test_invalid_commit_list(self):
+    """Tests that the propper Errors are thrown when invalid commits are
+    passed."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
       old_commit = '04ea24ee15bbe46a19e5da6c5f022a2ffdfbdb3b'
       new_commit = 'fa662173bfeb3ba08d2e84cefc363be11e6c8463'
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
       with self.assertRaises(ValueError):
-        repo_man.get_commit_list('fakecommit', new_commit)
+        test_repo_manager.get_commit_list('fakecommit', new_commit)
       with self.assertRaises(ValueError):
-        repo_man.get_commit_list(new_commit, 'fakecommit')
+        test_repo_manager.get_commit_list(new_commit, 'fakecommit')
       with self.assertRaises(RuntimeError):
-        repo_man.get_commit_list(old_commit, new_commit)  # pylint: disable=arguments-out-of-order
+        # pylint: disable=arguments-out-of-order
+        test_repo_manager.get_commit_list(new_commit, old_commit)
 
 
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class GitDiffTest(unittest.TestCase):
-  """Tests get_git_diff."""
+class RepoManagerCheckoutPullRequestUnitTests(unittest.TestCase):
+  """Class to test the functionality of checkout_pr of the RepoManager class."""
 
-  def test_diff_exists(self):
-    """Tests that a real diff is returned when a valid repo manager exists."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
-      with mock.patch.object(utils,
-                             'execute',
-                             return_value=('test.py\ndiff.py', None, 0)):
-        diff = repo_man.get_git_diff()
-        self.assertCountEqual(diff, ['test.py', 'diff.py'])
-
-  def test_diff_empty(self):
-    """Tests that None is returned when there is no difference between repos."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
-      with mock.patch.object(utils, 'execute', return_value=('', None, 0)):
-        diff = repo_man.get_git_diff()
-        self.assertIsNone(diff)
-
-  def test_error_on_command(self):
-    """Tests that None is returned when the command errors out."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
-      with mock.patch.object(utils,
-                             'execute',
-                             return_value=('', 'Test error.', 1)):
-        diff = repo_man.get_git_diff()
-        self.assertIsNone(diff)
-
-  def test_diff_no_change(self):
-    """Tests that None is returned when there is no difference between repos."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
-      diff = repo_man.get_git_diff()
-      self.assertIsNone(diff)
-
-
-@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
-                 'INTEGRATION_TESTS=1 not set')
-class CheckoutPrIntegrationTest(unittest.TestCase):
-  """Does Integration tests on the checkout_pr method of RepoManager."""
-
-  def test_pull_request_exists(self):
-    """Tests that a diff is returned when a valid PR is checked out."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
-      repo_man.checkout_pr('refs/pull/3415/merge')
-      diff = repo_man.get_git_diff()
-      self.assertCountEqual(diff, ['README.md'])
+  def test_checkout_valid_pull_request(self):
+    """Tests that the git checkout pull request works."""
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
+      test_repo_manager.checkout_pr('refs/pull/3310/merge')
+      self.assertEqual(test_repo_manager.get_current_commit(),
+                       'ff00c1685ccf32f729cf6c834e641223ce6262e4')
 
   def test_checkout_invalid_pull_request(self):
     """Tests that the git checkout invalid pull request fails."""
-    with get_oss_fuzz_repo() as oss_fuzz_repo:
-      repo_man = repo_manager.RepoManager(oss_fuzz_repo)
+    with tempfile.TemporaryDirectory() as tmp_dir:
+      test_repo_manager = repo_manager.RepoManager(OSS_FUZZ_REPO, tmp_dir)
       with self.assertRaises(RuntimeError):
-        repo_man.checkout_pr(' ')
+        test_repo_manager.checkout_pr(' ')
       with self.assertRaises(RuntimeError):
-        repo_man.checkout_pr('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
+        test_repo_manager.checkout_pr(
+            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
       with self.assertRaises(RuntimeError):
-        repo_man.checkout_pr('not/a/valid/pr')
+        test_repo_manager.checkout_pr('not/a/valid/pr')
 
 
 if __name__ == '__main__':
diff --git a/infra/retry.py b/infra/retry.py
deleted file mode 100644
index 1a94180..0000000
--- a/infra/retry.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Retry decorator. Copied from ClusterFuzz source."""
-
-import functools
-import inspect
-import logging
-import sys
-import time
-
-# pylint: disable=too-many-arguments,broad-except
-
-
-def sleep(seconds):
-  """Invoke time.sleep. This is to avoid the flakiness of time.sleep. See:
-    crbug.com/770375"""
-  time.sleep(seconds)
-
-
-def get_delay(num_try, delay, backoff):
-  """Compute backoff delay."""
-  return delay * (backoff**(num_try - 1))
-
-
-def wrap(retries,
-         delay,
-         backoff=2,
-         exception_type=Exception,
-         retry_on_false=False):
-  """Retry decorator for a function."""
-
-  assert delay > 0
-  assert backoff >= 1
-  assert retries >= 0
-
-  def decorator(func):
-    """Decorator for the given function."""
-    tries = retries + 1
-    is_generator = inspect.isgeneratorfunction(func)
-    function_with_type = func.__qualname__
-    if is_generator:
-      function_with_type += ' (generator)'
-
-    def handle_retry(num_try, exception=None):
-      """Handle retry."""
-      if (exception is None or
-          isinstance(exception, exception_type)) and num_try < tries:
-        logging.log('Retrying on %s failed with %s. Retrying again.',
-                    function_with_type,
-                    sys.exc_info()[1])
-        sleep(get_delay(num_try, delay, backoff))
-        return True
-
-      logging.error('Retrying on %s failed with %s. Raise.', function_with_type,
-                    sys.exc_info()[1])
-      return False
-
-    @functools.wraps(func)
-    def _wrapper(*args, **kwargs):
-      """Regular function wrapper."""
-      for num_try in range(1, tries + 1):
-        try:
-          result = func(*args, **kwargs)
-          if retry_on_false and not result:
-            if not handle_retry(num_try):
-              return result
-
-            continue
-          return result
-        except Exception as error:
-          if not handle_retry(num_try, exception=error):
-            raise
-
-    @functools.wraps(func)
-    def _generator_wrapper(*args, **kwargs):
-      """Generator function wrapper."""
-      # This argument is not applicable for generator functions.
-      assert not retry_on_false
-      already_yielded_element_count = 0
-      for num_try in range(1, tries + 1):
-        try:
-          for index, result in enumerate(func(*args, **kwargs)):
-            if index >= already_yielded_element_count:
-              yield result
-              already_yielded_element_count += 1
-          break
-        except Exception as error:
-          if not handle_retry(num_try, exception=error):
-            raise
-
-    if is_generator:
-      return _generator_wrapper
-    return _wrapper
-
-  return decorator
diff --git a/infra/run_fuzzers.Dockerfile b/infra/run_fuzzers.Dockerfile
deleted file mode 100644
index b00bb12..0000000
--- a/infra/run_fuzzers.Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-# Docker image to run the CIFuzz action run_fuzzers in.
-
-FROM gcr.io/oss-fuzz-base/cifuzz-base
-
-# Python file to execute when the docker container starts up.
-# We can't use the env var $OSS_FUZZ_ROOT here. Since it's a constant env var,
-# just expand to '/opt/oss-fuzz'.
-ENTRYPOINT ["python3", "/opt/oss-fuzz/infra/cifuzz/run_fuzzers_entrypoint.py"]
-
-# Copy infra source code.
-ADD . ${OSS_FUZZ_ROOT}/infra
\ No newline at end of file
diff --git a/infra/templates.py b/infra/templates.py
index f16da92..6065ebd 100755
--- a/infra/templates.py
+++ b/infra/templates.py
@@ -13,17 +13,14 @@
 # limitations under the License.
 #
 ################################################################################
-"""Templates for OSS-Fuzz project files."""
 
 PROJECT_YAML_TEMPLATE = """\
 homepage: "<your_project_homepage>"
-language: <programming_language>  # Example values: c, c++, go, rust.
 primary_contact: "<primary_contact_email>"
-main_repo: "https://path/to/main/repo.git"
 """
 
 DOCKER_TEMPLATE = """\
-# Copyright %(year)d Google LLC
+# Copyright %(year)d Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -40,6 +37,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER your@email.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 <git_url> %(project_name)s     # or use other version control
 WORKDIR %(project_name)s
@@ -48,7 +46,7 @@
 
 BUILD_TEMPLATE = """\
 #!/bin/bash -eu
-# Copyright %(year)d Google LLC
+# Copyright %(year)d Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
diff --git a/infra/test_helpers.py b/infra/test_helpers.py
deleted file mode 100644
index be0b1b8..0000000
--- a/infra/test_helpers.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Contains convenient helpers for writing tests."""
-
-import contextlib
-import os
-import shutil
-import tempfile
-from unittest import mock
-
-
-def patch_environ(testcase_obj, env=None):
-  """Patch environment."""
-  if env is None:
-    env = {}
-
-  patcher = mock.patch.dict(os.environ, env)
-  testcase_obj.addCleanup(patcher.stop)
-  patcher.start()
-
-
-@contextlib.contextmanager
-def temp_dir_copy(directory):
-  """Context manager that yields a temporary copy of |directory|."""
-  with tempfile.TemporaryDirectory() as temp_dir:
-    temp_copy_path = os.path.join(temp_dir, os.path.basename(directory))
-    shutil.copytree(directory, temp_copy_path)
-    yield temp_copy_path
diff --git a/infra/test_repos.py b/infra/test_repos.py
index fb12fbe..6100369 100644
--- a/infra/test_repos.py
+++ b/infra/test_repos.py
@@ -25,22 +25,29 @@
 import os
 
 ExampleRepo = collections.namedtuple('ExampleRepo', [
-    'project_name', 'oss_repo_name', 'git_repo_name', 'image_location',
-    'git_url', 'new_commit', 'old_commit', 'intro_commit', 'fuzz_target',
-    'test_case_path'
+    'project_name', 'oss_repo_name', 'git_repo_name', 'git_url', 'new_commit',
+    'old_commit', 'intro_commit', 'fuzz_target', 'test_case_path'
 ])
 
 TEST_DIR_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                              'testcases')
 
-# WARNING: Tests are dependent upon the following repos existing and the
-# specified commits existing.
-# TODO(metzman): Fix this problem.
+# WARNING: These tests  are dependent upon the following repos existing and
+# the specified commits existing.
 TEST_REPOS = [
+    ExampleRepo(project_name='usrsctp',
+                oss_repo_name='usrsctp',
+                git_repo_name='usrsctp',
+                git_url='https://github.com/weinrank/usrsctp',
+                old_commit='4886aaa49fb90e479226fcfc3241d74208908232',
+                new_commit='c710749b1053978179a027973a3ea3bccf20ee5c',
+                intro_commit='457d6ead58e82584d9dcb826f6739347f59ebd3a',
+                fuzz_target='fuzzer_connect',
+                test_case_path=os.path.join(TEST_DIR_PATH,
+                                            'usrsctp_test_data')),
     ExampleRepo(project_name='curl',
                 oss_repo_name='curl',
                 git_repo_name='curl',
-                image_location='/src',
                 git_url='https://github.com/curl/curl.git',
                 old_commit='df26f5f9c36e19cd503c0e462e9f72ad37b84c82',
                 new_commit='dda418266c99ceab368d723facb52069cbb9c8d5',
@@ -50,31 +57,19 @@
     ExampleRepo(project_name='libarchive',
                 oss_repo_name='libarchive',
                 git_repo_name='libarchive',
-                image_location='/src',
                 git_url='https://github.com/libarchive/libarchive.git',
                 old_commit='5bd2a9b6658a3a6efa20bb9ad75bd39a44d71da6',
                 new_commit='458e49358f17ec58d65ab1c45cf299baaf3c98d1',
                 intro_commit='840266712006de5e737f8052db920dfea2be4260',
                 fuzz_target='libarchive_fuzzer',
                 test_case_path=os.path.join(TEST_DIR_PATH,
-                                            'libarchive_test_data')),
-    ExampleRepo(project_name='gonids',
-                oss_repo_name='gonids',
-                git_repo_name='gonids',
-                image_location='/root/go/src/github.com/google/',
-                git_url='https://github.com/google/gonids',
-                old_commit='',
-                new_commit='',
-                intro_commit='',
-                fuzz_target='',
-                test_case_path='')
+                                            'libarchive_test_data'))
 ]
 
 INVALID_REPO = ExampleRepo(project_name='notaproj',
                            oss_repo_name='notarepo',
                            git_repo_name='notarepo',
                            git_url='invalid.git',
-                           image_location='/src',
                            old_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
                            new_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
                            intro_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
diff --git a/infra/testcases/curl_test_data b/infra/testcases/curl_test_data
new file mode 100644
index 0000000..ed4b54e
--- /dev/null
+++ b/infra/testcases/curl_test_data
Binary files differ
diff --git a/infra/testcases/libarchive_test_data b/infra/testcases/libarchive_test_data
new file mode 100644
index 0000000..928bfec
--- /dev/null
+++ b/infra/testcases/libarchive_test_data
Binary files differ
diff --git a/infra/testcases/ndpi_test_data b/infra/testcases/ndpi_test_data
new file mode 100644
index 0000000..010af86
--- /dev/null
+++ b/infra/testcases/ndpi_test_data
Binary files differ
diff --git a/infra/testcases/usrsctp_test_data b/infra/testcases/usrsctp_test_data
new file mode 100644
index 0000000..fa90322
--- /dev/null
+++ b/infra/testcases/usrsctp_test_data
Binary files differ
diff --git a/infra/testcases/yara_test_data b/infra/testcases/yara_test_data
new file mode 100644
index 0000000..e2a0b94
--- /dev/null
+++ b/infra/testcases/yara_test_data
@@ -0,0 +1 @@
+rule N{condition:for 1r in r(r
\ No newline at end of file
diff --git a/infra/travis/requirements.txt b/infra/travis/requirements.txt
new file mode 100644
index 0000000..37917bb
--- /dev/null
+++ b/infra/travis/requirements.txt
@@ -0,0 +1 @@
+PyYAML==5.1
diff --git a/infra/travis/travis_build.py b/infra/travis/travis_build.py
new file mode 100755
index 0000000..c8b8de8
--- /dev/null
+++ b/infra/travis/travis_build.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+"""Build modified projects."""
+
+from __future__ import print_function
+
+import os
+import re
+import subprocess
+import yaml
+
+DEFAULT_ARCHITECTURES = ['x86_64']
+DEFAULT_ENGINES = ['afl', 'libfuzzer']
+DEFAULT_SANITIZERS = ['address', 'undefined']
+
+
+def get_modified_buildable_projects():
+  """Returns a list of all the projects modified in this commit that have a
+  build.sh file."""
+  master_head_sha = subprocess.check_output(
+      ['git', 'merge-base', 'HEAD', 'FETCH_HEAD']).decode().strip()
+  output = subprocess.check_output(
+      ['git', 'diff', '--name-only', 'HEAD', master_head_sha]).decode()
+  projects_regex = '.*projects/(?P<name>.*)/.*\n'
+  modified_projects = set(re.findall(projects_regex, output))
+  projects_dir = os.path.join(get_oss_fuzz_root(), 'projects')
+  # Filter out projects without build.sh files since new projects and reverted
+  # projects frequently don't have them. In these cases we don't want Travis's
+  # builds to fail.
+  modified_buildable_projects = []
+  for project in modified_projects:
+    if not os.path.exists(os.path.join(projects_dir, project, 'build.sh')):
+      print('Project {0} does not have a build.sh. skipping build.'.format(
+          project))
+      continue
+    modified_buildable_projects.append(project)
+  return modified_buildable_projects
+
+
+def get_oss_fuzz_root():
+  """Get the absolute path of the root of the oss-fuzz checkout."""
+  script_path = os.path.realpath(__file__)
+  return os.path.abspath(
+      os.path.dirname(os.path.dirname(os.path.dirname(script_path))))
+
+
+def execute_helper_command(helper_command):
+  """Execute |helper_command| using helper.py."""
+  root = get_oss_fuzz_root()
+  script_path = os.path.join(root, 'infra', 'helper.py')
+  command = ['python', script_path] + helper_command
+  print('Running command: %s' % ' '.join(command))
+  subprocess.check_call(command)
+
+
+def build_fuzzers(project, engine, sanitizer, architecture):
+  """Execute helper.py's build_fuzzers command on |project|. Build the fuzzers
+  with |engine| and |sanitizer| for |architecture|."""
+  execute_helper_command([
+      'build_fuzzers', project, '--engine', engine, '--sanitizer', sanitizer,
+      '--architecture', architecture
+  ])
+
+
+def check_build(project, engine, sanitizer, architecture):
+  """Execute helper.py's check_build command on |project|, assuming it was most
+  recently built with |engine| and |sanitizer| for |architecture|."""
+  execute_helper_command([
+      'check_build', project, '--engine', engine, '--sanitizer', sanitizer,
+      '--architecture', architecture
+  ])
+
+
+def should_build(project_yaml):
+  """Is the build specified by travis enabled in the |project_yaml|?"""
+
+  def is_enabled(env_var, yaml_name, defaults):
+    """Is the value of |env_var| enabled in |project_yaml| (in the |yaml_name|
+    section)? Uses |defaults| if |yaml_name| section is unspecified."""
+    return os.getenv(env_var) in project_yaml.get(yaml_name, defaults)
+
+  return (is_enabled('TRAVIS_ENGINE', 'fuzzing_engines', DEFAULT_ENGINES) and
+          is_enabled('TRAVIS_SANITIZER', 'sanitizers', DEFAULT_SANITIZERS) and
+          is_enabled('TRAVIS_ARCHITECTURE', 'architectures',
+                     DEFAULT_ARCHITECTURES))
+
+
+def build_project(project):
+  """Do the build of |project| that is specified by the TRAVIS_* environment
+  variables (TRAVIS_SANITIZER, TRAVIS_ENGINE, and TRAVIS_ARCHITECTURE)."""
+  root = get_oss_fuzz_root()
+  project_yaml_path = os.path.join(root, 'projects', project, 'project.yaml')
+  with open(project_yaml_path) as fp:
+    project_yaml = yaml.safe_load(fp)
+
+  if project_yaml.get('disabled', False):
+    print('Project {0} is disabled, skipping build.'.format(project))
+    return
+
+  engine = os.getenv('TRAVIS_ENGINE')
+  sanitizer = os.getenv('TRAVIS_SANITIZER')
+  architecture = os.getenv('TRAVIS_ARCHITECTURE')
+
+  if not should_build(project_yaml):
+    print(('Specified build: engine: {0}, sanitizer: {1}, architecture: {2} '
+           'not enabled for this project: {3}. skipping build.').format(
+               engine, sanitizer, architecture, project))
+
+    return
+
+  print('Building project', project)
+  build_fuzzers(project, engine, sanitizer, architecture)
+  if engine != 'none':
+    check_build(project, engine, sanitizer, architecture)
+
+
+def main():
+  projects = get_modified_buildable_projects()
+  failed_projects = []
+  for project in projects:
+    try:
+      build_project(project)
+    except subprocess.CalledProcessError:
+      failed_projects.append(project)
+
+  if failed_projects:
+    print('Failed projects:', ' '.join(failed_projects))
+    exit(1)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/infra/utils.py b/infra/utils.py
index fe5dd87..8f0e4e2 100644
--- a/infra/utils.py
+++ b/infra/utils.py
@@ -13,13 +13,10 @@
 # limitations under the License.
 """Utilities for OSS-Fuzz infrastructure."""
 
-import logging
 import os
-import posixpath
 import re
 import stat
 import subprocess
-import sys
 
 import helper
 
@@ -27,15 +24,12 @@
 FUZZ_TARGET_SEARCH_STRING = 'LLVMFuzzerTestOneInput'
 VALID_TARGET_NAME = re.compile(r'^[a-zA-Z0-9_-]+$')
 
-# Location of google cloud storage for latest OSS-Fuzz builds.
-GCS_BASE_URL = 'https://storage.googleapis.com/'
-
 
 def chdir_to_root():
   """Changes cwd to OSS-Fuzz root directory."""
   # Change to oss-fuzz main directory so helper.py runs correctly.
-  if os.getcwd() != helper.OSS_FUZZ_DIR:
-    os.chdir(helper.OSS_FUZZ_DIR)
+  if os.getcwd() != helper.OSSFUZZ_DIR:
+    os.chdir(helper.OSSFUZZ_DIR)
 
 
 def execute(command, location=None, check_result=False):
@@ -47,7 +41,7 @@
     check_result: Should an exception be thrown on failed command.
 
   Returns:
-    stdout, stderr, error code.
+    The stdout of the command, the error code.
 
   Raises:
     RuntimeError: running a command resulted in an error.
@@ -55,20 +49,14 @@
 
   if not location:
     location = os.getcwd()
-  process = subprocess.Popen(command,
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE,
-                             cwd=location)
+  process = subprocess.Popen(command, stdout=subprocess.PIPE, cwd=location)
   out, err = process.communicate()
-  out = out.decode('utf-8', errors='ignore')
-  err = err.decode('utf-8', errors='ignore')
-  if err:
-    logging.debug('Stderr of command \'%s\' is %s.', ' '.join(command), err)
-  if check_result and process.returncode:
-    raise RuntimeError(
-        'Executing command \'{0}\' failed with error: {1}.'.format(
-            ' '.join(command), err))
-  return out, err, process.returncode
+  if check_result and (process.returncode or err):
+    raise RuntimeError('Error: %s\n Command: %s\n Return code: %s\n Out: %s' %
+                       (err, command, process.returncode, out))
+  if out is not None:
+    out = out.decode('ascii').rstrip()
+  return out, process.returncode
 
 
 def get_fuzz_targets(path):
@@ -83,9 +71,9 @@
   if not os.path.exists(path):
     return []
   fuzz_target_paths = []
-  for root, _, fuzzers in os.walk(path):
-    for fuzzer in fuzzers:
-      file_path = os.path.join(root, fuzzer)
+  for root, _, _ in os.walk(path):
+    for filename in os.listdir(path):
+      file_path = os.path.join(root, filename)
       if is_fuzz_target_local(file_path):
         fuzz_target_paths.append(file_path)
 
@@ -94,15 +82,15 @@
 
 def get_container_name():
   """Gets the name of the current docker container you are in.
+  /proc/self/cgroup can be used to check control groups e.g. Docker.
+  See: https://docs.docker.com/config/containers/runmetrics/ for more info.
 
   Returns:
     Container name or None if not in a container.
   """
-  result = subprocess.run(  # pylint: disable=subprocess-run-check
-      ['systemd-detect-virt', '-c'],
-      stdout=subprocess.PIPE).stdout
-  if b'docker' not in result:
-    return None
+  with open('/proc/self/cgroup') as file_handle:
+    if 'docker' not in file_handle.read():
+      return None
   with open('/etc/hostname') as file_handle:
     return file_handle.read().strip()
 
@@ -132,40 +120,3 @@
 
   with open(file_path, 'rb') as file_handle:
     return file_handle.read().find(FUZZ_TARGET_SEARCH_STRING.encode()) != -1
-
-
-def binary_print(string):
-  """Print that can print a binary string."""
-  if isinstance(string, bytes):
-    string += b'\n'
-  else:
-    string += '\n'
-  sys.stdout.buffer.write(string)
-  sys.stdout.flush()
-
-
-def url_join(*url_parts):
-  """Joins URLs together using the POSIX join method.
-
-  Args:
-    url_parts: Sections of a URL to be joined.
-
-  Returns:
-    Joined URL.
-  """
-  return posixpath.join(*url_parts)
-
-
-def gs_url_to_https(url):
-  """Converts |url| from a GCS URL (beginning with 'gs://') to an HTTPS one."""
-  return url_join(GCS_BASE_URL, remove_prefix(url, 'gs://'))
-
-
-def remove_prefix(string, prefix):
-  """Returns |string| without the leading substring |prefix|."""
-  # Match behavior of removeprefix from python3.9:
-  # https://www.python.org/dev/peps/pep-0616/
-  if string.startswith(prefix):
-    return string[len(prefix):]
-
-  return string
diff --git a/infra/utils_test.py b/infra/utils_test.py
index aa6ec7b..ab3d216 100644
--- a/infra/utils_test.py
+++ b/infra/utils_test.py
@@ -11,27 +11,26 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-"""Tests the functionality of the utils module's functions"""
+"""Test the functionality of the utils module's functions:
+1. is_fuzz_target_local
+2. get_fuzz_targets
+3. get_env_var
+"""
 
 import os
-import tempfile
 import unittest
-from unittest import mock
 
 import utils
 import helper
 
 EXAMPLE_PROJECT = 'example'
 
-TEST_OUT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                            'cifuzz', 'test_data', 'out')
 
-
-class IsFuzzTargetLocalTest(unittest.TestCase):
-  """Tests the is_fuzz_target_local function."""
+class IsFuzzTargetLocalUnitTest(unittest.TestCase):
+  """Test is_fuzz_target_local function in the utils module."""
 
   def test_invalid_filepath(self):
-    """Tests the function with an invalid file path."""
+    """Test the function with an invalid file path."""
     is_local = utils.is_fuzz_target_local('not/a/real/file')
     self.assertFalse(is_local)
     is_local = utils.is_fuzz_target_local('')
@@ -41,95 +40,63 @@
 
   def test_valid_filepath(self):
     """Checks is_fuzz_target_local function with a valid filepath."""
-
+    utils.chdir_to_root()
+    helper.build_fuzzers_impl(EXAMPLE_PROJECT,
+                              True,
+                              'libfuzzer',
+                              'address',
+                              'x86_64', [],
+                              None,
+                              no_cache=False,
+                              mount_location=None)
     is_local = utils.is_fuzz_target_local(
-        os.path.join(TEST_OUT_DIR, 'example_crash_fuzzer'))
+        os.path.join(helper.OSSFUZZ_DIR, 'build', 'out', EXAMPLE_PROJECT,
+                     'do_stuff_fuzzer'))
     self.assertTrue(is_local)
-    is_local = utils.is_fuzz_target_local(TEST_OUT_DIR)
+    is_local = utils.is_fuzz_target_local(
+        os.path.join(helper.OSSFUZZ_DIR, 'build', 'out', EXAMPLE_PROJECT,
+                     'do_stuff_fuzzer.dict'))
     self.assertFalse(is_local)
 
 
-class GetFuzzTargetsTest(unittest.TestCase):
-  """Tests the get_fuzz_targets function."""
+class GetFuzzTargetsUnitTest(unittest.TestCase):
+  """Test get_fuzz_targets function in the utils module."""
 
   def test_valid_filepath(self):
     """Tests that fuzz targets can be retrieved once the fuzzers are built."""
-    fuzz_targets = utils.get_fuzz_targets(TEST_OUT_DIR)
-    crash_fuzzer_path = os.path.join(TEST_OUT_DIR, 'example_crash_fuzzer')
-    nocrash_fuzzer_path = os.path.join(TEST_OUT_DIR, 'example_nocrash_fuzzer')
-    self.assertCountEqual(fuzz_targets,
-                          [crash_fuzzer_path, nocrash_fuzzer_path])
-
-    # Testing on a arbitrary directory with no fuzz targets in it.
+    utils.chdir_to_root()
+    helper.build_fuzzers_impl(EXAMPLE_PROJECT,
+                              True,
+                              'libfuzzer',
+                              'address',
+                              'x86_64', [],
+                              None,
+                              no_cache=False,
+                              mount_location=None)
     fuzz_targets = utils.get_fuzz_targets(
-        os.path.join(helper.OSS_FUZZ_DIR, 'infra', 'travis'))
+        os.path.join(helper.OSSFUZZ_DIR, 'build', 'out', EXAMPLE_PROJECT))
+    self.assertCountEqual(fuzz_targets, [
+        os.path.join(helper.OSSFUZZ_DIR, 'build', 'out', EXAMPLE_PROJECT,
+                     'do_stuff_fuzzer')
+    ])
+    fuzz_targets = utils.get_fuzz_targets(
+        os.path.join(helper.OSSFUZZ_DIR, 'infra'))
     self.assertFalse(fuzz_targets)
 
   def test_invalid_filepath(self):
     """Tests what get_fuzz_targets return when invalid filepath is used."""
+    utils.chdir_to_root()
+    helper.build_fuzzers_impl(EXAMPLE_PROJECT,
+                              True,
+                              'libfuzzer',
+                              'address',
+                              'x86_64', [],
+                              None,
+                              no_cache=False,
+                              mount_location=None)
     fuzz_targets = utils.get_fuzz_targets('not/a/valid/file/path')
     self.assertFalse(fuzz_targets)
 
 
-class ExecuteTest(unittest.TestCase):
-  """Tests the execute function."""
-
-  def test_valid_command(self):
-    """Tests that execute can produce valid output."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out, err, err_code = utils.execute(['ls', '.'],
-                                         location=tmp_dir,
-                                         check_result=False)
-      self.assertEqual(err_code, 0)
-      self.assertEqual(err, '')
-      self.assertEqual(out, '')
-      out, err, err_code = utils.execute(['mkdir', 'tmp'],
-                                         location=tmp_dir,
-                                         check_result=False)
-      self.assertEqual(err_code, 0)
-      self.assertEqual(err, '')
-      self.assertEqual(out, '')
-      out, err, err_code = utils.execute(['ls', '.'],
-                                         location=tmp_dir,
-                                         check_result=False)
-      self.assertEqual(err_code, 0)
-      self.assertEqual(err, '')
-      self.assertEqual(out, 'tmp\n')
-
-  def test_error_command(self):
-    """Tests that execute can correctly surface errors."""
-    with tempfile.TemporaryDirectory() as tmp_dir:
-      out, err, err_code = utils.execute(['ls', 'notarealdir'],
-                                         location=tmp_dir,
-                                         check_result=False)
-      self.assertEqual(err_code, 2)
-      self.assertIsNotNone(err)
-      self.assertEqual(out, '')
-      with self.assertRaises(RuntimeError):
-        out, err, err_code = utils.execute(['ls', 'notarealdir'],
-                                           location=tmp_dir,
-                                           check_result=True)
-
-
-class BinaryPrintTest(unittest.TestCase):
-  """Tests for utils.binary_print."""
-
-  @unittest.skip('Causes spurious failures because of side-effects.')
-  def test_string(self):  # pylint: disable=no-self-use
-    """Tests that utils.binary_print can print a regular string."""
-    # Should execute without raising any exceptions.
-    with mock.patch('sys.stdout.buffer.write') as mocked_write:
-      utils.binary_print('hello')
-      mocked_write.assert_called_with('hello\n')
-
-  @unittest.skip('Causes spurious failures because of side-effects.')
-  def test_binary_string(self):  # pylint: disable=no-self-use
-    """Tests that utils.binary_print can print a bianry string."""
-    # Should execute without raising any exceptions.
-    with mock.patch('sys.stdout.buffer.write') as mocked_write:
-      utils.binary_print(b'hello')
-      mocked_write.assert_called_with(b'hello\n')
-
-
 if __name__ == '__main__':
   unittest.main()
diff --git a/oss-fuzz.iml b/oss-fuzz.iml
new file mode 100644
index 0000000..20f48fa
--- /dev/null
+++ b/oss-fuzz.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="jdk" jdkName="Python 2.7" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/projects/abseil-cpp/BUILD b/projects/abseil-cpp/BUILD
deleted file mode 100644
index d40194e..0000000
--- a/projects/abseil-cpp/BUILD
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cc_binary(
-	name = "string_escape_fuzzer",
-	deps = ["@com_google_absl//absl/strings"],
-	srcs = ["string_escape_fuzzer.cc"],
-)
-
-cc_binary(
-	name = "string_utilities_fuzzer",
-	deps = [
-		"@com_google_absl//absl/strings",
-		"@com_google_absl//absl/strings:cord"
-		],
-	srcs = ["string_utilities_fuzzer.cc"],
-)
\ No newline at end of file
diff --git a/projects/abseil-cpp/Dockerfile b/projects/abseil-cpp/Dockerfile
deleted file mode 100644
index 09f6684..0000000
--- a/projects/abseil-cpp/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get --no-install-recommends install -y build-essential make curl wget rsync
-
-RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
-RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
-RUN apt-get update && apt-get install -y bazel
-RUN curl -Lo /usr/bin/bazel \
-        https://github.com/bazelbuild/bazelisk/releases/download/v1.1.0/bazelisk-linux-amd64 \
-        && \
-    chmod +x /usr/bin/bazel
-
-RUN git clone --depth 1 https://github.com/abseil/abseil-cpp.git
-
-COPY BUILD WORKSPACE build.sh string_escape_fuzzer.cc string_utilities_fuzzer.cc $SRC/
\ No newline at end of file
diff --git a/projects/abseil-cpp/WORKSPACE b/projects/abseil-cpp/WORKSPACE
deleted file mode 100644
index e155690..0000000
--- a/projects/abseil-cpp/WORKSPACE
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-local_repository(
-	name = "com_google_absl",
-	path = "abseil-cpp/",
-)
diff --git a/projects/abseil-cpp/build.sh b/projects/abseil-cpp/build.sh
deleted file mode 100644
index ec3acd4..0000000
--- a/projects/abseil-cpp/build.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-readonly EXTRA_BAZEL_FLAGS="$(
-for f in ${CFLAGS}; do
-  echo "--conlyopt=${f}" "--linkopt=${f}"
-done
-for f in ${CXXFLAGS}; do
-  echo "--cxxopt=${f}" "--linkopt=${f}"
-done
-
-if [ "$SANITIZER" = "undefined" ]
-then
-  # Bazel uses clang to link binary, which does not link clang_rt ubsan library for C++ automatically.
-  # See issue: https://github.com/bazelbuild/bazel/issues/8777
-  echo "--linkopt=\"$(find $(llvm-config --libdir) -name libclang_rt.ubsan_standalone_cxx-x86_64.a | head -1)\""
-fi
-)"
-
-declare FUZZ_TARGETS=("string_escape_fuzzer" "string_utilities_fuzzer")
-
-bazel build \
-	--verbose_failures \
-	--dynamic_mode=off \
-	--spawn_strategy=standalone \
-	--genrule_strategy=standalone \
-	--strip=never \
-	--linkopt=-pthread \
-	--copt=${LIB_FUZZING_ENGINE} \
-	--linkopt=${LIB_FUZZING_ENGINE} \
-	--linkopt=-lc++ \
-	${EXTRA_BAZEL_FLAGS} \
-	${FUZZ_TARGETS[*]}
-
-
-if [ "$SANITIZER" = "coverage" ]
-then
-  # The build invoker looks for sources in $SRC, but it turns out that we need
-  # to not be buried under src/, paths are expected at out/proc/self/cwd by
-  # the profiler.
-  declare -r REMAP_PATH="${OUT}/proc/self/cwd"
-  mkdir -p "${REMAP_PATH}"
-  mkdir -p "${REMAP_PATH}/external/com_google_absl"
-  rsync -av "${SRC}"/abseil-cpp/absl "${REMAP_PATH}/external/com_google_absl"
-
-  declare -r RSYNC_FILTER_ARGS=("--include" "*.h" "--include" "*.cc" "--include" \
-    "*.hpp" "--include" "*.cpp" "--include" "*.c" "--include" "*/" "--exclude" "*")
-  rsync -avLk "${RSYNC_FILTER_ARGS[@]}" "${SRC}"/bazel-out "${REMAP_PATH}"
-  rsync -avLkR "${RSYNC_FILTER_ARGS[@]}" "${HOME}" "${OUT}"
-  rsync -avLkR "${RSYNC_FILTER_ARGS[@]}" /tmp "${OUT}"
-
-  cp *fuzzer.cc "${OUT}/proc/self/cwd"
-fi
-
-cp "./bazel-bin/"*fuzzer "${OUT}/"
diff --git a/projects/abseil-cpp/project.yaml b/projects/abseil-cpp/project.yaml
deleted file mode 100644
index b0b7a16..0000000
--- a/projects/abseil-cpp/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "abseil.io"
-language: c++
-primary_contact: "abseil-io@googlegroups.com"
-main_repo: 'https://github.com/abseil/abseil-cpp.git'
diff --git a/projects/abseil-cpp/string_escape_fuzzer.cc b/projects/abseil-cpp/string_escape_fuzzer.cc
deleted file mode 100644
index 581afab..0000000
--- a/projects/abseil-cpp/string_escape_fuzzer.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include <string> 
-
-#include "absl/strings/escaping.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-	std::string str (reinterpret_cast<const char*>(data), size);
-	std::string escaped, unescaped;
-	escaped = absl::CHexEscape(str);
-	absl::CUnescape(escaped, &unescaped);
-	if (str != unescaped)
-		abort();
-
-	escaped = absl::CEscape(str);
-	absl::CUnescape(escaped, &unescaped);
-	if (str != unescaped)
-		abort();
-
-	escaped = absl::Utf8SafeCEscape(str);
-	absl::CUnescape(escaped, &unescaped);
-	if (str != unescaped)
-		abort();
-	
-	escaped = absl::Utf8SafeCHexEscape(str);
-	absl::CUnescape(escaped, &unescaped);
-	if (str != unescaped)
-		abort();
-	
-	std::string encoded, decoded;
-	absl::Base64Escape(str, &encoded);
-	absl::Base64Unescape(encoded, &decoded);
-	if (str != unescaped)
-		abort();
-
-	absl::WebSafeBase64Escape(str, &encoded);
-	absl::WebSafeBase64Unescape(encoded, &decoded);
-	if (str != decoded)
-		abort();
-
-	std::string hex_result, bytes_result;
-	hex_result = absl::BytesToHexString(str);
-	bytes_result = absl::HexStringToBytes(hex_result);
-	if (str != decoded)
-		abort();
-
-	return 0;
-}
\ No newline at end of file
diff --git a/projects/abseil-cpp/string_utilities_fuzzer.cc b/projects/abseil-cpp/string_utilities_fuzzer.cc
deleted file mode 100644
index 6735b7b..0000000
--- a/projects/abseil-cpp/string_utilities_fuzzer.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include <string>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "absl/strings/str_format.h"
-#include "absl/strings/str_join.h"
-#include "absl/strings/str_split.h"
-#include "absl/strings/numbers.h"
-#include "absl/strings/str_cat.h"
-
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-	FuzzedDataProvider fuzzed_data(data, size);
-	float float_value = fuzzed_data.ConsumeFloatingPoint<float>();
-	double double_value = fuzzed_data.ConsumeFloatingPoint<double>();
-	int int_value = fuzzed_data.ConsumeIntegral<int>();
-	bool bool_value = fuzzed_data.ConsumeBool();
-	std::string str1 = fuzzed_data.ConsumeRandomLengthString();
-	std::string str2 = fuzzed_data.ConsumeRemainingBytesAsString();
-
-	std::string float_str = absl::StrFormat("%g", float_value);
-	std::string double_str = absl::StrFormat("%g", double_value);
-	std::string int_str = absl::StrFormat("%d", int_value);
-	std::string bool_str = absl::StrFormat("%d", bool_value);
-	
-	if (!absl::SimpleAtof(float_str, &float_value))
-		return 0;
-	if (!absl::SimpleAtod(double_str, &double_value))
-		return 0;
-	if (!absl::SimpleAtoi(int_str, &int_value))
-		return 0;
-	if (!absl::SimpleAtob(bool_str, &bool_value))
-		return 0;
-
-	absl::StrAppend(&str1, str2);
-	std::string str_result = absl::StrCat(str1, float_value, double_value, int_value, bool_value);
-	std::vector<std::string> v = absl::StrSplit(str_result, ".");
-	absl::StrJoin(v, ".");
-	return 0;
-}
\ No newline at end of file
diff --git a/projects/alembic/Dockerfile b/projects/alembic/Dockerfile
deleted file mode 100644
index baf498d..0000000
--- a/projects/alembic/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y build-essential zlib1g-dev zlib1g-dev:i386 python make automake
-
-RUN git clone --depth 1 https://github.com/alembic/alembic
-
-# Ubuntu's libilmbase-dev package doesn't include static libraries, so we have
-# to build OpenEXR from source.  The v2.4.2 release is the most recent as of
-# 2020-07-29.
-RUN git clone -b v2.4.2 --depth 1 https://github.com/AcademySoftwareFoundation/openexr
-
-COPY build.sh *.h *.cc $SRC/
-WORKDIR $WORK/
diff --git a/projects/alembic/alembic_dump_info_fuzzer.cc b/projects/alembic/alembic_dump_info_fuzzer.cc
deleted file mode 100644
index e3aa716..0000000
--- a/projects/alembic/alembic_dump_info_fuzzer.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "alembic/lib/Alembic/AbcCoreFactory/All.h"
-#include "alembic/lib/Alembic/AbcCoreOgawa/All.h"
-#include "alembic/lib/Alembic/AbcGeom/All.h"
-#include "alembic/lib/Alembic/AbcMaterial/All.h"
-
-#include "fuzzer_temp_file.h"
-
-using Alembic::AbcCoreAbstract::PropertyHeader;
-using Alembic::AbcCoreAbstract::PropertyType;
-using Alembic::AbcCoreFactory::IFactory;
-using Alembic::AbcGeom::C4fArraySamplePtr;
-using Alembic::AbcGeom::IArchive;
-using Alembic::AbcGeom::IC4fGeomParam;
-using Alembic::AbcGeom::ICompoundProperty;
-using Alembic::AbcGeom::ICurves;
-using Alembic::AbcGeom::ICurvesSchema;
-using Alembic::AbcGeom::IFaceSet;
-using Alembic::AbcGeom::IFaceSetSchema;
-using Alembic::AbcGeom::IGeomBaseSchema;
-using Alembic::AbcGeom::IN3fGeomParam;
-using Alembic::AbcGeom::index_t;
-using Alembic::AbcGeom::Int32ArraySamplePtr;
-using Alembic::AbcGeom::IObject;
-using Alembic::AbcGeom::IPolyMesh;
-using Alembic::AbcGeom::IPolyMeshSchema;
-using Alembic::AbcGeom::ISubD;
-using Alembic::AbcGeom::ISubDSchema;
-using Alembic::AbcGeom::IV2fGeomParam;
-using Alembic::AbcGeom::IXform;
-using Alembic::AbcGeom::IXformSchema;
-using Alembic::AbcGeom::M44d;
-using Alembic::AbcGeom::M44f;
-using Alembic::AbcGeom::N3fArraySamplePtr;
-using Alembic::AbcGeom::ObjectHeader;
-using Alembic::AbcGeom::P3fArraySamplePtr;
-using Alembic::AbcGeom::UInt32ArraySamplePtr;
-using Alembic::AbcGeom::V2fArraySamplePtr;
-using Alembic::AbcMaterial::IMaterial;
-using Alembic::AbcMaterial::IMaterialSchema;
-
-template <typename T> void dumpAttributes(T const &schema) {
-
-  const size_t meshPropertyCount = schema.getNumProperties();
-
-  for (size_t p = 0; p < meshPropertyCount; p++) {
-    const PropertyHeader &header = schema.getPropertyHeader(p);
-    const PropertyType pType = header.getPropertyType();
-    const std::string &name = header.getName();
-
-    if (name == "P") {
-      schema.getNumSamples();
-    } else if (name == "uv" || name == "st") {
-      schema.getUVsParam().getNumSamples();
-    } else if (name == ".arbGeomParams") {
-      // additional geometry elements (color sets, additional texture
-      // coordinates)
-      const ICompoundProperty geoParam = schema.getArbGeomParams();
-      const size_t geoPropCount = geoParam.getNumProperties();
-
-      for (size_t g = 0; g < geoPropCount; g++) {
-        const PropertyHeader &headerGeo = geoParam.getPropertyHeader(g);
-        const std::string &nameGeo = headerGeo.getName();
-      }
-    }
-  }
-}
-
-void dumpPolyMesh(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  const IPolyMesh mesh(node.getParent(), header.getName());
-  const IPolyMeshSchema &schema = mesh.getSchema();
-
-  // Mesh properties
-  dumpAttributes(schema);
-}
-
-void dumpSubD(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  const ISubD mesh(node.getParent(), header.getName());
-  const ISubDSchema &schema = mesh.getSchema();
-
-  dumpAttributes(schema);
-  schema.getSubdivisionSchemeProperty();
-  schema.getFaceVaryingInterpolateBoundaryProperty();
-  schema.getFaceVaryingPropagateCornersProperty();
-  schema.getInterpolateBoundaryProperty();
-}
-
-void dumpFaceSet(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  const IFaceSet faceSet(node.getParent(), header.getName());
-  const IFaceSetSchema &schema = faceSet.getSchema();
-  schema.getNumSamples();
-}
-
-void dumpCurves(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  const ICurves curves(node.getParent(), header.getName());
-  const ICurvesSchema &schema = curves.getSchema();
-
-  dumpAttributes(schema);
-}
-
-void dumpXform(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  const IXform xform(node.getParent(), header.getName());
-  const IXformSchema &schema = xform.getSchema();
-
-  schema.getNumSamples();
-  schema.getNumOps();
-}
-
-void dumpMaterial(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  IMaterial material(node.getParent(), header.getName());
-  IMaterialSchema &schema = material.getSchema();
-
-  std::vector<std::string> targetNames;
-  schema.getTargetNames(targetNames);
-
-  for (const std::string &target : targetNames) {
-    std::vector<std::string> shaderTypes;
-    schema.getShaderTypesForTarget(target, shaderTypes);
-    const size_t shaderTypeCount = shaderTypes.size();
-    for (size_t s = 0; s < shaderTypeCount; s++) {
-
-      ICompoundProperty parameters =
-          schema.getShaderParameters(target, shaderTypes[s]);
-      const size_t parameterCount = parameters.getNumProperties();
-    }
-  }
-}
-
-void dumpNodes(const IObject &node) {
-  const ObjectHeader &header = node.getHeader();
-  // Dump the general node information.
-  header.getName();
-  header.getFullName();
-  header.getMetaData().serialize();
-
-  // Dump the type specific information.
-  if (Alembic::AbcGeom::IPolyMesh::matches(header)) {
-    dumpPolyMesh(node);
-  } else if (Alembic::AbcGeom::ISubD::matches(header)) {
-    dumpSubD(node);
-  } else if (Alembic::AbcGeom::IFaceSet::matches(header)) {
-    dumpFaceSet(node);
-  } else if (Alembic::AbcGeom::ICurves::matches(header)) {
-    dumpCurves(node);
-  } else if (Alembic::AbcGeom::IXform::matches(header)) {
-    dumpXform(node);
-  } else if (Alembic::AbcMaterial::IMaterial::matches(header)) {
-    dumpMaterial(node);
-  } else { // Miscellaneous nodes such as the root.
-    ;
-  }
-
-  // Dump the child headers.
-  const size_t childCount = node.getNumChildren();
-  for (size_t i = 0; i < childCount; i++) {
-    dumpNodes(node.getChild(i));
-  }
-}
-
-void dumpInfo(const char *file) {
-  // Load the Alembic archive and verify that it is valid.
-  IFactory factory;
-  IArchive archive = factory.getArchive(file);
-
-  if (archive.valid()) {
-    archive.getName();
-    dumpNodes(archive.getTop());
-  }
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  FuzzerTemporaryFile tempFile(data, size);
-  dumpInfo(tempFile.filename());
-
-  return 0;
-}
diff --git a/projects/alembic/build.sh b/projects/alembic/build.sh
deleted file mode 100644
index 28ada7e..0000000
--- a/projects/alembic/build.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mkdir -p $WORK/build_openexr
-mkdir -p $WORK/build_alembic
-
-# build openexr for alembic
-cd $WORK/build_openexr
-OPENEXR_CMAKE_SETTINGS=(
-  "-D BUILD_SHARED_LIBS=OFF"         # Build static libraries only
-  "-D PYILMBASE_ENABLE=OFF"          # Don't build Python support
-  "-D BUILD_TESTING=OFF"             # Or tests
-  "-D INSTALL_OPENEXR_EXAMPLES=OFF"  # Or examples
-  "-D OPENEXR_LIB_SUFFIX="           # Don't append the version number to library files
-  "-D ILMBASE_LIB_SUFFIX="
-)
-cmake $SRC/openexr ${OPENEXR_CMAKE_SETTINGS[@]}
-make -j$(nproc) && make install
-
-# build alembic
-cd $WORK/build_alembic
-cmake $SRC/alembic -DALEMBIC_SHARED_LIBS=OFF
-make -j$(nproc)
-
-INCLUDES=(
-  "-I $SRC"
-  "-I ${SRC}/alembic/lib"
-  "-I ${WORK}/build_alembic/lib"
-  "-I /usr/local/include/OpenEXR"
-)
-LIBS=("-lImath" "-lIex" "-lHalf")
-
-for fuzzer in $(find $SRC -name '*_fuzzer.cc'); do
-  fuzzer_basename=$(basename -s .cc $fuzzer)
-  $CXX $CXXFLAGS -std=c++11 ${INCLUDES[@]} \
-    $fuzzer $WORK/build_alembic/lib/Alembic/libAlembic.a $LIB_FUZZING_ENGINE \
-    -o $OUT/$fuzzer_basename ${LIBS[@]}
-done
diff --git a/projects/alembic/fuzzer_temp_file.h b/projects/alembic/fuzzer_temp_file.h
deleted file mode 100644
index b5442f1..0000000
--- a/projects/alembic/fuzzer_temp_file.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Adapter utility from fuzzer input to a temporary file, for fuzzing APIs that
-// require a file instead of an input buffer.
-
-#ifndef FUZZER_TEMP_FILE_H_
-#define FUZZER_TEMP_FILE_H_
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-// Pure-C interface for creating and cleaning up temporary files.
-
-static char *fuzzer_get_tmpfile(const uint8_t *data, size_t size) {
-  char *filename_buffer = strdup("/tmp/generate_temporary_file.XXXXXX");
-  if (!filename_buffer) {
-    perror("Failed to allocate file name buffer.");
-    abort();
-  }
-  const int file_descriptor = mkstemp(filename_buffer);
-  if (file_descriptor < 0) {
-    perror("Failed to make temporary file.");
-    abort();
-  }
-  FILE *file = fdopen(file_descriptor, "wb");
-  if (!file) {
-    perror("Failed to open file descriptor.");
-    close(file_descriptor);
-    abort();
-  }
-  const size_t bytes_written = fwrite(data, sizeof(uint8_t), size, file);
-  if (bytes_written != size) {
-    fclose(file);
-    fprintf(stderr, "Failed to write all bytes to file (%zu out of %zu)",
-            bytes_written, size);
-    abort();
-  }
-  fclose(file);
-  return filename_buffer;
-}
-
-static void fuzzer_release_tmpfile(char *filename) {
-  if (unlink(filename) != 0) {
-    perror("WARNING: Failed to delete temporary file.");
-  }
-  free(filename);
-}
-
-// C++ RAII object for creating temporary files.
-
-#ifdef __cplusplus
-class FuzzerTemporaryFile {
-public:
-  FuzzerTemporaryFile(const uint8_t *data, size_t size)
-      : filename_(fuzzer_get_tmpfile(data, size)) {}
-
-  ~FuzzerTemporaryFile() { fuzzer_release_tmpfile(filename_); }
-
-  const char *filename() const { return filename_; }
-
-private:
-  char *filename_;
-};
-#endif
-
-#endif // FUZZER_TEMP_FILE_H_
diff --git a/projects/alembic/project.yaml b/projects/alembic/project.yaml
deleted file mode 100644
index f3e4771..0000000
--- a/projects/alembic/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/alembic/alembic"
-language: c++
-primary_contact: "miller.lucas@gmail.com"
-sanitizers:
-  - address
-main_repo: 'https://github.com/alembic/alembic'
diff --git a/projects/arduinojson/Dockerfile b/projects/arduinojson/Dockerfile
index e2561d4..66fb411 100644
--- a/projects/arduinojson/Dockerfile
+++ b/projects/arduinojson/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER oss-fuzz@benoitblanchon.fr
 RUN apt-get update && apt-get install -y make zip git
 RUN git clone --depth 1 https://github.com/bblanchon/ArduinoJson.git arduinojson
 WORKDIR arduinojson
diff --git a/projects/arduinojson/project.yaml b/projects/arduinojson/project.yaml
index fe71e04..ab6c8b7 100644
--- a/projects/arduinojson/project.yaml
+++ b/projects/arduinojson/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/bblanchon/ArduinoJson"
-language: c++
 primary_contact: "benoit.blanchon@gmail.com"
 sanitizers:
   - address
@@ -8,4 +7,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/bblanchon/ArduinoJson.git'
diff --git a/projects/arrow/Dockerfile b/projects/arrow/Dockerfile
index 5161c28..110056d 100644
--- a/projects/arrow/Dockerfile
+++ b/projects/arrow/Dockerfile
@@ -15,20 +15,15 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dev@arrow.apache.org
 
 ENV DEBIAN_FRONTEND noninteractive
 RUN apt-get update -y -q && \
     apt-get update -y -q && \
     apt-get install -y -q --no-install-recommends \
-        bison \
-        build-essential \
         cmake \
-        flex \
-        libboost-all-dev \
         ninja-build \
         python3
 
-RUN git clone --depth=1 --recurse-submodules \
-    https://github.com/apache/arrow.git $SRC/arrow
-
+RUN git clone --depth=1 https://github.com/apache/arrow.git $SRC/arrow
 COPY build.sh $SRC/
diff --git a/projects/arrow/build.sh b/projects/arrow/build.sh
index 6a61e92..dad1c0d 100755
--- a/projects/arrow/build.sh
+++ b/projects/arrow/build.sh
@@ -21,21 +21,16 @@
 
 cd ${WORK}
 
-# The CMake build setup compiles and runs the Thrift compiler, but ASAN
-# would report leaks and error out.
-export ASAN_OPTIONS="detect_leaks=0"
-
 cmake ${ARROW} -GNinja \
     -DCMAKE_BUILD_TYPE=Release \
     -DARROW_DEPENDENCY_SOURCE=BUNDLED \
-    -DBOOST_SOURCE=SYSTEM \
     -DCMAKE_C_FLAGS="${CFLAGS}" \
     -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
     -DARROW_EXTRA_ERROR_CONTEXT=off \
     -DARROW_JEMALLOC=off \
     -DARROW_MIMALLOC=off \
     -DARROW_FILESYSTEM=off \
-    -DARROW_PARQUET=on \
+    -DARROW_PARQUET=off \
     -DARROW_BUILD_SHARED=off \
     -DARROW_BUILD_STATIC=on \
     -DARROW_BUILD_TESTS=off \
@@ -47,7 +42,7 @@
     -DPARQUET_BUILD_EXAMPLES=off \
     -DPARQUET_BUILD_EXECUTABLES=off \
     -DPARQUET_REQUIRE_ENCRYPTION=off \
-    -DARROW_WITH_BROTLI=on \
+    -DARROW_WITH_BROTLI=off \
     -DARROW_WITH_BZ2=off \
     -DARROW_WITH_LZ4=off \
     -DARROW_WITH_SNAPPY=off \
diff --git a/projects/arrow/project.yaml b/projects/arrow/project.yaml
index 6d4d2e3..27a1456 100644
--- a/projects/arrow/project.yaml
+++ b/projects/arrow/project.yaml
@@ -1,14 +1,10 @@
 homepage: "https://arrow.apache.org/"
-language: c++
 primary_contact: "antoine@python.org"
 auto_ccs:
   - "bengilgit@gmail.com"
   - "emkornfield@gmail.com"
   - "fsaintjacques@gmail.com"
   - "micahk@google.com"
-  - "muraken@gmail.com"
   - "neal@rstudio.com"
   - "szucs.krisztian@gmail.com"
   - "wesmckinn@gmail.com"
-  - "xhochy@gmail.com"
-main_repo: 'https://github.com/apache/arrow.git'
diff --git a/projects/aspell/Dockerfile b/projects/aspell/Dockerfile
index 44c3ea0..a444a36 100644
--- a/projects/aspell/Dockerfile
+++ b/projects/aspell/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cmeister2@gmail.com
 
 RUN git clone --depth 1 https://github.com/gnuaspell/aspell.git $SRC/aspell
 RUN git clone --depth 1 -b master https://github.com/gnuaspell/aspell-fuzz.git $SRC/aspell-fuzz
diff --git a/projects/aspell/project.yaml b/projects/aspell/project.yaml
index f753368..6c8f4d1 100644
--- a/projects/aspell/project.yaml
+++ b/projects/aspell/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/GNUAspell/aspell"
-language: c++
 primary_contact: "kevina@gnu.org"
 auto_ccs:
   - "kevinatkn@gmail.com"
@@ -9,4 +8,3 @@
   - undefined
   - memory:
       experimental: true
-main_repo: 'https://github.com/gnuaspell/aspell.git'
diff --git a/projects/assimp/project_proposed.yaml "b/projects/assimp/\043project.yaml\043"
similarity index 100%
rename from projects/assimp/project_proposed.yaml
rename to "projects/assimp/\043project.yaml\043"
diff --git a/projects/assimp/Dockerfile b/projects/assimp/Dockerfile
deleted file mode 100644
index 88564a7..0000000
--- a/projects/assimp/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake ninja-build
-RUN git clone --depth 1 --recursive https://github.com/assimp/assimp.git
-WORKDIR assimp
-COPY build.sh $SRC/
-
diff --git a/projects/assimp/build.sh b/projects/assimp/build.sh
deleted file mode 100644
index 55efcb7..0000000
--- a/projects/assimp/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# generate build env and build assimp
-cmake CMakeLists.txt -G "Ninja" -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_ZLIB=ON -DASSIMP_BUILD_TESTS=OFF -DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_SAMPLES=OFF
-cmake --build .
-
-# build the fuzzer
-$CXX $CXXFLAGS -std=c++11 -I$SRC/assimp/include \
-	fuzz/assimp_fuzzer.cc -o $OUT/assimp_fuzzer \
-	$LIB_FUZZING_ENGINE $SRC/assimp/lib/libassimp.a $SRC/assimp/lib/libIrrXML.a $SRC/assimp/lib/libzlibstatic.a
diff --git a/projects/assimp/project.yaml b/projects/assimp/project.yaml
deleted file mode 100644
index 834e912..0000000
--- a/projects/assimp/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://github.com/assimp/assimp"
-language: c++
-primary_contact: "kim.kulling@googlemail.com"
-sanitizers:
-  - address
-  - memory:
-     experimental: True
-  - undefined
-main_repo: 'https://github.com/assimp/assimp.git'
diff --git a/projects/astc-encoder/Dockerfile b/projects/astc-encoder/Dockerfile
deleted file mode 100644
index 3872f22..0000000
--- a/projects/astc-encoder/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/ARM-software/astc-encoder
-WORKDIR astc-encoder/Source
-COPY build.sh $SRC/
diff --git a/projects/astc-encoder/build.sh b/projects/astc-encoder/build.sh
deleted file mode 100755
index e34e5b0..0000000
--- a/projects/astc-encoder/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-# !/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project and project-hosted fuzzers
-$SRC/astc-encoder/Source/Fuzzers/build.sh
diff --git a/projects/astc-encoder/project.yaml b/projects/astc-encoder/project.yaml
deleted file mode 100644
index b96091a..0000000
--- a/projects/astc-encoder/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "https://github.com/ARM-software/astc-encoder"
-language: c++
-primary_contact: "peter.harris@arm.com"
-main_repo: 'https://github.com/ARM-software/astc-encoder'
diff --git a/projects/augeas/Dockerfile b/projects/augeas/Dockerfile
index 651be93..738a9c6 100644
--- a/projects/augeas/Dockerfile
+++ b/projects/augeas/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER hhan@redhat.com
 RUN apt-get update && apt-get install -y libreadline-dev libselinux1-dev \
     libxml2-dev make autoconf automake libtool pkg-config bison flex
 
@@ -23,5 +24,3 @@
 
 COPY build.sh $SRC/
 COPY augeas_escape_name_fuzzer.cc $SRC/
-COPY augeas_fa_fuzzer.cc $SRC/
-COPY augeas_api_fuzzer.cc $SRC/
diff --git a/projects/augeas/augeas_api_fuzzer.cc b/projects/augeas/augeas_api_fuzzer.cc
deleted file mode 100644
index 342d7e8..0000000
--- a/projects/augeas/augeas_api_fuzzer.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-*/
-
-
-#include "config.h"
-#include "augeas.h"
-#include "internal.h"
-#include "memory.h"
-#include "syntax.h"
-#include "transform.h"
-#include "errcode.h"
-
-
-#include <fnmatch.h>
-#include <argz.h>
-#include <string.h>
-#include <stdarg.h>
-#include <locale.h>
-
-
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	if(size<3){
-		return 0;
-	}
-	
-	char *loadpath = NULL;
-	const char *value;
-	const char *label;
-	char *new_str = (char *)malloc(size+1);
-	if (new_str == NULL){
-		return 0;
-	}
-	memcpy(new_str, data, size);
-	new_str[size] = '\0';
-	
-	struct augeas *aug = aug_init(new_str, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
-	aug_defvar(aug, new_str, &new_str[1]);
-	aug_get(aug, new_str, &value);
-	aug_label(aug, new_str, &label);
-	
-	aug_rename(aug, new_str, &new_str[1]);
-	aug_text_store(aug, &new_str[1], new_str, &new_str[2]);	
-	aug_print(aug, stdout, new_str);
-	aug_setm(aug, new_str, NULL, &new_str[1]);	
-	
-	free(new_str);
-	aug_close(aug);
-	return 0;
-}
diff --git a/projects/augeas/augeas_fa_fuzzer.cc b/projects/augeas/augeas_fa_fuzzer.cc
deleted file mode 100644
index 434175c..0000000
--- a/projects/augeas/augeas_fa_fuzzer.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-*/
-
-
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-
-// Augea includes
-#include "augeas.h"
-#include "config.h"
-#include "fa.h"
-#include "internal.h"
-
-
-/*
- * FA fuzzer. 
- */
-extern "C"
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size){
-	if(Size<3){
-		return 0;
-	}
-	char *new_str = (char *)malloc(Size+1);
-	if (new_str == NULL){
-		return 0;
-	}
-	memcpy(new_str, Data, Size);
-	new_str[Size] = '\0';
-	int intSize = (int)Size;	
-	char *s;
-
-
-	size_t len;
-	int r = fa_expand_nocase(new_str, intSize, &s, &len);
-	
-	struct fa *fa2 = NULL; 
-	int r2 = fa_compile(new_str, intSize, &fa2);
-
-	struct fa *fa1 = NULL;	
-	fa_compile(&new_str[1], intSize, &fa1);
-	struct fa *fa_min;
-	fa_min = fa_minus(fa1, fa2);
-	
-	if (fa2 != NULL)
-	{
-		char* word = NULL;
-		size_t word_len = 0;
-		fa_example(fa2, &word, &word_len);
-		
-		if(word != NULL) 
-			free(word);
-
-		fa_json(stdout, fa2);
-		fa_minimize(fa2);
-		fa_dot(stdout, fa2);
-	}
-
-	struct fa *fa_b = fa_make_basic(intSize);
-	
-	// cleanup
-	if (s != NULL) 		free(s);
-	if (new_str != NULL) 	free(new_str);
-	if (fa_b != NULL)	fa_free(fa_b);
-	if (fa_min != NULL) 	fa_free(fa_min);
-	if (fa1 != NULL)	fa_free(fa1);
-	if (fa2 != NULL)	fa_free(fa2);
-	return 0;
-}
diff --git a/projects/augeas/build.sh b/projects/augeas/build.sh
index 46afebe..6e16c1a 100644
--- a/projects/augeas/build.sh
+++ b/projects/augeas/build.sh
@@ -16,24 +16,13 @@
 #
 ################################################################################
 
-
 ./autogen.sh
 ./configure --enable-static --disable-shared --without-selinux
 make -j$(nproc)
 
-sed -i '31 i\#ifdef __cplusplus'\\n'\extern "C" {'\\n'\#endif'\\n src/fa.h
-sed -i '326 i\#ifdef __cplusplus'\\n'\}'\\n'\#endif'\\n src/fa.h
-
-ASAN_OPTIONS=detect_leaks=0
-
-cp $SRC/augeas_escape_name_fuzzer.cc .
-cp $SRC/augeas_fa_fuzzer.cc .
-cp $SRC/augeas_api_fuzzer.cc .
-
-
-for fuzzer in augeas_api_fuzzer augeas_escape_name_fuzzer augeas_fa_fuzzer; do
+for fuzzer in augeas_escape_name_fuzzer; do
     $CXX $CXXFLAGS -std=c++11 -Isrc/ `xml2-config --cflags` \
-        $fuzzer.cc -o $OUT/$fuzzer $LIB_FUZZING_ENGINE \
+        $SRC/$fuzzer.cc -o $OUT/$fuzzer $LIB_FUZZING_ENGINE \
         src/.libs/libaugeas.a src/.libs/libfa.a ./gnulib/lib/.libs/libgnu.a \
         /usr/lib/x86_64-linux-gnu/libxml2.a
 done
diff --git a/projects/augeas/project.yaml b/projects/augeas/project.yaml
index be5317d..6b0ad9f 100644
--- a/projects/augeas/project.yaml
+++ b/projects/augeas/project.yaml
@@ -1,10 +1,7 @@
 homepage: https://github.com/hercules-team/augeas
-language: c++
 primary_contact: lutter@watzmann.net
 auto_ccs:
   - hhan@redhat.com
-  - adam@adalogics.com
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/hercules-team/augeas'
diff --git a/projects/avahi/Dockerfile b/projects/avahi/Dockerfile
index d9e9c64..91f0b5f 100644
--- a/projects/avahi/Dockerfile
+++ b/projects/avahi/Dockerfile
@@ -15,7 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
+MAINTAINER alex.gaynor@gmail.com
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
     apt-get install -y autoconf gettext libtool m4 automake pkg-config libexpat-dev libexpat-dev:i386
 RUN git clone --depth 1 https://github.com/lathiat/avahi
 WORKDIR avahi
diff --git a/projects/avahi/project.yaml b/projects/avahi/project.yaml
index b639001..bd85af7 100644
--- a/projects/avahi/project.yaml
+++ b/projects/avahi/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://avahi.org/"
-language: c++
 primary_contact: trent@lloyd.id.au
 auto_ccs:
   - alex.gaynor@gmail.com
@@ -10,4 +9,4 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/lathiat/avahi'
+
diff --git a/projects/bad_example/Dockerfile b/projects/bad_example/Dockerfile
index d0a6810..eb69f25 100644
--- a/projects/bad_example/Dockerfile
+++ b/projects/bad_example/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 
 # Using a real zlib project, but with broken build script and/or fuzz target.
diff --git a/projects/bad_example/build.sh b/projects/bad_example/build.sh
index 88a7caa..eb08bd6 100755
--- a/projects/bad_example/build.sh
+++ b/projects/bad_example/build.sh
@@ -22,7 +22,7 @@
     $LIB_FUZZING_ENGINE ./libz.a
 
 
-# The latest two examples won't work for coverage build, bail out.
+# The latest two examples won't for for coverage build, bail out.
 if [[ $SANITIZER = *coverage* ]]; then
   exit 0
 fi
diff --git a/projects/bad_example/project.yaml b/projects/bad_example/project.yaml
index 59b5eed..0b303ab 100644
--- a/projects/bad_example/project.yaml
+++ b/projects/bad_example/project.yaml
@@ -1,7 +1,6 @@
+disabled: True
 homepage: "http://www.zlib.net/"
-language: c++
 sanitizers:
   - address
   - memory
   - undefined
-disabled: True
diff --git a/projects/bazel-rules-fuzzing-test/Dockerfile b/projects/bazel-rules-fuzzing-test/Dockerfile
deleted file mode 100644
index c007f5a..0000000
--- a/projects/bazel-rules-fuzzing-test/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone https://github.com/bazelbuild/rules_fuzzing.git
-WORKDIR $SRC/rules_fuzzing/
-COPY build.sh $SRC/
diff --git a/projects/bazel-rules-fuzzing-test/build.sh b/projects/bazel-rules-fuzzing-test/build.sh
deleted file mode 100644
index 056e16b..0000000
--- a/projects/bazel-rules-fuzzing-test/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# This is an example build script for projects using the rules_fuzzing library
-# for Bazel.
-
-bazel_build_fuzz_tests
diff --git a/projects/bazel-rules-fuzzing-test/project.yaml b/projects/bazel-rules-fuzzing-test/project.yaml
deleted file mode 100644
index ecb68c6..0000000
--- a/projects/bazel-rules-fuzzing-test/project.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-homepage: "https://github.com/bazelbuild/rules_fuzzing"
-language: c++
-primary_contact: "test@example.com"
-
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-
-# This is a test project.
-disabled: true
diff --git a/projects/bearssl/Dockerfile b/projects/bearssl/Dockerfile
deleted file mode 100644
index 2a5d3e7..0000000
--- a/projects/bearssl/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool wget python
-RUN git clone --depth 1 https://www.bearssl.org/git/BearSSL
-RUN git clone --depth 1 https://github.com/randombit/botan.git
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz-corpora
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
-COPY build.sh $SRC/
diff --git a/projects/bearssl/build.sh b/projects/bearssl/build.sh
deleted file mode 100755
index db97318..0000000
--- a/projects/bearssl/build.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Not using OpenSSL
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL"
-
-# Install Boost headers
-    cd $SRC/
-    tar jxf boost_1_74_0.tar.bz2
-    cd boost_1_74_0/
-    CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-    CFLAGS="" CXXFLAGS="" ./b2 headers
-    cp -R boost/ /usr/include/
-
-# Generate lookup tables. This only needs to be done once.
-    cd $SRC/cryptofuzz
-    python gen_repository.py
-
-# Only test primitives which BearSSL supports
-    rm extra_options.h
-    echo -n '"' >>extra_options.h
-    echo -n '--force-module=BearSSL ' >>extra_options.h
-    echo -n '--digests=MD5,SHA1,SHA224,SHA256,SHA384,SHA512,MD5_SHA1,SHAKE128,SHAKE256 ' >>extra_options.h
-    echo -n '--ciphers=AES_128_GCM,AES_192_GCM,AES_256_GCM,AES_128_CCM,AES_192_CCM,AES_256_CCM,CHACHA20,CHACHA20_POLY1305 ' >>extra_options.h
-    echo -n '--operations=Digest,HMAC,SymmetricEncrypt,SymmetricDecrypt,KDF_HKDF,KDF_TLS1_PRF,ECC_GenerateKeyPair,ECC_PrivateToPublic,ECDSA_Verify,ECDSA_Sign' >>extra_options.h
-    echo -n '"' >>extra_options.h
-
-# Compile BearSSL
-    cd $SRC/BearSSL/
-    sed -i '/^CC = /d' conf/Unix.mk
-    sed -i '/^CFLAGS = /d' conf/Unix.mk
-    make -j$(nproc) lib
-
-    export BEARSSL_INCLUDE_PATH=$(realpath inc/)
-    export LIBBEARSSL_A_PATH=$(realpath ./build/libbearssl.a)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BEARSSL"
-
-    # Compile Cryptofuzz BearSSL module
-    cd $SRC/cryptofuzz/modules/bearssl
-    make -B
-
-# Compile Botan
-    cd $SRC/botan
-    if [[ $CFLAGS != *-m32* ]]
-    then
-        ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-    else
-        ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-    fi
-    make -j$(nproc)
-
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BOTAN"
-    export LIBBOTAN_A_PATH="$SRC/botan/libbotan-3.a"
-    export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"
-
-    # Compile Cryptofuzz Botan module
-    cd $SRC/cryptofuzz/modules/botan
-    make -B
-
-# Compile Cryptofuzz
-    cd $SRC/cryptofuzz
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc) >/dev/null
-
-    # Generate dictionary
-    ./generate_dict
-
-    # Copy fuzzer
-    cp $SRC/cryptofuzz/cryptofuzz $OUT/cryptofuzz-bearssl
-    # Copy dictionary
-    cp $SRC/cryptofuzz/cryptofuzz-dict.txt $OUT/cryptofuzz-bearssl.dict
diff --git a/projects/bearssl/project.yaml b/projects/bearssl/project.yaml
deleted file mode 100644
index d9b20ae..0000000
--- a/projects/bearssl/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://bearssl.org/"
-language: c++
-primary_contact: "guidovranken@gmail.com"
-auto_ccs:
-    - "pornin@gmail.com"
-sanitizers:
- - address
- - undefined
- - memory
-architectures:
- - x86_64
- - i386
diff --git a/projects/bignum-fuzzer/Dockerfile b/projects/bignum-fuzzer/Dockerfile
index 6b74836..4dbd6c3 100644
--- a/projects/bignum-fuzzer/Dockerfile
+++ b/projects/bignum-fuzzer/Dockerfile
@@ -15,12 +15,16 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y software-properties-common python-software-properties wget curl sudo mercurial autoconf bison texinfo libboost-all-dev cmake
+RUN add-apt-repository -y ppa:gophers/archive && apt-get update && apt-get install -y golang-1.9-go
+RUN ln -s /usr/lib/go-1.9/bin/go /usr/bin/go
 
-RUN wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.0.tar.gz
+RUN wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.4.2.tar.gz
+RUN git clone --recursive https://github.com/golang/go
 RUN git clone --depth 1 https://github.com/guidovranken/bignum-fuzzer
 RUN git clone --depth 1 https://github.com/openssl/openssl
 RUN hg clone https://gmplib.org/repo/gmp/ libgmp/
 RUN git clone https://boringssl.googlesource.com/boringssl
-RUN git clone --depth 1 https://github.com/ARMmbed/mbedtls
+RUN git clone --recursive --depth 1 https://github.com/ARMmbed/mbedtls
 COPY build.sh $SRC/
diff --git a/projects/bignum-fuzzer/build.sh b/projects/bignum-fuzzer/build.sh
index 8c29baf..2539917 100755
--- a/projects/bignum-fuzzer/build.sh
+++ b/projects/bignum-fuzzer/build.sh
@@ -1,27 +1,21 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
+# Compile latest Go
+cd go/src
+./make.bash
+cd $SRC
+
+# Remove previous Go install (used for bootstrapping)
+apt-get remove golang-1.9-go -y
+rm /usr/bin/go
+
+export PATH=`realpath $SRC/go/bin`:$PATH
 
 # Install Rust nightly
 #curl https://sh.rustup.rs -sSf | sh -s -- -y
 #source $HOME/.cargo/env
 
 # Build libmpdec
-tar zxf mpdecimal-2.5.0.tar.gz
-cd mpdecimal-2.5.0
+tar zxf mpdecimal-2.4.2.tar.gz
+cd mpdecimal-2.4.2
 ./configure && make -j$(nproc)
 
 cd $SRC/openssl
@@ -60,7 +54,7 @@
 
 # Build libmpdec module
 cd $SRC/bignum-fuzzer/modules/libmpdec
-LIBMPDEC_A_PATH=$SRC/mpdecimal-2.5.0/libmpdec/libmpdec.a LIBMPDEC_INCLUDE_PATH=$SRC/mpdecimal-2.5.0/libmpdec make
+LIBMPDEC_A_PATH=$SRC/mpdecimal-2.4.2/libmpdec/libmpdec.a LIBMPDEC_INCLUDE_PATH=$SRC/mpdecimal-2.4.2/libmpdec make
 
 BASE_CXXFLAGS=$CXXFLAGS
 
@@ -104,7 +98,7 @@
 cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_libgmp_num_len_1200_all_operations_num_loops_1
 
 # Build mbedtls
-cd $SRC/mbedtls
+cd $SRC/mbedtls/crypto
 make lib -j$(nproc)
 
 # Build BoringSSL
@@ -121,7 +115,7 @@
 
 # Build mbedtls module
 cd $SRC/bignum-fuzzer/modules/mbedtls
-MBEDTLS_LIBMBEDCRYPTO_A_PATH=$SRC/mbedtls/library/libmbedcrypto.a MBEDTLS_INCLUDE_PATH=$SRC/mbedtls/include make
+MBEDTLS_LIBMBEDCRYPTO_A_PATH=$SRC/mbedtls/crypto/library/libmbedcrypto.a MBEDTLS_INCLUDE_PATH=$SRC/mbedtls/crypto/include make
 
 # Build BoringSSL/mbedtls fuzzer
 cd $SRC/bignum-fuzzer
diff --git a/projects/bignum-fuzzer/project.yaml b/projects/bignum-fuzzer/project.yaml
index 6de7c9d..92e47f7 100644
--- a/projects/bignum-fuzzer/project.yaml
+++ b/projects/bignum-fuzzer/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/guidovranken/bignum-fuzzer"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
     - "martin.swende@ethereum.org"
@@ -12,7 +11,6 @@
     - "agl@google.com"
     - "davidben@google.com"
     - "svaldez@google.com"
-    - "mbed-tls-security@lists.trustedfirmware.org"
+    - "support-mbedtls@arm.com"
     - "libmpdec@gmail.com"
     - "richard@levitte.org"
-main_repo: 'https://github.com/guidovranken/bignum-fuzzer'
diff --git a/projects/bind9/Dockerfile b/projects/bind9/Dockerfile
deleted file mode 100644
index 25ba538..0000000
--- a/projects/bind9/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-ENV DEBIAN_FRONTEND noninteractive
-RUN apt-get -y update && apt-get -y dist-upgrade
-RUN apt-get -y install		\
-	autoconf		\
-	automake		\
-	autotools-dev		\
-	bison			\
-	build-essential		\
-	libnghttp2-dev		\
-	libssl-dev		\
-	libtool			\
-	libtool-bin		\
-	libuv1-dev		\
-	pkg-config		\
-	zip
-RUN git clone --depth 1 https://gitlab.isc.org/isc-projects/bind9.git
-WORKDIR bind9
-COPY build.sh $SRC/
diff --git a/projects/bind9/build.sh b/projects/bind9/build.sh
deleted file mode 100644
index 933f6b4..0000000
--- a/projects/bind9/build.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build the project
-autoreconf -fi
-./configure --disable-shared --enable-static --enable-developer --without-cmocka --without-zlib --disable-linux-caps --prefix="$WORK" --enable-fuzzing=ossfuzz
-(cd lib/isc && make -j"$(nproc)" all V=1)
-(cd lib/dns && make -j"$(nproc)" all V=1)
-
-LIBISC_CFLAGS="-Ilib/isc/unix/include -Ilib/isc/pthreads/include -Ilib/isc/include"
-LIBDNS_CFLAGS="-Ilib/dns/include"
-LIBISC_LIBS="lib/isc/.libs/libisc.a -Wl,-Bstatic -lssl -lcrypto -luv -lnghttp2 -Wl,-Bdynamic"
-LIBDNS_LIBS="lib/dns/.libs/libdns.a -Wl,-Bstatic -lcrypto -Wl,-Bdynamic"
-
-for fuzzer in fuzz/*.c; do
-    output=$(basename "${fuzzer%.c}")
-    [ "$output" = "main" ] && continue
-    # We need to try little bit harder to link everything statically
-    (cd fuzz && make -j"$(nproc)" "${output}.o" V=1)
-    ${CXX} ${CXXFLAGS} \
-	   -o "${OUT}/${output}_fuzzer" \
-	   "fuzz/${output}.o" \
-	   -include config.h \
-	   $LIBISC_CFLAGS $LIBDNS_CFLAGS \
-	   $LIBDNS_LIBS $LIBISC_LIBS $LIB_FUZZING_ENGINE
-    zip -j "${OUT}/${output}_seed_corpus.zip" "fuzz/${output}.in/"*
-done
diff --git a/projects/bind9/project.yaml b/projects/bind9/project.yaml
deleted file mode 100644
index 82ff413..0000000
--- a/projects/bind9/project.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-homepage: "https://gitlab.isc.org/isc-projects/bind9"
-language: c
-primary_contact: "bind9-dev@isc.org"
-auto_ccs:
-  - "artem@isc.org"
-  - "dfronza@isc.org"
-  - "each@isc.org"
-  - "marka@isc.org"
-  - "matthijs@isc.org"
-  - "michal@isc.org"
-  - "mnowak@isc.org"
-  - "ondrej@isc.org"
-  - "pspacek@isc.org"
-sanitizers:
-  - address
-  - memory:
-     experimental: True
-  - undefined
-main_repo: 'https://gitlab.isc.org/isc-projects/bind9.git'
diff --git a/projects/binutils/Dockerfile b/projects/binutils/Dockerfile
index 694e0bf..9d0b590 100644
--- a/projects/binutils/Dockerfile
+++ b/projects/binutils/Dockerfile
@@ -16,11 +16,9 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 #TODO change
+MAINTAINER bug-binutils@gnu.org
 RUN apt-get update && apt-get install -y make
-RUN apt-get install -y flex bison
 RUN git clone --recursive --depth 1 git://sourceware.org/git/binutils-gdb.git binutils-gdb
 WORKDIR $SRC
 COPY build.sh $SRC/
 COPY fuzz_*.c $SRC/
-COPY fuzz_readelf_seed_corpus $SRC/fuzz_readelf_seed_corpus
-COPY fuzz_readelf.options $SRC/fuzz_readelf.options
diff --git a/projects/binutils/build.sh b/projects/binutils/build.sh
index c5d9038..0c6fcc4 100755
--- a/projects/binutils/build.sh
+++ b/projects/binutils/build.sh
@@ -21,50 +21,15 @@
     export CXXFLAGS="$CXXFLAGS -fno-sanitize=unsigned-integer-overflow"
 fi
 cd binutils-gdb
-
-# Comment out the lines of logging to stderror from elfcomm.c
-# This is to make it nicer to read the output of libfuzzer.
-cd binutils
-sed -i 's/vfprintf (stderr/\/\//' elfcomm.c
-sed -i 's/fprintf (stderr/\/\//' elfcomm.c
-cd ../
-
 ./configure --disable-gdb --enable-targets=all
 make MAKEINFO=true && true
-
-# Make fuzzer directory
 mkdir fuzz
 cp ../fuzz_*.c fuzz/
-cd fuzz
 
-for i in fuzz_disassemble fuzz_bfd; do
+cd fuzz
+ls fuzz_*.c | cut -d. -f1 | while read i; do
     $CC $CFLAGS -I ../include -I ../bfd -I ../opcodes -c $i.c -o $i.o
     $CXX $CXXFLAGS $i.o -o $OUT/$i $LIB_FUZZING_ENGINE ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a ../zlib/libz.a
 done
+
 # TODO build corpuses
-
-# Now compile the src/binutils fuzzers
-cd ../binutils
-
-# First copy the fuzzers, modify applications and copile object files
-for i in readelf; do
-    cp ../../fuzz_$i.c .
-
-    # Modify main functions so we dont have them anymore
-    sed 's/main (int argc/old_main (int argc, char **argv);\nint old_main (int argc/' $i.c >> $i.h
-
-    # Compile object file
-    $CC $CFLAGS -DHAVE_CONFIG_H -I. -I../bfd -I./../bfd -I./../include -I./../zlib -DLOCALEDIR="\"/usr/local/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation -W -Wall -MT fuzz_$i.o -MD -MP -c -o fuzz_$i.o fuzz_$i.c
-done
-
-# Link the files
-## Readelf
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE -W -Wall -I./../zlib -o fuzz_readelf fuzz_readelf.o version.o unwind-ia64.o dwarf.o elfcomm.o ../libctf/.libs/libctf-nobfd.a -L/src/binutils-gdb/zlib -lz ../libiberty/libiberty.a 
-mv fuzz_readelf $OUT/fuzz_readelf
-
-### Set up seed corpus for readelf in the form of a single ELF file. 
-zip fuzz_readelf_seed_corpus.zip /src/fuzz_readelf_seed_corpus/simple_elf
-mv fuzz_readelf_seed_corpus.zip $OUT/ 
-
-## Copy over the options file
-cp $SRC/fuzz_readelf.options $OUT/fuzz_readelf.options
diff --git a/projects/binutils/fuzz_bfd.c b/projects/binutils/fuzz_bfd.c
index e42799c..0afe728 100644
--- a/projects/binutils/fuzz_bfd.c
+++ b/projects/binutils/fuzz_bfd.c
@@ -1,37 +1,28 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include "sysdep.h"
 #include "bfd.h"
 
 #include <stdint.h>
 #include <stdio.h>
-#include <unistd.h>
 
-static int bufferToFile(char * name, const uint8_t *Data, size_t Size) {
-    int fd = mkstemp(name);
-    if (fd < 0) {
-        printf("failed mkstemp, errno=%d\n", errno);
+
+static int bufferToFile(const char * name, const uint8_t *Data, size_t Size) {
+    FILE * fd;
+    if (remove(name) != 0) {
+        if (errno != ENOENT) {
+            printf("failed remove, errno=%d\n", errno);
+            return -1;
+        }
+    }
+    fd = fopen(name, "wb");
+    if (fd == NULL) {
+        printf("failed open, errno=%d\n", errno);
         return -2;
     }
-    if (write (fd, Data, Size) != Size) {
-        printf("failed write, errno=%d\n", errno);
-        close(fd);
+    if (fwrite (Data, 1, Size, fd) != Size) {
+        fclose(fd);
         return -3;
     }
-    close(fd);
+    fclose(fd);
     return 0;
 }
 
@@ -40,7 +31,6 @@
 char *target = NULL;
 
 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
-    char tmpfilename[32];
     if (initialized == 0) {
         if (bfd_init () != BFD_INIT_MAGIC) {
             abort();
@@ -48,20 +38,17 @@
         initialized = 1;
     }
 
-    strncpy(tmpfilename, "/tmp/fuzz.bfd-XXXXXX", 31);
-    if (bufferToFile(tmpfilename, Data, Size) < 0) {
-        return 0;
+    if (bufferToFile("/tmp/fuzz.bfd", Data, Size) < 0) {
+        abort();
     }
-    bfd *file = bfd_openr (tmpfilename, target);
+    bfd *file = bfd_openr ("/tmp/fuzz.bfd", target);
     if (file == NULL)
     {
-        remove(tmpfilename);
         return 0;
     }
     bfd_check_format (file, bfd_archive);
     //TODO loop over subfiles and more processing
     bfd_close (file);
-    remove(tmpfilename);
 
     return 0;
 }
diff --git a/projects/binutils/fuzz_disassemble.c b/projects/binutils/fuzz_disassemble.c
index af603ca..09e08bb 100644
--- a/projects/binutils/fuzz_disassemble.c
+++ b/projects/binutils/fuzz_disassemble.c
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include "sysdep.h"
 #include "bfd.h"
 #include "dis-asm.h"
@@ -28,43 +13,45 @@
     size_t pos;
 } SFILE;
 
-static int objdump_sprintf (void *vf, const char *format, ...)
+static int objdump_sprintf (SFILE *f, const char *format, ...)
 {
-    SFILE *f = (SFILE *) vf;
     size_t n;
     va_list args;
 
     va_start (args, format);
     if (f->pos >= MAX_TEXT_SIZE){
         printf("buffer needs more space\n");
-        //reset
-        f->pos=0;
         return 0;
     }
     n = vsnprintf (f->buffer + f->pos, MAX_TEXT_SIZE - f->pos, format, args);
     //vfprintf(stdout, format, args);
     va_end (args);
     f->pos += n;
+
     return n;
 }
 
+static void objdump_print_address (bfd_vma vma, struct disassemble_info *inf)
+{
+    (*inf->fprintf_func) (inf->stream, "0x%x", vma);
+}
 
 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
     char AssemblyText[MAX_TEXT_SIZE];
     struct disassemble_info disasm_info;
     SFILE s;
+    bfd abfd;
 
-    if (Size < 10 || Size > 16394) {
+    if (Size < 10) {
         // 10 bytes for options
-        // 16394 limit code to prevent timeouts
         return 0;
     }
 
     init_disassemble_info (&disasm_info, stdout, (fprintf_ftype) fprintf);
     disasm_info.fprintf_func = objdump_sprintf;
-    disasm_info.print_address_func = generic_print_address;
+    disasm_info.print_address_func = objdump_print_address;
     disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_LITTLE;
-    disasm_info.buffer = (bfd_byte *) Data;
+    disasm_info.buffer = Data;
     disasm_info.buffer_vma = 0x1000;
     disasm_info.buffer_length = Size-10;
     disasm_info.insn_info_valid = 0;
@@ -74,24 +61,14 @@
     disasm_info.bytes_per_line = 0;
 
     disasm_info.arch = Data[Size-1];
-    disasm_info.mach = bfd_getl64(&Data[Size-9]);
+    disasm_info.mach = *((unsigned long *) (Data + Size - 9));
     disasm_info.flavour = Data[Size-10];
 
     if (bfd_lookup_arch (disasm_info.arch, disasm_info.mach) != NULL) {
         disassembler_ftype disasfunc = disassembler(disasm_info.arch, 0, disasm_info.mach, NULL);
         if (disasfunc != NULL) {
             disassemble_init_for_target(&disasm_info);
-            while (1) {
-                s.pos = 0;
-                int octets = disasfunc(disasm_info.buffer_vma, &disasm_info);
-                if (octets < (int) disasm_info.octets_per_byte)
-                    break;
-                if (disasm_info.buffer_length <= (size_t) octets)
-                    break;
-                disasm_info.buffer += octets;
-                disasm_info.buffer_vma += octets / disasm_info.octets_per_byte;
-                disasm_info.buffer_length -= octets;
-            }
+            disasfunc(0x1000, &disasm_info);
             disassemble_free_target(&disasm_info);
         }
     }
diff --git a/projects/binutils/fuzz_readelf.c b/projects/binutils/fuzz_readelf.c
deleted file mode 100644
index a222e0c..0000000
--- a/projects/binutils/fuzz_readelf.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#include "readelf.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-	char filename[256];
-	sprintf(filename, "/tmp/libfuzzer.%d", getpid());
-
-	FILE *fp = fopen(filename, "wb");
-	if (!fp)
-		return 0;
-
-	fwrite(data, size, 1, fp);
-	fclose(fp);
-	do_syms = TRUE;
-	do_reloc = TRUE;
-	do_unwind = TRUE;
-	do_dynamic = TRUE;
-	do_header = TRUE;
-	do_sections = TRUE;
-	do_section_groups = TRUE;
-	do_segments = TRUE;
-	do_version = TRUE;
-	do_histogram = TRUE;
-	do_arch = TRUE;
-	do_notes = TRUE;
-
-    // Main fuzz entrypoint
-	process_file(filename);
-
-	unlink(filename);
-
-	free (dump_ctf_symtab_name);
-	dump_ctf_symtab_name = NULL;
-	free (dump_ctf_strtab_name);
-	dump_ctf_strtab_name = NULL;
-	free (dump_ctf_parent_name);
-	dump_ctf_parent_name = NULL;
-
-	return 0;
-}
diff --git a/projects/binutils/fuzz_readelf.options b/projects/binutils/fuzz_readelf.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/binutils/fuzz_readelf.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/binutils/fuzz_readelf_seed_corpus/simple_elf b/projects/binutils/fuzz_readelf_seed_corpus/simple_elf
deleted file mode 100755
index deea869..0000000
--- a/projects/binutils/fuzz_readelf_seed_corpus/simple_elf
+++ /dev/null
Binary files differ
diff --git a/projects/binutils/project.yaml b/projects/binutils/project.yaml
index df0ca37..44a487f 100644
--- a/projects/binutils/project.yaml
+++ b/projects/binutils/project.yaml
@@ -1,18 +1,6 @@
 homepage: "https://www.gnu.org/software/binutils/"
-language: c++
 primary_contact: "bug-binutils@gnu.org"
 auto_ccs :
   - "p.antoine@catenacyber.fr"
   - "nickc@redhat.com"
   - "amodra@gmail.com"
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
diff --git a/projects/bleach/Dockerfile b/projects/bleach/Dockerfile
deleted file mode 100644
index 1d31647..0000000
--- a/projects/bleach/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone \
-	--depth 1 \
-	--branch master \
-	https://github.com/mozilla/bleach.git
-
-WORKDIR bleach
-
-RUN git clone --depth 1 https://github.com/google/fuzzing
-RUN cat fuzzing/dictionaries/html.dict > $OUT/linkify_fuzzer.dict
-RUN cat fuzzing/dictionaries/html.dict > $OUT/sanitize_fuzzer.dict
-
-COPY build.sh sanitize_fuzzer.py linkify_fuzzer.py $SRC/
diff --git a/projects/bleach/build.sh b/projects/bleach/build.sh
deleted file mode 100644
index b3b6179..0000000
--- a/projects/bleach/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build and install project (using current CFLAGS, CXXFLAGS).
-pip3 install .
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/bleach/linkify_fuzzer.py b/projects/bleach/linkify_fuzzer.py
deleted file mode 100644
index 6a42b07..0000000
--- a/projects/bleach/linkify_fuzzer.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-import atheris
-import bleach
-
-
-def TestOneInput(input_bytes):
-  fdp = atheris.FuzzedDataProvider(input_bytes)
-  data = fdp.ConsumeUnicode(atheris.ALL_REMAINING)
-
-  bleach.linkify(data)
-
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/bleach/project.yaml b/projects/bleach/project.yaml
deleted file mode 100644
index cc1ef0e..0000000
--- a/projects/bleach/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/mozilla/bleach"
-main_repo: "https://github.com/mozilla/bleach"
-language: python
-primary_contact: "gguthe@mozilla.com"
-auto_ccs:
-  - "jvoisin@google.com"
-  - "ipudney@google.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/bleach/sanitize_fuzzer.py b/projects/bleach/sanitize_fuzzer.py
deleted file mode 100644
index 3337816..0000000
--- a/projects/bleach/sanitize_fuzzer.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-import atheris
-import bleach
-
-
-def TestOneInput(input_bytes):
-  fdp = atheris.FuzzedDataProvider(input_bytes)
-  data = fdp.ConsumeUnicode(atheris.ALL_REMAINING)
-
-  bleach.clean(data)
-
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/bloaty/Dockerfile b/projects/bloaty/Dockerfile
index 7a08527..c41cdb9 100644
--- a/projects/bloaty/Dockerfile
+++ b/projects/bloaty/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jhaberman@gmail.com
 RUN apt-get update && apt-get install -y cmake ninja-build g++
 RUN git clone --depth 1 https://github.com/google/bloaty.git bloaty
 WORKDIR bloaty
diff --git a/projects/bloaty/project.yaml b/projects/bloaty/project.yaml
index db9ecf9..6e74b89 100644
--- a/projects/bloaty/project.yaml
+++ b/projects/bloaty/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://github.com/google/bloaty"
-language: c++
 primary_contact: "jhaberman@gmail.com"
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/google/bloaty.git'
diff --git a/projects/boost/project.yaml b/projects/boost/project.yaml
index 44949c8..e46f5a4 100644
--- a/projects/boost/project.yaml
+++ b/projects/boost/project.yaml
@@ -1,7 +1,9 @@
 homepage: "http://www.boost.org/"
-language: c++
-primary_contact: "mclow@boost.org"
+
+# TODO: add more boost maintainers here and possibly a mailing list.
+# primary_contact: "someone@boost.org"
 auto_ccs:  
    - "jz.maddock@googlemail.com"
+   - "mclow@boost.org"
    - "bshas3@gmail.com"
-main_repo: 'https://github.com/boostorg/boost.git'
+#   - "someone-else@boost.org"
diff --git a/projects/boringssl/Dockerfile b/projects/boringssl/Dockerfile
index 33cc1c2..4760fbf 100644
--- a/projects/boringssl/Dockerfile
+++ b/projects/boringssl/Dockerfile
@@ -15,12 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget \
-    golang binutils cmake ninja-build liblzma-dev libz-dev \
-    pkg-config autoconf libtool
+MAINTAINER mike.aizatsky@gmail.com
+RUN apt-get update && apt-get install -y cmake ninja-build golang
+
 RUN git clone --depth 1 https://boringssl.googlesource.com/boringssl
-# Use ASN.1 pdu protobuf and converter from the google/fuzzing repo.
-RUN git clone --depth 1 https://github.com/google/fuzzing.git
-RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
-RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
-COPY *.cc build.sh $SRC/
\ No newline at end of file
+COPY build.sh $SRC/
diff --git a/projects/boringssl/build.sh b/projects/boringssl/build.sh
index 7e6302f..26d9330 100755
--- a/projects/boringssl/build.sh
+++ b/projects/boringssl/build.sh
@@ -32,6 +32,7 @@
       $CMAKE_DEFINES $SRC/boringssl/
 ninja
 
+
 fuzzerFiles=$(find $SRC/boringssl/fuzz/ -name "*.cc")
 
 find . -name "*.a"
@@ -47,26 +48,3 @@
     zip -j $OUT/${fuzzerName}_seed_corpus.zip $SRC/boringssl/fuzz/${fuzzerName}_corpus/*
   fi
 done
-
-if [[ $CFLAGS != *sanitize=memory* ]]; then
-  fuzzerLPMFiles=$(find $SRC/ -maxdepth 1 -name "*.cc")
-
-  cp $SRC/fuzzing/proto/asn1-pdu/* $SRC/
-
-  rm -rf genfiles && mkdir genfiles && $SRC/LPM/external.protobuf/bin/protoc asn1_pdu.proto --cpp_out=genfiles --proto_path=$SRC/
-
-  for F in $fuzzerLPMFiles
-  do
-    fuzzerName=$(echo ${F#*_})
-    fuzzerName=$(basename $fuzzerName .cc)
-    echo "Building fuzzer $fuzzerName"
-    $CXX $CXXFLAGS -I genfiles -I . -I $SRC/libprotobuf-mutator/ -I $SRC/LPM/external.protobuf/include -I include $LIB_FUZZING_ENGINE \
-        -I $SRC/boringssl/include \
-        $F genfiles/asn1_pdu.pb.cc $SRC/asn1_pdu_to_der.cc $SRC/common.cc \
-        ./ssl/libssl.a ./crypto/libcrypto.a \
-        $SRC/LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
-        $SRC/LPM/src/libprotobuf-mutator.a \
-        $SRC/LPM/external.protobuf/lib/libprotobuf.a \
-        -o $OUT/"${fuzzerName}_lpm"
-  done
-fi
diff --git a/projects/boringssl/fuzz_certs.cc b/projects/boringssl/fuzz_certs.cc
deleted file mode 100644
index d8d2a24..0000000
--- a/projects/boringssl/fuzz_certs.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// This fuzz target fuzzes the same API as
-// https://github.com/google/boringssl/blob/master/fuzz/cert.cc, but it employs
-// libprotobuf-mutator for structure-aware fuzzing.
-
-#include <openssl/err.h>
-#include <openssl/mem.h>
-#include <openssl/x509.h>
-#include "asn1_pdu.pb.h"
-#include "asn1_pdu_to_der.h"
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-
-DEFINE_PROTO_FUZZER(const asn1_pdu::PDU& asn1) {
-  asn1_pdu::ASN1PDUToDER converter;
-  std::vector<uint8_t> encoded = converter.PDUToDER(asn1);
-  const uint8_t* buf = encoded.data();
-  size_t len = encoded.size();
-
-  X509* x509 = d2i_X509(NULL, &buf, len);
-  if (x509 != NULL) {
-    // Extract the public key.
-    EVP_PKEY_free(X509_get_pubkey(x509));
-
-    // Reserialize the structure.
-    uint8_t* der = NULL;
-    i2d_X509(x509, &der);
-    OPENSSL_free(der);
-  }
-  X509_free(x509);
-  ERR_clear_error();
-}
\ No newline at end of file
diff --git a/projects/boringssl/fuzz_pkcs12.cc b/projects/boringssl/fuzz_pkcs12.cc
deleted file mode 100644
index 11cded4..0000000
--- a/projects/boringssl/fuzz_pkcs12.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// This fuzz target fuzzes the same API as
-// https://github.com/google/boringssl/blob/master/fuzz/pkcs12.cc, but it
-// employs libprotobuf-mutator for structure-aware fuzzing.
-
-#include <openssl/bytestring.h>
-#include <openssl/evp.h>
-#include <openssl/pkcs8.h>
-#include <openssl/x509.h>
-#include "asn1_pdu.pb.h"
-#include "asn1_pdu_to_der.h"
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-
-DEFINE_PROTO_FUZZER(const asn1_pdu::PDU& asn1) {
-  asn1_pdu::ASN1PDUToDER converter;
-  std::vector<uint8_t> encoded = converter.PDUToDER(asn1);
-  const uint8_t* buf = encoded.data();
-  size_t len = encoded.size();
-
-  bssl::UniquePtr<STACK_OF(X509)> certs(sk_X509_new_null());
-  EVP_PKEY* key = nullptr;
-  CBS cbs;
-  CBS_init(&cbs, buf, len);
-  PKCS12_get_key_and_certs(&key, certs.get(), &cbs, "foo");
-  EVP_PKEY_free(key);
-}
\ No newline at end of file
diff --git a/projects/boringssl/fuzz_pkcs8.cc b/projects/boringssl/fuzz_pkcs8.cc
deleted file mode 100644
index a657d8b..0000000
--- a/projects/boringssl/fuzz_pkcs8.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// This fuzz target fuzzes the same API as
-// https://github.com/google/boringssl/blob/master/fuzz/pkcs8.cc, but it employs
-// libprotobuf-mutator for structure-aware fuzzing.
-
-#include <openssl/bytestring.h>
-#include <openssl/err.h>
-#include <openssl/evp.h>
-#include <openssl/mem.h>
-#include "asn1_pdu.pb.h"
-#include "asn1_pdu_to_der.h"
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-
-DEFINE_PROTO_FUZZER(const asn1_pdu::PDU& asn1) {
-  asn1_pdu::ASN1PDUToDER converter;
-  std::vector<uint8_t> encoded = converter.PDUToDER(asn1);
-  const uint8_t* buf = encoded.data();
-  size_t len = encoded.size();
-
-  CBS cbs;
-  CBS_init(&cbs, buf, len);
-  bssl::UniquePtr<EVP_PKEY> pkey(EVP_parse_private_key(&cbs));
-  if (pkey == NULL) {
-    return;
-  }
-
-  uint8_t* der;
-  size_t der_len;
-  bssl::ScopedCBB cbb;
-  if (CBB_init(cbb.get(), 0) &&
-      EVP_marshal_private_key(cbb.get(), pkey.get()) &&
-      CBB_finish(cbb.get(), &der, &der_len)) {
-    OPENSSL_free(der);
-  }
-  ERR_clear_error();
-}
\ No newline at end of file
diff --git a/projects/boringssl/project.yaml b/projects/boringssl/project.yaml
index ab49fcb..5691f93 100644
--- a/projects/boringssl/project.yaml
+++ b/projects/boringssl/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://boringssl.googlesource.com/boringssl/"
-language: c++
 primary_contact: "agl@google.com"
 auto_ccs:
  - "davidben@google.com"
@@ -8,4 +7,3 @@
 - address
 - undefined
 - memory
-main_repo: 'https://boringssl.googlesource.com/boringssl'
diff --git a/projects/botan/Dockerfile b/projects/botan/Dockerfile
index 8055967..d048940 100644
--- a/projects/botan/Dockerfile
+++ b/projects/botan/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jack@randombit.net
 RUN apt-get update && apt-get install -y make python
 RUN git clone --depth 1 https://github.com/randombit/botan.git botan
 RUN git clone --depth 1 https://github.com/randombit/crypto-corpus.git fuzzer_corpus
diff --git a/projects/botan/build.sh b/projects/botan/build.sh
index b88e785..0a3d534 100755
--- a/projects/botan/build.sh
+++ b/projects/botan/build.sh
@@ -22,7 +22,7 @@
 ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" \
                --disable-shared --disable-modules=locking_allocator \
                --unsafe-fuzzer-mode --build-fuzzers=libfuzzer \
-               --without-os-features=getrandom,getentropy --with-fuzzer-lib='FuzzingEngine'
+               --with-fuzzer-lib='FuzzingEngine'
 
 make -j$(nproc) libs
 make -j$(nproc) fuzzers
diff --git a/projects/botan/project.yaml b/projects/botan/project.yaml
index becbd81..12fd93a 100644
--- a/projects/botan/project.yaml
+++ b/projects/botan/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://botan.randombit.net"
-language: c++
 primary_contact: "jack.lloyd@gmail.com"
 auto_ccs:
   - "r.korthaus@sirrix.com"
@@ -9,4 +8,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/randombit/botan.git'
diff --git a/projects/brotli/Dockerfile b/projects/brotli/Dockerfile
index 1f20de2..db25382 100644
--- a/projects/brotli/Dockerfile
+++ b/projects/brotli/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER eustas@chromium.org
 RUN apt-get update && apt-get install -y cmake libtool make
 
 RUN git clone --depth 1 https://github.com/google/brotli.git
diff --git a/projects/brotli/build.sh b/projects/brotli/build.sh
index c6abf66..cf6f5e7 100755
--- a/projects/brotli/build.sh
+++ b/projects/brotli/build.sh
@@ -1,19 +1,4 @@
 #!/bin/bash -eu
-# Copyright 2016 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
 
 cmake . -DBUILD_TESTING=OFF
 make clean
diff --git a/projects/brotli/project.yaml b/projects/brotli/project.yaml
index 5128769..67be80d 100644
--- a/projects/brotli/project.yaml
+++ b/projects/brotli/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/brotli"
-language: c++
 primary_contact: "eustas@chromium.org"
 vendor_ccs:
   - "jkew@mozilla.com"
@@ -7,7 +6,6 @@
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
@@ -17,4 +15,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/google/brotli.git'
diff --git a/projects/brunsli/Dockerfile b/projects/brunsli/Dockerfile
deleted file mode 100644
index 24dc994..0000000
--- a/projects/brunsli/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake libtool make
-
-RUN git clone --depth 1 https://github.com/google/brunsli.git && \
-    cd brunsli && \
-    git submodule update --init --depth 1
-WORKDIR brunsli
-COPY build.sh $SRC/
diff --git a/projects/brunsli/build.sh b/projects/brunsli/build.sh
deleted file mode 100755
index 048bbd0..0000000
--- a/projects/brunsli/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cmake . -DBUILD_TESTING=OFF
-make clean
-make -j$(nproc) brunslidec-static
-
-# TODO(eustas): add seed corpus
-
-$CXX $CXXFLAGS -std=c++11 -I./c/include c/tests/fuzz_decode.cc \
-    -o $OUT/fuzz_decode $LIB_FUZZING_ENGINE \
-    ./artifacts/libbrunslidec-static.a ./artifacts/libbrunslicommon-static.a \
-    ./third_party/brotli/libbrotlidec-static.a \
-    ./third_party/brotli/libbrotlicommon-static.a
-
-$CXX $CXXFLAGS -std=c++11 -I./c/include c/tests/fuzz_decode_streaming.cc \
-    -o $OUT/fuzz_decode_streaming $LIB_FUZZING_ENGINE \
-    ./artifacts/libbrunslidec-static.a ./artifacts/libbrunslicommon-static.a \
-    ./third_party/brotli/libbrotlidec-static.a \
-    ./third_party/brotli/libbrotlicommon-static.a
diff --git a/projects/brunsli/project.yaml b/projects/brunsli/project.yaml
deleted file mode 100644
index 26594a8..0000000
--- a/projects/brunsli/project.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-homepage: "https://github.com/google/brunsli"
-language: c++
-primary_contact: "eustas@chromium.org"
-vendor_ccs:
-  - "jkew@mozilla.com"
-  - "twsmith@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/google/brunsli.git'
diff --git a/projects/bs4/Dockerfile b/projects/bs4/Dockerfile
deleted file mode 100644
index 9a0de07..0000000
--- a/projects/bs4/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt install -y bzr python-lxml python-html5lib
-RUN pip3 install 2to3 soupsieve html5lib lxml
-RUN pip3 install bzr+lp:beautifulsoup
-
-COPY build.sh bs4_fuzzer.py $SRC/
diff --git a/projects/bs4/bs4_fuzzer.py b/projects/bs4/bs4_fuzzer.py
deleted file mode 100644
index 1194261..0000000
--- a/projects/bs4/bs4_fuzzer.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import sys
-import warnings
-import atheris
-
-from bs4 import BeautifulSoup
-
-
-try:
-  import HTMLParser
-  HTMLParseError = HTMLParser.HTMLParseError
-except ImportError:
-  # HTMLParseError is removed in Python 3.5. Since it can never be
-  # thrown in 3.5, we can just define our own class as a placeholder.
-
-  class HTMLParseError(Exception):
-    pass
-
-
-def TestOneInput(data):
-  """TestOneInput gets random data from the fuzzer, and throws it at bs4."""
-  if len(data) < 1:
-    return
-
-  parsers = ['lxml-xml', 'html5lib', 'html.parser', 'lxml']
-  try:
-    idx = int(data[0]) % len(parsers)
-  except ValueError:
-    return
-
-  try:
-    soup = BeautifulSoup(data[1:], features=parsers[idx])
-  except HTMLParseError:
-    return
-  except ValueError:
-    return
-
-  list(soup.find_all(True))
-  soup.prettify()
-
-
-def main():
-  logging.disable(logging.CRITICAL)
-  warnings.filterwarnings('ignore')
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/bs4/build.sh b/projects/bs4/build.sh
deleted file mode 100644
index 111be46..0000000
--- a/projects/bs4/build.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/bs4/project.yaml b/projects/bs4/project.yaml
deleted file mode 100644
index 2081650..0000000
--- a/projects/bs4/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://www.crummy.com/software/BeautifulSoup/"
-main_repo: "https://code.launchpad.net/~leonardr/beautifulsoup/bs4"
-language: python
-primary_contact: "leonard.richardson@gmail.com"
-auto_ccs:
-  - "jvoisin@google.com"
-  - "ipudney@google.com"
-  - "security@tidelift.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/bzip2/Dockerfile b/projects/bzip2/Dockerfile
index 0031695..356ad82 100644
--- a/projects/bzip2/Dockerfile
+++ b/projects/bzip2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER bshas3@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool wget
 RUN git clone git://sourceware.org/git/bzip2.git
 RUN git clone git://sourceware.org/git/bzip2-tests.git
diff --git a/projects/bzip2/project.yaml b/projects/bzip2/project.yaml
index 5237e28..3ba800f 100644
--- a/projects/bzip2/project.yaml
+++ b/projects/bzip2/project.yaml
@@ -1,14 +1,13 @@
 homepage: "https://sourceware.org/bzip2/"
-language: c++
 primary_contact: "bzip2fuzzer@gmail.com"
 auto_ccs:
   - "bshas3@gmail.com"
 vendor_ccs:
   - "twsmith@mozilla.com"
+  - "cdiehl@mozilla.com"
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
diff --git a/projects/c-ares/Dockerfile b/projects/c-ares/Dockerfile
index ea15506..96b4eec 100644
--- a/projects/c-ares/Dockerfile
+++ b/projects/c-ares/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/c-ares/c-ares.git
 WORKDIR c-ares
diff --git a/projects/c-ares/build.sh b/projects/c-ares/build.sh
index 2d68ee7..decac11 100755
--- a/projects/c-ares/build.sh
+++ b/projects/c-ares/build.sh
@@ -15,6 +15,12 @@
 #
 ################################################################################
 
+# Remove -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION from CFLAGS
+# as a workaround for https://github.com/google/oss-fuzz/issues/413.
+# It's unclear why the c-ares configure is that picky;
+# a better fix would probably be in the c-ares build system.
+CFLAGS=$(for f in $CFLAGS; do [ $f != "-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" ] && echo $f; done);
+
 # Build the project.
 ./buildconf
 ./configure --enable-debug
@@ -22,16 +28,16 @@
 make -j$(nproc) V=1 all
 
 # Build the fuzzers.
-$CC $CFLAGS -Iinclude -Isrc/lib -c $SRC/c-ares/test/ares-test-fuzz.c -o $WORK/ares-test-fuzz.o
+$CC $CFLAGS -I. -c $SRC/c-ares/test/ares-test-fuzz.c -o $WORK/ares-test-fuzz.o
 $CXX $CXXFLAGS -std=c++11 $WORK/ares-test-fuzz.o \
     -o $OUT/ares_parse_reply_fuzzer \
-    $LIB_FUZZING_ENGINE $SRC/c-ares/src/lib/.libs/libcares.a
+    $LIB_FUZZING_ENGINE $SRC/c-ares/.libs/libcares.a
 
-$CC $CFLAGS -Iinclude -Isrc/lib -c $SRC/c-ares/test/ares-test-fuzz-name.c \
+$CC $CFLAGS -I. -c $SRC/c-ares/test/ares-test-fuzz-name.c \
     -o $WORK/ares-test-fuzz-name.o
 $CXX $CXXFLAGS -std=c++11 $WORK/ares-test-fuzz-name.o \
     -o $OUT/ares_create_query_fuzzer \
-    $LIB_FUZZING_ENGINE $SRC/c-ares/src/lib/.libs/libcares.a
+    $LIB_FUZZING_ENGINE $SRC/c-ares/.libs/libcares.a
 
 # Archive and copy to $OUT seed corpus if the build succeeded.
 zip -j $OUT/ares_parse_reply_fuzzer_seed_corpus.zip $SRC/c-ares/test/fuzzinput/*
diff --git a/projects/c-ares/project.yaml b/projects/c-ares/project.yaml
index aed3272..70f5bed 100644
--- a/projects/c-ares/project.yaml
+++ b/projects/c-ares/project.yaml
@@ -1,13 +1,5 @@
 homepage: "https://c-ares.haxx.se/"
-language: c++
 primary_contact: "drysdale@google.com"
-auto_ccs:
-  - "daniel.haxx@gmail.com"
-  - "brad@brad-house.com"
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
 sanitizers:
   - address
   - memory
@@ -15,4 +7,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/c-ares/c-ares.git'
diff --git a/projects/c-blosc/Dockerfile b/projects/c-blosc/Dockerfile
index 5037037..aed3eca 100644
--- a/projects/c-blosc/Dockerfile
+++ b/projects/c-blosc/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER blosc.oss.fuzz@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake
 RUN git clone --depth 1 https://github.com/Blosc/c-blosc.git c-blosc
 WORKDIR c-blosc
-COPY build.sh $SRC/
\ No newline at end of file
+COPY build.sh blosc_fuzzer.cc $SRC/
diff --git a/projects/c-blosc/blosc_fuzzer.cc b/projects/c-blosc/blosc_fuzzer.cc
new file mode 100644
index 0000000..c769c38
--- /dev/null
+++ b/projects/c-blosc/blosc_fuzzer.cc
@@ -0,0 +1,33 @@
+// Copyright 2019 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "blosc/blosc.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  if (size < BLOSC_MIN_HEADER_LENGTH) return 0;
+
+  size_t nbytes, cbytes, blocksize;
+  blosc_cbuffer_sizes(data, &nbytes, &cbytes, &blocksize);
+  if (cbytes != size) return 0;
+  if (nbytes == 0) return 0;
+
+  void *output = malloc(nbytes);
+  blosc_decompress_ctx(data, output, nbytes, /*numinternalthreads=*/1);
+  free(output);
+  return 0;
+}
diff --git a/projects/c-blosc/build.sh b/projects/c-blosc/build.sh
index 4b1a5a6..311ed2c 100755
--- a/projects/c-blosc/build.sh
+++ b/projects/c-blosc/build.sh
@@ -15,15 +15,17 @@
 #
 ################################################################################
 
-# Build project
-cmake . -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DBUILD_FUZZERS=ON
-make clean
+# build project
+mkdir -p build_dir
+pushd build_dir
+cmake ..
 make -j$(nproc)
+popd
 
-# Package seed corpus
-zip -j $OUT/decompress_fuzzer_seed_corpus.zip compat/*.cdata
-
-# Copy the fuzzer executables, zip-ed corpora, and dictionary files to $OUT
-find . -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer_seed_corpus.zip' -exec cp -v '{}' $OUT ';'
\ No newline at end of file
+# build fuzzers
+for fuzzers in $(find $SRC -name '*_fuzzer.cc'); do
+  fuzz_basename=$(basename -s .cc $fuzzers)
+  $CXX $CXXFLAGS -std=c++11 -I. -I../blosc/ \
+  $fuzzers $LIB_FUZZING_ENGINE ./build_dir/blosc/libblosc.a  \
+  -o $OUT/$fuzz_basename
+done
diff --git a/projects/c-blosc/project.yaml b/projects/c-blosc/project.yaml
index 2e1fc80..0dc2bbb 100644
--- a/projects/c-blosc/project.yaml
+++ b/projects/c-blosc/project.yaml
@@ -1,13 +1,8 @@
 homepage: "https://github.com/Blosc/c-blosc"
-language: c++
 primary_contact: "blosc.oss.fuzz@gmail.com"
-auto_ccs:
-  - "nathan.moinvaziri@gmail.com"
 sanitizers:
   - address
   - memory
-  - undefined
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/Blosc/c-blosc.git'
diff --git a/projects/c-blosc2/Dockerfile b/projects/c-blosc2/Dockerfile
deleted file mode 100644
index cdd4200..0000000
--- a/projects/c-blosc2/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool cmake
-RUN git clone --depth 1 https://github.com/Blosc/c-blosc2.git c-blosc2
-WORKDIR c-blosc2
-COPY build.sh $SRC/
\ No newline at end of file
diff --git a/projects/c-blosc2/build.sh b/projects/c-blosc2/build.sh
deleted file mode 100755
index afe771d..0000000
--- a/projects/c-blosc2/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build project
-export LDSHARED=lld
-
-cmake . -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DBUILD_FUZZERS=ON
-make clean
-make -j$(nproc)
-
-# Package seed corpus
-zip -j $OUT/decompress_chunk_fuzzer_seed_corpus.zip compat/*.cdata
-zip -j $OUT/decompress_frame_fuzzer_seed_corpus.zip tests/fuzz/corpus/*
-
-# Copy the fuzzer executables, zip-ed corpora, and dictionary files to $OUT
-find . -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer_seed_corpus.zip' -exec cp -v '{}' $OUT ';'
diff --git a/projects/c-blosc2/project.yaml b/projects/c-blosc2/project.yaml
deleted file mode 100644
index 7d8bb8e..0000000
--- a/projects/c-blosc2/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/Blosc/c-blosc2"
-language: c++
-primary_contact: "blosc.oss.fuzz@gmail.com"
-auto_ccs:
-  - "nathan.moinvaziri@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/Blosc/c-blosc2.git'
diff --git a/projects/cairo/Dockerfile b/projects/cairo/Dockerfile
deleted file mode 100644
index 7463bbd..0000000
--- a/projects/cairo/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y python3-pip gtk-doc-tools libffi-dev
-RUN pip3 install -U meson==0.55.3 ninja
-
-RUN git clone --depth 1 git://git.sv.nongnu.org/freetype/freetype2.git
-ADD https://ftp.gnome.org/pub/gnome/sources/glib/2.64/glib-2.64.2.tar.xz $SRC
-RUN tar xvJf $SRC/glib-2.64.2.tar.xz
-RUN git clone --depth 1 https://gitlab.freedesktop.org/cairo/cairo.git && \
-    zip -q $SRC/cairo_seed_corpus.zip $SRC/cairo/test/reference/*
-
-ADD https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/png.dict $SRC/cairo.dict
-
-WORKDIR $SRC/cairo
-COPY targets $SRC/fuzz
-COPY build.sh $SRC/
diff --git a/projects/cairo/build.sh b/projects/cairo/build.sh
deleted file mode 100755
index 655103e..0000000
--- a/projects/cairo/build.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-PREFIX=$WORK/prefix
-mkdir -p $PREFIX
-
-export PKG_CONFIG="`which pkg-config` --static"
-export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
-export PATH=$PREFIX/bin:$PATH
-
-BUILD=$WORK/build
-
-rm -rf $WORK/*
-rm -rf $BUILD
-mkdir -p $BUILD
-
-# Build glib
-pushd $SRC/glib-2.64.2
-meson \
-    --prefix=$PREFIX \
-    --libdir=lib \
-    --default-library=static \
-    -Db_lundef=false \
-    -Doss_fuzz=enabled \
-    -Dlibmount=disabled \
-    -Dinternal_pcre=true \
-    _builddir
-ninja -C _builddir
-ninja -C _builddir install
-popd
-
-pushd $SRC/freetype2
-./autogen.sh
-./configure --prefix="$PREFIX" --disable-shared PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
-make -j$(nproc)
-make install
-
-# Build cairo
-pushd $SRC/cairo
-meson \
-    --prefix=$PREFIX \
-    --libdir=lib \
-    --default-library=static \
-    _builddir
-ninja -C _builddir
-ninja -C _builddir install
-popd
-
-mv $SRC/{*.zip,*.dict} $OUT
-
-if [ ! -f "${OUT}/cairo_seed_corpus.zip" ]; then
-  echo "missing seed corpus"
-  exit 1
-fi
-
-if [ ! -f "${OUT}/cairo.dict" ]; then
-  echo "missing dictionary"
-  exit 1
-fi
-
-PREDEPS_LDFLAGS="-Wl,-Bdynamic -ldl -lm -lc -pthread -lrt -lpthread"
-DEPS="gmodule-2.0 glib-2.0 gio-2.0 gobject-2.0 freetype2 cairo cairo-gobject" 
-BUILD_CFLAGS="$CFLAGS `pkg-config --static --cflags $DEPS`"
-BUILD_LDFLAGS="-Wl,-static `pkg-config --static --libs $DEPS`"
-
-fuzzers=$(find $SRC/fuzz/ -name "*_fuzzer.c")
-for f in $fuzzers; do
-  fuzzer_name=$(basename $f .c)
-  $CC $CFLAGS $BUILD_CFLAGS \
-    -c $f -o $WORK/${fuzzer_name}.o
-  $CXX $CXXFLAGS \
-    $WORK/${fuzzer_name}.o -o $OUT/${fuzzer_name} \
-    $PREDEPS_LDFLAGS \
-    $BUILD_LDFLAGS \
-    $LIB_FUZZING_ENGINE \
-    -Wl,-Bdynamic
-  ln -sf $SRC/cairo_seed_corpus.zip $OUT/${fuzzer_name}_seed_corpus.zip
-  ln -sf $SRC/cairo.dict $OUT/${fuzzer_name}.dict
-done
diff --git a/projects/cairo/project.yaml b/projects/cairo/project.yaml
deleted file mode 100644
index 9a078de..0000000
--- a/projects/cairo/project.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-homepage: https://gitlab.freedesktop.org/cairo/cairo
-language: c
-primary_contact: security-tps@google.com
-auto_ccs:
-  - "psychon@znc.in"
-sanitizers:
-  - address
-  - undefined
-vendor_ccs:
-  - "jkew@mozilla.com"
-  - "jmuizelaar@mozilla.com"
-  - "twsmith@mozilla.com"
-view_restrictions: none
-main_repo: 'https://gitlab.freedesktop.org/cairo/cairo.git'
diff --git a/projects/cairo/targets/fuzzer_temp_file.h b/projects/cairo/targets/fuzzer_temp_file.h
deleted file mode 100644
index 158b497..0000000
--- a/projects/cairo/targets/fuzzer_temp_file.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Adapter utility from fuzzer input to a temporary file, for fuzzing APIs that
-// require a file instead of an input buffer.
-
-#ifndef FUZZER_TEMP_FILE_H_
-#define FUZZER_TEMP_FILE_H_
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-// Pure-C interface for creating and cleaning up temporary files.
-
-static char* fuzzer_get_tmpfile(const uint8_t* data, size_t size) {
-    char* filename_buffer = strdup("/tmp/generate_temporary_file.XXXXXX");
-    if (!filename_buffer) {
-        perror("Failed to allocate file name buffer.");
-        abort();
-    }
-    const int file_descriptor = mkstemp(filename_buffer);
-    if (file_descriptor < 0) {
-        perror("Failed to make temporary file.");
-        abort();
-    }
-    FILE* file = fdopen(file_descriptor, "wb");
-    if (!file) {
-        perror("Failed to open file descriptor.");
-        close(file_descriptor);
-        abort();
-    }
-    const size_t bytes_written = fwrite(data, sizeof(uint8_t), size, file);
-    if (bytes_written < size) {
-        close(file_descriptor);
-        fprintf(stderr, "Failed to write all bytes to file (%zu out of %zu)",
-                bytes_written, size);
-        abort();
-    }
-    fclose(file);
-    return filename_buffer;
-}
-
-static void fuzzer_release_tmpfile(char* filename) {
-    if (unlink(filename) != 0) {
-        perror("WARNING: Failed to delete temporary file.");
-    }
-    free(filename);
-}
-
-// C++ RAII object for creating temporary files.
-
-#ifdef __cplusplus
-class FuzzerTemporaryFile {
-    public:
-        FuzzerTemporaryFile(const uint8_t* data, size_t size)
-            : filename_(fuzzer_get_tmpfile(data, size)) {}
-
-        ~FuzzerTemporaryFile() { fuzzer_release_tmpfile(filename_); }
-
-        const char* filename() const { return filename_; }
-
-    private:
-        char* filename_;
-};
-#endif
-
-#endif  // FUZZER_TEMP_FILE_H_
diff --git a/projects/cairo/targets/pdf_surface_fuzzer.c b/projects/cairo/targets/pdf_surface_fuzzer.c
deleted file mode 100644
index 7967d1d..0000000
--- a/projects/cairo/targets/pdf_surface_fuzzer.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cairo.h>
-#include <cairo-pdf.h>
-#include "fuzzer_temp_file.h"
-
-const double width_in_inches = 3;
-const double height_in_inches = 3;
-const double width_in_points = width_in_inches * 72.0;
-const double height_in_points = height_in_inches * 72.0;
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    cairo_t *cr;
-    cairo_surface_t *surface;
-    cairo_status_t status;
-
-    if (size == 0) {
-        return 0;
-    }
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    surface = cairo_pdf_surface_create(tmpfile, width_in_points, height_in_points);
-    status = cairo_surface_status(surface);
-    if (status != CAIRO_STATUS_SUCCESS) {
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_TITLE, buf);
-    cr = cairo_create(surface);
-    cairo_tag_begin(cr, buf, NULL);
-    cairo_tag_end(cr, buf);
-
-    cairo_destroy(cr);
-    cairo_surface_destroy(surface);
-    free(buf);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/cairo/targets/raster_fuzzer.c b/projects/cairo/targets/raster_fuzzer.c
deleted file mode 100644
index e7f9bc1..0000000
--- a/projects/cairo/targets/raster_fuzzer.c
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cairo.h>
-#include <cairo-pdf.h>
-#include "fuzzer_temp_file.h"
-
-static cairo_surface_t *
-acquire (cairo_pattern_t *pattern, void *closure,
-	     cairo_surface_t *target,
-	     const cairo_rectangle_int_t *extents)
-{
-    return cairo_image_surface_create_from_png(closure);
-}
-
-static void
-release (cairo_pattern_t *pattern, void *closure, cairo_surface_t *surface)
-{
-    cairo_surface_destroy(surface);
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    cairo_t *cr;
-    cairo_surface_t *surface;
-    cairo_pattern_t *pattern;
-    cairo_content_t content;
-    cairo_status_t status;
-    int w, h;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    surface = cairo_image_surface_create_from_png(tmpfile);
-    status = cairo_surface_status (surface);
-    if (status != CAIRO_STATUS_SUCCESS) {
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    cr = cairo_create(surface);
-    content = cairo_surface_get_content(surface);
-    w = cairo_image_surface_get_width(surface);
-    h = cairo_image_surface_get_height(surface);
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    pattern = cairo_pattern_create_raster_source(buf, content, w, h);
-    cairo_raster_source_pattern_set_acquire (pattern, acquire, release);
-    cairo_set_source(cr, pattern);
-    cairo_pdf_surface_set_page_label(surface, buf);
-    cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_KEYWORDS, buf);
-    cairo_paint(cr);
-
-    cairo_destroy(cr);
-    cairo_pattern_destroy(pattern);
-    cairo_surface_destroy(surface);
-    free(buf);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/cairo/targets/surface_write_png_fuzzer.c b/projects/cairo/targets/surface_write_png_fuzzer.c
deleted file mode 100644
index 9819fa2..0000000
--- a/projects/cairo/targets/surface_write_png_fuzzer.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cairo.h>
-#include "fuzzer_temp_file.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    cairo_surface_t *image;
-    cairo_surface_t *surface;
-    cairo_status_t status;
-    cairo_format_t format;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    image = cairo_image_surface_create_from_png(tmpfile);
-    status = cairo_surface_status (image);
-    if (status != CAIRO_STATUS_SUCCESS) {
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    format = cairo_image_surface_get_format(image);
-    surface = cairo_image_surface_create_for_data((unsigned char*)data, format, 1, 1, size);
-    status = cairo_surface_status (surface);
-    if (status != CAIRO_STATUS_SUCCESS) {
-        cairo_surface_destroy(image);
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-    cairo_surface_write_to_png(surface, tmpfile);
-
-    cairo_surface_destroy(surface);
-    cairo_surface_destroy(image);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/cairo/targets/text_glyphs_fuzzer.c b/projects/cairo/targets/text_glyphs_fuzzer.c
deleted file mode 100644
index 41c180d..0000000
--- a/projects/cairo/targets/text_glyphs_fuzzer.c
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cairo.h>
-#include "fuzzer_temp_file.h"
-
-const int glyph_range = 9;
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (size < glyph_range) {
-        return 0;
-    }
-    cairo_t *cr;
-    cairo_surface_t *surface;
-    cairo_status_t status;
-    cairo_text_extents_t extents;
-    cairo_text_cluster_t cluster;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    surface = cairo_image_surface_create_from_png(tmpfile);
-    status = cairo_surface_status(surface);
-    if (status != CAIRO_STATUS_SUCCESS) {
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    cr = cairo_create(surface);
-    cairo_text_extents(cr, buf, &extents);
-    cluster.num_bytes = size;
-    cluster.num_glyphs = 1;
-    for (int i = 0; i < glyph_range; i++) {
-        // Taken from test/text-glyph-range.c
-        cairo_glyph_t glyph = {
-            (long int)data[i], 10 * i, 25
-        };
-        cairo_show_text_glyphs(cr, buf, size, &glyph, 1, &cluster, 1, 0);
-    }
-
-    cairo_destroy(cr);
-    cairo_surface_destroy(surface);
-    free(buf);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/capnproto/Dockerfile b/projects/capnproto/Dockerfile
deleted file mode 100644
index dffaa45..0000000
--- a/projects/capnproto/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake zlib1g-dev
-RUN git clone --depth 1 https://github.com/capnproto/capnproto
-WORKDIR $SRC/capnproto
-COPY build.sh $SRC/
diff --git a/projects/capnproto/build.sh b/projects/capnproto/build.sh
deleted file mode 100755
index 176418d..0000000
--- a/projects/capnproto/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-mkdir build
-cd build
-cmake -DBUILD_SHARED_LIBS=OFF ..
-make -j$(nproc)
-cp c++/src/capnp/*fuzzer* $OUT/
diff --git a/projects/capnproto/project.yaml b/projects/capnproto/project.yaml
deleted file mode 100644
index e8cffba..0000000
--- a/projects/capnproto/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://capnproto.org"
-language: c++
-primary_contact: "security@sandstorm.io"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-sanitizers:
-  - address
-main_repo: 'https://github.com/capnproto/capnproto'
diff --git a/projects/capstone/Dockerfile b/projects/capstone/Dockerfile
index 6f157a9..d4ef223 100644
--- a/projects/capstone/Dockerfile
+++ b/projects/capstone/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER capstone.engine@gmail.com
 RUN apt-get update && apt-get install -y make cmake python python-setuptools
 RUN git clone --depth 1 --branch v4 https://github.com/aquynh/capstone.git capstonev4
 RUN git clone --depth 1 --branch next https://github.com/aquynh/capstone.git capstonenext
diff --git a/projects/capstone/build.sh b/projects/capstone/build.sh
index b0da123..35720ea 100755
--- a/projects/capstone/build.sh
+++ b/projects/capstone/build.sh
@@ -32,7 +32,6 @@
     sed -i -e 's/#print/print/' capstone/__init__.py
     (
     export CFLAGS=""
-    export AFL_NOOPT=1
     python setup.py install
     )
     cd $SRC/capstone$branch/suite
diff --git a/projects/capstone/project.yaml b/projects/capstone/project.yaml
index 6042f72..ea91d82 100644
--- a/projects/capstone/project.yaml
+++ b/projects/capstone/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://www.capstone-engine.org"
-language: c++
 primary_contact: "capstone.engine@gmail.com"
 auto_ccs : 
   - "p.antoine@catenacyber.fr"
-  - "stalkr@stalkr.net"
 fuzzing_engines:
   - libfuzzer
   - afl
@@ -14,4 +12,3 @@
   - memory
   - undefined
   - dataflow
-main_repo: 'https://github.com/aquynh/capstone.git'
diff --git a/projects/cascadia/Dockerfile b/projects/cascadia/Dockerfile
deleted file mode 100644
index 094b5e1..0000000
--- a/projects/cascadia/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/andybalholm/cascadia
-
-COPY build.sh $SRC/
-WORKDIR $SRC/cascadia
diff --git a/projects/cascadia/build.sh b/projects/cascadia/build.sh
deleted file mode 100755
index 4643b2c..0000000
--- a/projects/cascadia/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-compile_go_fuzzer github.com/andybalholm/cascadia/fuzz Fuzz fuzz
diff --git a/projects/cascadia/project.yaml b/projects/cascadia/project.yaml
deleted file mode 100644
index fba3e9e..0000000
--- a/projects/cascadia/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/andybalholm/cascadia"
-primary_contact: "cascadia@balholm.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/andybalholm/cascadia'
diff --git a/projects/casync/Dockerfile b/projects/casync/Dockerfile
index da6bab7..6351a4c 100644
--- a/projects/casync/Dockerfile
+++ b/projects/casync/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER zbyszek@in.waw.pl
 RUN apt-get update && \
     apt-get install -y \
         python3-pip pkg-config wget \
diff --git a/projects/casync/project.yaml b/projects/casync/project.yaml
index e2d38b8..23ec8b0 100644
--- a/projects/casync/project.yaml
+++ b/projects/casync/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/casync/casync"
-language: c++
 primary_contact: "lennart@poettering.net"
 sanitizers:
   - address
@@ -9,4 +8,3 @@
   - zbyszek@in.waw.pl
   - poettering@gmail.com
   - fsumsal@redhat.com
-main_repo: 'https://github.com/systemd/casync'
diff --git a/projects/cctz/Dockerfile b/projects/cctz/Dockerfile
deleted file mode 100644
index 7882330..0000000
--- a/projects/cctz/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf libgtest-dev
-RUN git clone --depth 1 https://github.com/google/cctz
-WORKDIR $SRC/cctz
-
-COPY build.sh $SRC/
-COPY fuzz_* $SRC/
-
diff --git a/projects/cctz/build.sh b/projects/cctz/build.sh
deleted file mode 100755
index b83b4f5..0000000
--- a/projects/cctz/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-mkdir build && cd build
-cmake -DBUILD_TESTING=OFF ../
-make
-
-# Compile fuzzers
-cp $SRC/fuzz* .
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE ./fuzz_cctz.cc ./libcctz.a  -I../include/ -o $OUT/fuzz_cctz
diff --git a/projects/cctz/fuzz_cctz.cc b/projects/cctz/fuzz_cctz.cc
deleted file mode 100644
index 2096152..0000000
--- a/projects/cctz/fuzz_cctz.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright 2020 Google LLC
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include <iostream>
-#include <string>
-
-#include "cctz/civil_time.h"
-#include "cctz/time_zone.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	FuzzedDataProvider fuzzed_data(data, size);
-
-	cctz::time_zone lax;
-	std::string tz = fuzzed_data.ConsumeRandomLengthString();
-	if (load_time_zone(tz, &lax)) {
-		std::chrono::system_clock::time_point tp;
-		std::string date_format = fuzzed_data.ConsumeRandomLengthString();
-		std::string parse_format = fuzzed_data.ConsumeRandomLengthString();
-		cctz::parse(parse_format, date_format, lax, &tp);
-
-		const auto t1 = cctz::convert(cctz::civil_second(
-				fuzzed_data.ConsumeIntegral<uint32_t>(),
-				fuzzed_data.ConsumeIntegral<uint32_t>(),
-				fuzzed_data.ConsumeIntegral<uint32_t>(),
-				fuzzed_data.ConsumeIntegral<uint32_t>(),
-				fuzzed_data.ConsumeIntegral<uint32_t>(),
-				fuzzed_data.ConsumeIntegral<uint32_t>()), lax);
-		std::string format = fuzzed_data.ConsumeRandomLengthString();
-		cctz::format(format, t1, lax);
-	}
-
-	return 0;
-}
diff --git a/projects/cctz/project.yaml b/projects/cctz/project.yaml
deleted file mode 100644
index 58562e6..0000000
--- a/projects/cctz/project.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-homepage: "https://github.com/google/cctz"
-language: c++
-primary_contact: "david@adalogics.com"
diff --git a/projects/cel-cpp/.bazelrc b/projects/cel-cpp/.bazelrc
deleted file mode 100644
index f55fb55..0000000
--- a/projects/cel-cpp/.bazelrc
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Force the use of Clang for C++ builds.
-build --action_env=CC=clang
-build --action_env=CXX=clang++
-
-build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing_oss_fuzz//:oss_fuzz_engine
-build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=oss-fuzz
-build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_sanitizer=none
diff --git a/projects/cel-cpp/BUILD b/projects/cel-cpp/BUILD
deleted file mode 100644
index 6fdd773..0000000
--- a/projects/cel-cpp/BUILD
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-load("@rules_fuzzing//fuzzing:cc_defs.bzl", "cc_fuzz_test")
-
-cc_fuzz_test(
-	name = "fuzz_parse",
-	deps = ["//parser"],
-	srcs = ["fuzz_parse.cc"],
-)
diff --git a/projects/cel-cpp/Dockerfile b/projects/cel-cpp/Dockerfile
deleted file mode 100644
index 6c4b67e..0000000
--- a/projects/cel-cpp/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/google/cel-cpp/
-COPY build.sh $SRC/
-RUN mkdir $SRC/cel-cpp/fuzz/
-COPY BUILD fuzz*.cc $SRC/cel-cpp/fuzz/
-COPY WORKSPACE .bazelrc $SRC/
-RUN cat WORKSPACE >> $SRC/cel-cpp/WORKSPACE
-RUN cat .bazelrc >> $SRC/cel-cpp/.bazelrc
-RUN echo "4.0.0" > $SRC/cel-cpp/.bazelversion
-WORKDIR $SRC/cel-cpp
diff --git a/projects/cel-cpp/WORKSPACE b/projects/cel-cpp/WORKSPACE
deleted file mode 100644
index bc59fa0..0000000
--- a/projects/cel-cpp/WORKSPACE
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
-    name = "fuzzing_rules_python",
-    url = "https://github.com/bazelbuild/rules_python/releases/download/0.1.0/rules_python-0.1.0.tar.gz",
-    sha256 = "b6d46438523a3ec0f3cead544190ee13223a52f6a6765a29eae7b7cc24cc83a0",
-)
-
-http_archive(
-    name = "rules_fuzzing",
-    sha256 = "a5734cb42b1b69395c57e0bbd32ade394d5c3d6afbfe782b24816a96da24660d",
-    strip_prefix = "rules_fuzzing-0.1.1",
-    urls = ["https://github.com/bazelbuild/rules_fuzzing/archive/v0.1.1.zip"],
-    repo_mapping = {
-        "@rules_python": "@fuzzing_rules_python",
-    },
-)
-
-load("@rules_fuzzing//fuzzing:repositories.bzl", "rules_fuzzing_dependencies")
-
-rules_fuzzing_dependencies()
-
-load("@rules_fuzzing//fuzzing:init.bzl", "rules_fuzzing_init")
-
-rules_fuzzing_init()
diff --git a/projects/cel-cpp/build.sh b/projects/cel-cpp/build.sh
deleted file mode 100755
index 5a6315a..0000000
--- a/projects/cel-cpp/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-declare -r QUERY='
-    let all_fuzz_tests = attr(tags, "fuzz-test", "//...") in
-    $all_fuzz_tests - attr(tags, "no-oss-fuzz", $all_fuzz_tests)
-'
-
-declare -r PACKAGE_SUFFIX="_oss_fuzz"
-declare -r OSS_FUZZ_TESTS="$(bazel query "${QUERY}" | sed "s/$/${PACKAGE_SUFFIX}/")"
-
-bazel build -c opt --config=oss-fuzz --linkopt=-lc++ \
-    --action_env=CC="${CC}" --action_env=CXX="${CXX}" \
-    ${OSS_FUZZ_TESTS[*]}
-
-for oss_fuzz_archive in $(find bazel-bin/ -name "*${PACKAGE_SUFFIX}.tar"); do
-    tar -xvf "${oss_fuzz_archive}" -C "${OUT}"
-done
diff --git a/projects/cel-cpp/fuzz_parse.cc b/projects/cel-cpp/fuzz_parse.cc
deleted file mode 100644
index f4755d3..0000000
--- a/projects/cel-cpp/fuzz_parse.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include <string>
-
-#include "parser/parser.h"
-
-#define MAX_RECURSION 0x100
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-    std::string str (reinterpret_cast<const char*>(data), size);
-    try {
-        auto parse_status = google::api::expr::parser::Parse(str, "fuzzinput", MAX_RECURSION);
-        if (!parse_status.ok()) {
-            parse_status.status().message();
-        }
-    } catch (const std::exception& e) {
-        return 0;
-    }
-    return 0;
-}
diff --git a/projects/cel-cpp/project.yaml b/projects/cel-cpp/project.yaml
deleted file mode 100644
index ad4bf90..0000000
--- a/projects/cel-cpp/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://opensource.google/projects/cel"
-language: c++
-primary_contact: "kyessenov@gmail.com"
-auto_ccs :
-- "tswadell@google.com"
-- "p.antoine@catenacyber.fr"
-
-sanitizers:
-- address
-- memory
-main_repo: 'https://github.com/google/cel-cpp'
diff --git a/projects/chakra/Dockerfile b/projects/chakra/Dockerfile
new file mode 100644
index 0000000..27db5db
--- /dev/null
+++ b/projects/chakra/Dockerfile
@@ -0,0 +1,22 @@
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER ochang@google.com
+RUN apt-get update && apt-get install -y build-essential cmake libicu-dev python
+RUN git clone --depth 1 https://github.com/Microsoft/ChakraCore.git chakra
+WORKDIR chakra
+COPY build.sh $SRC/
diff --git a/projects/chakra/build.sh b/projects/chakra/build.sh
new file mode 100755
index 0000000..bde4088
--- /dev/null
+++ b/projects/chakra/build.sh
@@ -0,0 +1,32 @@
+#!/bin/bash -eu
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+DISABLED_WARNINGS='-Wno-everything'
+
+# Inject additional C/CXXFLAGS
+cat <<EOF > /usr/local/bin/cmake
+#!/bin/sh
+/usr/bin/cmake \\
+  -DCMAKE_C_FLAGS="\$CFLAGS $DISABLED_WARNINGS" \\
+  -DCMAKE_CXX_FLAGS="\$CXXFLAGS $DISABLED_WARNINGS" \\
+  "\$@"
+EOF
+
+chmod +x /usr/local/bin/cmake
+
+./build.sh --test-build --static --embed-icu --cc="$(which clang)" --cxx="$(which clang++)" -j -v -y
+cp out/Test/ch $OUT
diff --git a/projects/chakra/project.yaml b/projects/chakra/project.yaml
new file mode 100644
index 0000000..7fbcae6
--- /dev/null
+++ b/projects/chakra/project.yaml
@@ -0,0 +1,6 @@
+homepage: "https://github.com/Microsoft/ChakraCore"
+primary_contact: "ChakraCoreEng@microsoft.com"
+fuzzing_engines:
+  - none
+sanitizers:
+  - address
diff --git a/projects/cifuzz-example/Dockerfile b/projects/cifuzz-example/Dockerfile
deleted file mode 100644
index af1fd05..0000000
--- a/projects/cifuzz-example/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-
-RUN git clone https://github.com/jonathanmetzman/cifuzz-example.git
-WORKDIR cifuzz-example
-COPY build.sh $SRC/
diff --git a/projects/cifuzz-example/build.sh b/projects/cifuzz-example/build.sh
deleted file mode 100755
index 57aa208..0000000
--- a/projects/cifuzz-example/build.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-echo $PWD
-ls .
-make clean  # Not strictly necessary, since we are building in a fresh dir.
-make -j$(nproc) all    # Build the fuzz targets.
-# make -j$(nproc) check  # Sanity check, not strictly required, but nice to have.
-
-# Copy the fuzzer executables, zip-ed corpora, option and dictionary files to $OUT
-find . -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
-find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'     # If you have dictionaries.
-find . -name '*_fuzzer.options' -exec cp -v '{}' $OUT ';'  # If you have custom options.
-find . -name '*_fuzzer_seed_corpus.zip' -exec cp -v '{}' $OUT ';' # If you have seed corpora (you better have them!)
diff --git a/projects/cifuzz-example/project.yaml b/projects/cifuzz-example/project.yaml
deleted file mode 100644
index 778c69a..0000000
--- a/projects/cifuzz-example/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: c++
-sanitizers:
-  - address
-
-disabled: true
-
-primary_contact:
-  fake@example.com
-main_repo: 'https://github.com/jonathanmetzman/cifuzz-example.git'
diff --git a/projects/cilium/Dockerfile b/projects/cilium/Dockerfile
deleted file mode 100644
index 89f2f00..0000000
--- a/projects/cilium/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget
-RUN wget https://raw.githubusercontent.com/google/AFL/master/dictionaries/json.dict -O $OUT/fuzz.dict
-
-RUN git clone --depth 1 https://github.com/dvyukov/go-fuzz-corpus
-RUN zip $OUT/fuzz_seed_corpus.zip go-fuzz-corpus/json/corpus/*
-
-RUN git clone https://github.com/cilium/cilium/ cilium
-RUN cp $SRC/cilium/test/fuzzing/oss-fuzz-build.sh $SRC/build.sh
-WORKDIR $SRC/cilium
diff --git a/projects/cilium/project.yaml b/projects/cilium/project.yaml
deleted file mode 100644
index 0d75f44..0000000
--- a/projects/cilium/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://cilium.io"
-language: go
-primary_contact: "security@cilium.io"
-auto_ccs:
-- "tom@isovalent.com"
-- "natalia@isovalent.com"
-- "adam@adalogics.com"
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
diff --git a/projects/civetweb/Dockerfile b/projects/civetweb/Dockerfile
deleted file mode 100755
index 523cf01..0000000
--- a/projects/civetweb/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y zlib1g-dev
-RUN git clone https://github.com/civetweb/civetweb
-
-WORKDIR $SRC/civetweb
-COPY build.sh $SRC/
diff --git a/projects/civetweb/build.sh b/projects/civetweb/build.sh
deleted file mode 100755
index 413dd5a..0000000
--- a/projects/civetweb/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-sed -i 's/CFLAGS += -g -fsanitize=address,fuzzer,undefined/#CFLAGS += -g -fsanitize=address,fuzzer,undefined/' ./Makefile
-export LDFLAGS="${LIB_FUZZING_ENGINE} ${CFLAGS}"
-
-chmod +x ./fuzztest/build.sh
-./fuzztest/build.sh
-mv civetweb_fuzz* $OUT/
diff --git a/projects/civetweb/project.yaml b/projects/civetweb/project.yaml
deleted file mode 100755
index f191b2a..0000000
--- a/projects/civetweb/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/civetweb/civetweb"
-primary_contact: "bel2125@gmail.com"
-language: c
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
-  - dataflow
-auto_ccs:
-  - "xt4ubq@gmail.com"
-  - "david@adalogics.com"
-main_repo: 'https://github.com/civetweb/civetweb'
diff --git a/projects/cjson/Dockerfile b/projects/cjson/Dockerfile
index 30597b8..925dd66 100644
--- a/projects/cjson/Dockerfile
+++ b/projects/cjson/Dockerfile
@@ -17,6 +17,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER randy408@protonmail.com
 
 RUN apt-get update && apt-get install -y cmake
 
diff --git a/projects/cjson/project.yaml b/projects/cjson/project.yaml
index 25128b4..14ed6b1 100644
--- a/projects/cjson/project.yaml
+++ b/projects/cjson/project.yaml
@@ -1,17 +1,5 @@
 homepage: "https://github.com/DaveGamble/cJSON"
-language: c++
 primary_contact: "max@maxbruckner.de"
 auto_ccs:
   - "randy440088@gmail.com"
   - "wp_scut@163.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-main_repo: 'https://github.com/DaveGamble/cJSON.git'
diff --git a/projects/clamav/Dockerfile b/projects/clamav/Dockerfile
index 0d4cc03..f91236d 100644
--- a/projects/clamav/Dockerfile
+++ b/projects/clamav/Dockerfile
@@ -15,22 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y \
-    flex bison \
-    python3-dev \
-    pkg-config
-
-#
-# Build static libs for dependencies
-#
-RUN python3 -m pip install mussels
-RUN git clone --depth 1 https://github.com/Cisco-Talos/clamav-mussels-cookbook.git
-
-RUN mkdir /mussels
-RUN cd ${SRC}/clamav-mussels-cookbook && \
-    msl build clamav_deps -t host-static -w /mussels/work -i /mussels/install
-
-# Collect clamav source & fuzz corpus
+MAINTAINER clamav.fuzz@gmail.com
+RUN apt-get update && apt-get install -y libssl-dev libcurl4-openssl-dev
 RUN git clone --depth 1 https://github.com/Cisco-Talos/clamav-devel.git
 RUN git clone --depth 1 https://github.com/Cisco-Talos/clamav-fuzz-corpus.git
 
diff --git a/projects/clamav/build.sh b/projects/clamav/build.sh
index 1f7e902..716bc8a 100755
--- a/projects/clamav/build.sh
+++ b/projects/clamav/build.sh
@@ -15,43 +15,20 @@
 #
 ################################################################################
 
-set -ex
-export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
-
 #
 # Build the library.
 #
 rm -rf ${WORK}/build
 mkdir -p ${WORK}/build
 cd ${WORK}/build
+ac_cv_c_mmap_anonymous=no ${SRC}/clamav-devel/configure --disable-mempool --enable-fuzz=yes --with-libjson=no --with-pcre=no --enable-static=yes --enable-shared=no --disable-llvm --host=x86_64-unknown-linux-gnu
+make clean
+make -j"$(nproc)"
 
 #
-# Run ./configure
+# Build the fuzz targets.
 #
-export CLAMAV_DEPENDENCIES=/mussels/install
-cmake ${SRC}/clamav-devel \
-    -DENABLE_FUZZ=ON                                                   \
-    -DHAVE_MMAP=OFF                                                    \
-    -DJSONC_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include/json-c"          \
-    -DJSONC_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libjson-c.a"             \
-    -DENABLE_JSON_SHARED=OFF                                           \
-    -DBZIP2_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include"                 \
-    -DBZIP2_LIBRARY_RELEASE="$CLAMAV_DEPENDENCIES/lib/libbz2_static.a" \
-    -DOPENSSL_ROOT_DIR="$CLAMAV_DEPENDENCIES"                          \
-    -DOPENSSL_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include"               \
-    -DOPENSSL_CRYPTO_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libcrypto.a"    \
-    -DOPENSSL_SSL_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libssl.a"          \
-    -DZLIB_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libssl.a"                 \
-    -DLIBXML2_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include"               \
-    -DLIBXML2_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libxml2.a"             \
-    -DPCRE2_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include"                 \
-    -DPCRE2_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libpcre2-8.a"            \
-    -DZLIB_INCLUDE_DIR="$CLAMAV_DEPENDENCIES/include"                  \
-    -DZLIB_LIBRARY="$CLAMAV_DEPENDENCIES/lib/libz.a"                   \
-    -DCMAKE_INSTALL_PREFIX="install"
-
-# Build libclamav and the fuzz targets
-make -j4
+make -j"$(nproc)" fuzz-all
 cp ./fuzz/clamav_* ${OUT}/.
 
 #
@@ -63,16 +40,16 @@
 mkdir ${WORK}/all-scantype-seeds
 
 for type in ARCHIVE MAIL OLE2 PDF HTML PE ELF SWF XMLDOCS HWP3; do
-    # Prepare seed corpus for the type-specific fuzz targets.
-    zip ${OUT}/clamav_scanfile_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/scantype/${type}/*
-    zip ${OUT}/clamav_scanmap_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/scantype/${type}/*
+	# Prepare seed corpus for the type-specific fuzz targets.
+	zip ${OUT}/clamav_scanfile_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/scantype/${type}/*
+	zip ${OUT}/clamav_scanmap_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/scantype/${type}/*
 
-    # Prepare dictionary for the type-specific fuzz targets (may not exist for all types).
-    cp ${SRC}/clamav-fuzz-corpus/scantype/${type}.dict ${OUT}/clamav_scanfile_${type}_fuzzer.dict 2>/dev/null || :
-    cp ${SRC}/clamav-fuzz-corpus/scantype/${type}.dict ${OUT}/clamav_scanmap_${type}_fuzzer.dict 2>/dev/null || :
+	# Prepare dictionary for the type-specific fuzz targets (may not exist for all types).
+	cp ${SRC}/clamav-fuzz-corpus/scantype/${type}.dict ${OUT}/clamav_scanfile_${type}_fuzzer.dict 2>/dev/null || :
+	cp ${SRC}/clamav-fuzz-corpus/scantype/${type}.dict ${OUT}/clamav_scanmap_${type}_fuzzer.dict 2>/dev/null || :
 
-    # Copy seeds for the generic fuzz target.
-    cp ${SRC}/clamav-fuzz-corpus/scantype/${type}/* ${WORK}/all-scantype-seeds/
+	# Copy seeds for the generic fuzz target.
+	cp ${SRC}/clamav-fuzz-corpus/scantype/${type}/* ${WORK}/all-scantype-seeds/
 done
 
 # Prepare seed corpus for the generic fuzz target.
@@ -84,9 +61,9 @@
 # `dbload`
 # --------
 for type in CDB CFG CRB FP FTM HDB HSB IDB IGN IGN2 LDB MDB MSB NDB PDB WDB YARA; do
-    # Prepare seed corpus for the type-specific fuzz targets.
-    zip ${OUT}/clamav_dbload_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/database/${type}/*
+	# Prepare seed corpus for the type-specific fuzz targets.
+	zip ${OUT}/clamav_dbload_${type}_fuzzer_seed_corpus.zip ${SRC}/clamav-fuzz-corpus/database/${type}/*
 
-    # Prepare dictionary for the type-specific fuzz targets (may not exist for all types).
-    cp ${SRC}/clamav-fuzz-corpus/database/${type}.dict ${OUT}/clamav_dbload_${type}_fuzzer.dict 2>/dev/null || :
+	# Prepare dictionary for the type-specific fuzz targets (may not exist for all types).
+	cp ${SRC}/clamav-fuzz-corpus/database/${type}.dict ${OUT}/clamav_dbload_${type}_fuzzer.dict 2>/dev/null || :
 done
diff --git a/projects/clamav/project.yaml b/projects/clamav/project.yaml
index 1f8f5d7..ab52b8d 100644
--- a/projects/clamav/project.yaml
+++ b/projects/clamav/project.yaml
@@ -1,12 +1,7 @@
 homepage: "https://www.clamav.net/"
-language: c++
 primary_contact: "clamav.fuzz@gmail.com"
 auto_ccs:
     - clamav-bugs@external.cisco.com
 sanitizers:
  - address
  - undefined
-fuzzing_engines:
- - libfuzzer
- - afl
-main_repo: 'https://github.com/Cisco-Talos/clamav-devel.git'
diff --git a/projects/clib/Dockerfile b/projects/clib/Dockerfile
deleted file mode 100644
index 92e1490..0000000
--- a/projects/clib/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake ninja libcurl4-gnutls-dev -qq
-RUN git clone https://github.com/clibs/clib
-WORKDIR $SRC/
-COPY build.sh $SRC/
diff --git a/projects/clib/build.sh b/projects/clib/build.sh
deleted file mode 100644
index c48ba9d..0000000
--- a/projects/clib/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd clib
-make -j$(nproc)
-
-sed 's/int main(int argc/int main2(int argc/g' -i ./src/clib-search.c
-sed 's/int main(int argc/int main2(int argc/g' -i ./src/clib-configure.c
-
-find . -name "*.o" -exec ar rcs fuzz_lib.a {} \;
-
-$CC $CFLAGS -Wno-unused-function -U__STRICT_ANSI__  \
-	-DHAVE_PTHREADS=1 -pthread -o fuzz_manifest.o \
-	-c test/fuzzing/fuzz_manifest.c -I./asprintf -I./deps/ \
-	-I./deps/asprintf
-
-$CC $CFLAGS $LIB_FUZZING_ENGINE fuzz_manifest.o \
-	-o $OUT/fuzz_manifest src/common/clib-package.c \
-	src/common/clib-cache.c src/clib-configure.c \
-	-I./deps/asprintf -I./deps -I./asprintf \
-	fuzz_lib.a -L/usr/lib/x86_64-linux-gnu -lcurl
-
diff --git a/projects/clib/project.yaml b/projects/clib/project.yaml
deleted file mode 100644
index bc58713..0000000
--- a/projects/clib/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/clibs/clib"
-language: c
-primary_contact: "joseph.werle@gmail.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-  - "isty001@gmail.com"
-main_repo: 'https://github.com/clibs/clib'
diff --git a/projects/clickhouse/project.yaml b/projects/clickhouse/project.yaml
deleted file mode 100644
index 9c0c7cf..0000000
--- a/projects/clickhouse/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://clickhouse.tech/"
-language: c++
-primary_contact: "clickhouse-feedback@yandex-team.com"
-auto_ccs:
- - "security@yandex-team.com"
- - "kyprizel@gmail.com"
diff --git a/projects/cmake/Dockerfile b/projects/cmake/Dockerfile
deleted file mode 100644
index 2b7c2ef..0000000
--- a/projects/cmake/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-  pkg-config libssl-dev
-RUN git clone --depth 1 https://gitlab.kitware.com/cmake/cmake CMake
-RUN git clone --depth 1 https://github.com/strongcourage/fuzzing-corpus
-WORKDIR CMake
-COPY build.sh $SRC/
diff --git a/projects/cmake/build.sh b/projects/cmake/build.sh
deleted file mode 100755
index 01bb41b..0000000
--- a/projects/cmake/build.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build CMake.
-mkdir build-dir && cd build-dir
-../bootstrap && make -j$(nproc)
-
-
-# Build fuzzers.
-cd ../Tests/Fuzzing
-$CXX $CXXFLAGS -I../../Source \
-	-I../../build-dir/Source \
-	-c xml_parser_fuzzer.cc \
-	-o xml_parser_fuzzer.o 
-
-
-export cmexpat_dir="${SRC}/CMake/build-dir/Utilities/cmexpat/CMakeFiles/cmexpat.dir/lib"
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
-		xml_parser_fuzzer.o -o $OUT/xml_parser_fuzzer \
-		../../build-dir/Source/CMakeFiles/CMakeLib.dir/cmXMLParser.cxx.o \
-		$cmexpat_dir/xmlparse.c.o \
-		$cmexpat_dir/xmlrole.c.o \
-		$cmexpat_dir/xmltok.c.o	
-
-
-# Build seed corpus
-zip $OUT/xml_parser_fuzzer_seed_corpus.zip $SRC/fuzzing-corpus/xml/test.xml
diff --git a/projects/cmake/project.yaml b/projects/cmake/project.yaml
deleted file mode 100644
index 8ab3533..0000000
--- a/projects/cmake/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://gitlab.kitware.com/cmake/cmake"
-main_repo: "https://gitlab.kitware.com/cmake/cmake"
-language: c
-primary_contact: "brad.king@kitware.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
diff --git a/projects/cmark/Dockerfile b/projects/cmark/Dockerfile
index 99d8112..ad404ac 100644
--- a/projects/cmark/Dockerfile
+++ b/projects/cmark/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER philipturnbull@github.com
 RUN apt-get update && apt-get install -y make cmake
 RUN git clone --depth 1 https://github.com/commonmark/cmark.git cmark
 WORKDIR cmark
diff --git a/projects/cmark/cmark_fuzzer.options b/projects/cmark/cmark_fuzzer.options
index 99957c1..58e0755 100644
--- a/projects/cmark/cmark_fuzzer.options
+++ b/projects/cmark/cmark_fuzzer.options
@@ -1,2 +1,3 @@
 [libfuzzer]
 dict = cmark.dict
+max_len = 256
diff --git a/projects/cmark/project.yaml b/projects/cmark/project.yaml
index 0d1a887..06a0be9 100644
--- a/projects/cmark/project.yaml
+++ b/projects/cmark/project.yaml
@@ -1,7 +1,7 @@
 homepage: "http://commonmark.org"
-language: c++
 primary_contact: "jgm@berkeley.edu"
 auto_ccs:
+  - "kivikakk@github.com"
   - "wellnhofer@aevum.de"
 fuzzing_engines:
   - libfuzzer
@@ -16,4 +16,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/commonmark/cmark.git'
diff --git a/projects/cosign/Dockerfile b/projects/cosign/Dockerfile
deleted file mode 100644
index f0282dd..0000000
--- a/projects/cosign/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/sigstore/cosign
-
-COPY build.sh $SRC/
-WORKDIR $SRC/cosign
diff --git a/projects/cosign/build.sh b/projects/cosign/build.sh
deleted file mode 100755
index 87d865d..0000000
--- a/projects/cosign/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-compile_go_fuzzer github.com/sigstore/cosign/test FuzzGetPassword fuzz_getPassword gofuzz
diff --git a/projects/cosign/project.yaml b/projects/cosign/project.yaml
deleted file mode 100644
index dc5735f..0000000
--- a/projects/cosign/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: https://sigstore.dev/
-language: go 
-primary_contact: "priyawadhwa@google.com"
-main_repo: "https://github.com/sigstore/cosign"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/cpp-httplib/Dockerfile b/projects/cpp-httplib/Dockerfile
deleted file mode 100644
index 3889e5c..0000000
--- a/projects/cpp-httplib/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-
-# Install brotli.
-RUN apt-get install -y libbrotli-dev
-
-# Install zlib.
-RUN apt-get update && apt-get install -y zlib1g-dev
-
-RUN git clone --depth 1 https://github.com/yhirose/cpp-httplib.git cpp-httplib
-
-WORKDIR cpp-httplib
-COPY build.sh $SRC/
diff --git a/projects/cpp-httplib/build.sh b/projects/cpp-httplib/build.sh
deleted file mode 100755
index 0cdbd80..0000000
--- a/projects/cpp-httplib/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build fuzz targets specified  in test/Makefile.
-cd test/fuzzing && make -j$(nproc) server_fuzzer
-
-# Copy the fuzzer executables, zip-ed corpora, option and dictionary files to $OUT.
-find . -name '*_fuzzer' -exec cp -v '{}' $OUT ';'          # Copy fuzz-target.
-find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'     # Copy dictionaries.
-find . -name '*_fuzzer_seed_corpus.zip' -exec cp -v '{}' $OUT ';' # Copy seed corpora.
diff --git a/projects/cpp-httplib/project.yaml b/projects/cpp-httplib/project.yaml
deleted file mode 100644
index 0c90fa0..0000000
--- a/projects/cpp-httplib/project.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-homepage: "https://github.com/yhirose/cpp-httplib"
-language: c++
-primary_contact: "yuji.hirose.bug@gmail.com"
-auto_ccs :
-  - "cpp-httplib-oss-fuzz@googlegroups.com"
-  - "omkarjadhav@google.com"
-  - "hlivingstone@google.com"
-  - "kalaskar@google.com"
-  - "ankitlohia@google.com"
-sanitizers:
-  - address
-  - dataflow
-  - undefined
-  - memory
-main_repo: 'https://github.com/yhirose/cpp-httplib.git'
diff --git a/projects/cppcheck/Dockerfile b/projects/cppcheck/Dockerfile
index 5bec928..2686254 100644
--- a/projects/cppcheck/Dockerfile
+++ b/projects/cppcheck/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER daniel.marjamaki@gmail.com
 
 RUN git clone https://github.com/danmar/cppcheck.git
 
diff --git a/projects/cppcheck/project.yaml b/projects/cppcheck/project.yaml
index 97f737d..09fc7aa 100644
--- a/projects/cppcheck/project.yaml
+++ b/projects/cppcheck/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://cppcheck.sourceforge.net"
-language: c++
 primary_contact: "daniel.marjamaki@gmail.com"
 auto_ccs:
   - "daniel.marjamaki@gmail.com"
@@ -7,4 +6,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/danmar/cppcheck.git'
diff --git a/projects/cpython3/Dockerfile b/projects/cpython3/Dockerfile
index 6ca60d4..154076b 100644
--- a/projects/cpython3/Dockerfile
+++ b/projects/cpython3/Dockerfile
@@ -1,4 +1,5 @@
 FROM gcr.io/oss-fuzz-base/base-builder
+LABEL maintainer="aaskar@google.com; ammar@ammaraskar.com"
 
 RUN apt-get update
 RUN apt-get install -y build-essential libncursesw5-dev \
diff --git a/projects/cpython3/project.yaml b/projects/cpython3/project.yaml
index 7edfd24..25ec319 100644
--- a/projects/cpython3/project.yaml
+++ b/projects/cpython3/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://python.org/"
-language: c++
 primary_contact: "gps@google.com"
 auto_ccs:
  - "alex.gaynor@gmail.com"
diff --git a/projects/cras/Dockerfile b/projects/cras/Dockerfile
index 71b2b12..e6cce9a 100644
--- a/projects/cras/Dockerfile
+++ b/projects/cras/Dockerfile
@@ -2,29 +2,16 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 #
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
 # Defines a docker image that can build cras fuzzers.
 #
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dgreid@chromium.org
 
 RUN apt-get -y update && \
       apt-get install -y \
       automake \
       build-essential \
+      cargo \
       cmake \
       g++ \
       git \
@@ -36,7 +23,6 @@
       libsbc-dev \
       libsndfile-dev \
       libspeexdsp-dev \
-      libsystemd-dev \
       libtool \
       libudev-dev \
       wget \
@@ -50,14 +36,11 @@
       chmod 644 /usr/local/include/dictionary.h /usr/local/include/iniparser.h && \
       chmod 644 /usr/local/lib/libiniparser.a && \
       chmod 755 /usr/local/lib/libiniparser.so.*
-
-RUN cd /tmp && git clone https://github.com/google/googletest.git -b v1.8.x && \
-      cd googletest && \
-      mkdir build && cd build && \
-      cmake .. -DBUILD_SHARED_LIBS=ON \
-         -DINSTALL_GTEST=ON \
-         -DCMAKE_INSTALL_PREFIX:PATH=/usr && \
-      make && make install
+RUN cd /usr/src/gtest && \
+      cmake . && \
+      make && \
+      chmod 644 *.a && \
+      cp *.a /usr/local/lib
 
 # Need to build and install alsa so there is a static lib.
 RUN mkdir -p /tmp/alsa-build && cd /tmp/alsa-build && \
diff --git a/projects/cras/build.sh b/projects/cras/build.sh
index 84f50b1..1ade076 100755
--- a/projects/cras/build.sh
+++ b/projects/cras/build.sh
@@ -3,44 +3,22 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 #
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
 # Builds fuzzers from within a container into /out/ directory.
 # Expects /src/cras to contain a cras checkout.
 
 cd ${SRC}/adhd/cras
 ./git_prepare.sh
-./configure
+./configure --disable-dbus --disable-webrtc-apm
+cargo build --release --manifest-path $SRC/adhd/cras/src/server/rust/Cargo.toml && \
+  cp $SRC/adhd/cras/src/server/rust/target/release/libcras_rust.a /usr/local/lib
 make -j$(nproc)
-cp ${SRC}/adhd/cras/src/server/rust/target/release/libcras_rust.a /usr/local/lib
 
-CRAS_FUZZERS="rclient_message cras_hfp_slc"
-
-for fuzzer in ${CRAS_FUZZERS};
-do
 $CXX $CXXFLAGS $FUZZER_LDFLAGS \
-  ${SRC}/adhd/cras/src/fuzz/${fuzzer}.cc -o ${OUT}/${fuzzer} \
+  ${SRC}/adhd/cras/src/fuzz/rclient_message.cc -o ${OUT}/rclient_message \
   -I ${SRC}/adhd/cras/src/server \
   -I ${SRC}/adhd/cras/src/common \
-  $(pkg-config --cflags dbus-1) \
   ${SRC}/adhd/cras/src/.libs/libcrasserver.a \
-  -lcras_rust -lpthread -lrt -ludev -ldl -lm -lsystemd \
+  -lcras_rust -lpthread -lrt -ludev -ldl -lm \
   $LIB_FUZZING_ENGINE \
-  -Wl,-Bstatic -liniparser -lasound -lspeexdsp -ldbus-1 -lsbc -Wl,-Bdynamic
-done
-
+  -Wl,-Bstatic -liniparser -lasound -lspeexdsp -Wl,-Bdynamic
 zip -j ${OUT}/rclient_message_corpus.zip ${SRC}/adhd/cras/src/fuzz/corpus/*
-cp "${SRC}/adhd/cras/src/fuzz/cras_hfp_slc.dict" "${OUT}/cras_hfp_slc.dict"
diff --git a/projects/cras/project.yaml b/projects/cras/project.yaml
index 330b025..1f2ec11 100644
--- a/projects/cras/project.yaml
+++ b/projects/cras/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.chromium.org"
-language: c++
 primary_contact: "dgreid@chromium.org"
 auto_ccs:
   - "hychao@chromium.org"
@@ -9,4 +8,3 @@
   - "enshuo@chromium.org"
   - "tzungbi@chromium.org"
   - "cujomalainey@chromium.org"
-main_repo: 'https://chromium.googlesource.com/chromiumos/third_party/adhd'
diff --git a/projects/cryptofuzz/Dockerfile b/projects/cryptofuzz/Dockerfile
index 7ed5d42..1629cec 100644
--- a/projects/cryptofuzz/Dockerfile
+++ b/projects/cryptofuzz/Dockerfile
@@ -15,45 +15,32 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 
-RUN apt-get update && \
-    apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \
-    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add - && \
-    apt-add-repository 'deb https://apt.kitware.com/ubuntu/ xenial main' && \
-    apt-get update && \
-    apt-get install -y software-properties-common python-software-properties make autoconf automake libtool build-essential cmake mercurial gyp ninja-build zlib1g-dev libsqlite3-dev bison flex texinfo
+RUN apt-get update && apt-get install -y software-properties-common python-software-properties make autoconf automake libtool build-essential cmake libboost-all-dev wget mercurial gyp ninja-build zlib1g-dev libsqlite3-dev
+
+# BoringSSL needs Go to build
+RUN add-apt-repository -y ppa:gophers/archive && apt-get update && apt-get install -y golang-1.9-go
+RUN ln -s /usr/lib/go-1.9/bin/go /usr/bin/go
 
 RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
 RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz-corpora
 RUN git clone --depth 1 https://github.com/openssl/openssl
+
 RUN git clone --depth 1 https://boringssl.googlesource.com/boringssl
 RUN git clone --depth 1 https://github.com/libressl-portable/portable libressl
 RUN cd $SRC/libressl && ./update.sh
 RUN git clone --depth 1 https://github.com/weidai11/cryptopp/
-RUN git clone --depth 1 git://git.gnupg.org/libgcrypt.git
+RUN git clone --depth 1 https://dev.gnupg.org/source/libgcrypt.git
 RUN wget https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.36.tar.bz2
 RUN git clone --depth 1 -b oss-fuzz https://github.com/project-everest/hacl-star evercrypt
 RUN git clone --depth 1 https://github.com/google/cityhash.git
+RUN git clone --depth 1 https://github.com/golang/go
 RUN git clone --depth 1 https://github.com/randombit/botan.git
 RUN git clone --depth 1 https://github.com/wolfSSL/wolfssl.git
-RUN git clone --depth 1 https://github.com/ARMmbed/mbedtls.git
+RUN git clone --depth 1 https://github.com/ARMmbed/mbed-crypto.git
 RUN hg clone https://hg.mozilla.org/projects/nspr
 RUN hg clone https://hg.mozilla.org/projects/nss
-RUN git clone --depth 1 https://github.com/jedisct1/libsodium.git
-RUN git clone --depth 1 https://github.com/libtom/libtomcrypt.git
-RUN git clone --depth 1 https://github.com/microsoft/SymCrypt.git
-RUN git clone --depth 1 https://git.lysator.liu.se/nettle/nettle
-RUN hg clone https://gmplib.org/repo/gmp/ libgmp/
-RUN wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.0.tar.gz
-RUN git clone --depth 1 https://github.com/indutny/bn.js.git
-RUN git clone --depth 1 https://github.com/MikeMcl/bignumber.js.git
-RUN git clone --depth 1 https://github.com/guidovranken/libfuzzer-js.git
-RUN git clone --depth 1 https://github.com/brix/crypto-js.git
-RUN git clone --depth 1 https://github.com/LoupVaillant/Monocypher.git
-RUN git clone --depth 1 https://github.com/trezor/trezor-firmware.git
-RUN git clone --depth 1 https://github.com/Cyan4973/xxHash.git
 RUN apt-get remove -y libunwind8
-RUN apt-get install -y libssl-dev
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
 
-COPY build.sh xxd.c $SRC/
+COPY build.sh $SRC/
diff --git a/projects/cryptofuzz/build.sh b/projects/cryptofuzz/build.sh
index 9aa3c94..f2c0501 100755
--- a/projects/cryptofuzz/build.sh
+++ b/projects/cryptofuzz/build.sh
@@ -18,23 +18,6 @@
 # TODO(metzman): Switch this to LIB_FUZZING_ENGINE when it works.
 # https://github.com/google/oss-fuzz/issues/2336
 
-export GO111MODULE=off
-
-# Compile xxd
-$CC $SRC/xxd.c -o /usr/bin/xxd
-
-# Copy the upstream checkout of xxHash over the old version
-rm -rf $SRC/cryptofuzz/modules/reference/xxHash/
-cp -R $SRC/xxHash/ $SRC/cryptofuzz/modules/reference/
-
-# Install Boost headers
-cd $SRC/
-tar jxf boost_1_74_0.tar.bz2
-cd boost_1_74_0/
-CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-CFLAGS="" CXXFLAGS="" ./b2 headers
-cp -R boost/ /usr/include/
-
 export LINK_FLAGS=""
 export INCLUDE_PATH_FLAGS=""
 
@@ -42,6 +25,24 @@
 cd $SRC/cryptofuzz
 python gen_repository.py
 
+if [[ $CFLAGS = *-m32* ]]
+then
+    export GOARCH=386
+    export CGO_ENABLED=1
+fi
+
+export GO111MODULE=off
+cd $SRC/go/src
+./make.bash
+export GOROOT=$(realpath $SRC/go)
+export GOPATH=$GOROOT/packages
+mkdir $GOPATH
+export PATH=$GOROOT/bin:$PATH
+export PATH=$GOROOT/packages/bin:$PATH
+
+apt-get remove golang-1.9-go -y
+rm /usr/bin/go
+
 go get golang.org/x/crypto/blake2b
 go get golang.org/x/crypto/blake2s
 go get golang.org/x/crypto/md4
@@ -59,33 +60,6 @@
     export CXXFLAGS="$CXXFLAGS -DMSAN"
 fi
 
-if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
-then
-    # Compile libfuzzer-js (required for all JavaScript libraries)
-    export LIBFUZZER_A_PATH="$LIB_FUZZING_ENGINE"
-    cd $SRC/libfuzzer-js/
-    make
-    export LIBFUZZER_JS_PATH=$(realpath .)
-    export LINK_FLAGS="$LINK_FLAGS $LIBFUZZER_JS_PATH/js.o $LIBFUZZER_JS_PATH/quickjs/libquickjs.a"
-
-    # Compile bn.js module
-    export BN_JS_PATH="$SRC/bn.js/lib/bn.js"
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BN_JS"
-    cd $SRC/cryptofuzz/modules/bn.js/
-    make
-
-    # Compile bignumber.js module
-    export BIGNUMBER_JS_PATH="$SRC/bignumber.js/bignumber.js"
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BIGNUMBER_JS"
-    cd $SRC/cryptofuzz/modules/bignumber.js/
-    make
-
-    export CRYPTO_JS_PATH="$SRC/crypto-js/"
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_CRYPTO_JS"
-    cd $SRC/cryptofuzz/modules/crypto-js/
-    make
-fi
-
 # Compile NSS
 if [[ $CFLAGS != *-m32* ]]
 then
@@ -93,9 +67,15 @@
     mv $SRC/nss $SRC/nss-nspr/
     mv $SRC/nspr $SRC/nss-nspr/
     cd $SRC/nss-nspr/
-
-    CXX="$CXX -stdlib=libc++" LDFLAGS="$CFLAGS" nss/build.sh --enable-fips --static --disable-tests --fuzz=oss
-
+    if [[ $CFLAGS = *sanitize=address* ]]
+    then
+        CFLAGS="" CXXFLAGS="" nss/build.sh --asan --static
+    elif [[ $CFLAGS = *sanitize=memory* ]]
+    then
+        CFLAGS="" CXXFLAGS="" nss/build.sh --msan --static
+    else
+        CFLAGS="" CXXFLAGS="" nss/build.sh --ubsan --static
+    fi
     export NSS_NSPR_PATH=$(realpath $SRC/nss-nspr/)
     export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NSS"
     export LINK_FLAGS="$LINK_FLAGS -lsqlite3"
@@ -105,125 +85,6 @@
     make -B
 fi
 
-# Compile Monocypher
-cd $SRC/Monocypher/
-make CC="$CC" CFLAGS="$CFLAGS"
-export LIBMONOCYPHER_A_PATH=$(realpath lib/libmonocypher.a)
-export MONOCYPHER_INCLUDE_PATH=$(realpath src/)
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_MONOCYPHER"
-
-# Compile Cryptofuzz monocypher module
-cd $SRC/cryptofuzz/modules/monocypher
-make -B
-
-# Rename blake2b_* functions to avoid symbol collisions with other libraries
-cd $SRC/trezor-firmware/crypto
-sed -i "s/\<blake2b_\([A-Za-z_]\)/trezor_blake2b_\1/g" *.c *.h
-sed -i 's/\<blake2b(/trezor_blake2b(/g' *.c *.h
-
-# Compile Cryptofuzz trezor module
-export TREZOR_FIRMWARE_PATH=$(realpath $SRC/trezor-firmware)
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_TREZOR_FIRMWARE"
-cd $SRC/cryptofuzz/modules/trezor
-make -B
-
-# Compile libtomcrypt
-cd $SRC/libtomcrypt
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBTOMCRYPT"
-    export LIBTOMCRYPT_INCLUDE_PATH=$(realpath src/headers/)
-    export LIBTOMCRYPT_A_PATH=$(realpath libtomcrypt.a)
-
-    # Compile Cryptofuzz libtomcrypt module
-    cd $SRC/cryptofuzz/modules/libtomcrypt
-    make -B
-fi
-
-# Compile SymCrypt
-cd $SRC/SymCrypt/
-if [[ $CFLAGS != *sanitize=array-bounds* ]]
-then
-    # Unittests don't build with clang and are not needed anyway
-    sed -i "s/^add_subdirectory(unittest)$//g" CMakeLists.txt
-
-    mkdir b/
-    cd b/
-    cmake ../
-    make -j$(nproc)
-
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_SYMCRYPT"
-    export SYMCRYPT_INCLUDE_PATH=$(realpath ../inc/)
-    export LIBSYMCRYPT_COMMON_A_PATH=$(realpath lib/x86_64/Generic/libsymcrypt_common.a)
-    export SYMCRYPT_GENERIC_A_PATH=$(realpath lib/x86_64/Generic/symcrypt_generic.a)
-
-    # Compile Cryptofuzz SymCrypt module
-    cd $SRC/cryptofuzz/modules/symcrypt
-    make -B
-fi
-
-# Compile Nettle
-mkdir $SRC/nettle-install/
-cd $SRC/nettle/
-bash .bootstrap
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    ./configure --disable-documentation --disable-openssl --prefix=`realpath ../nettle-install`
-else
-    ./configure --disable-documentation --disable-openssl --disable-assembler --prefix=`realpath ../nettle-install`
-fi
-make -j$(nproc)
-make install
-if [[ $CFLAGS != *-m32* ]]
-then
-export LIBNETTLE_A_PATH=`realpath ../nettle-install/lib/libnettle.a`
-export LIBHOGWEED_A_PATH=`realpath ../nettle-install/lib/libhogweed.a`
-else
-export LIBNETTLE_A_PATH=`realpath ../nettle-install/lib32/libnettle.a`
-export LIBHOGWEED_A_PATH=`realpath ../nettle-install/lib32/libhogweed.a`
-fi
-export NETTLE_INCLUDE_PATH=`realpath ../nettle-install/include`
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NETTLE"
-# Compile Cryptofuzz Nettle module
-cd $SRC/cryptofuzz/modules/nettle
-make -B
-
-# Compile libgmp
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    cd $SRC/libgmp/
-    autoreconf -ivf
-    if [[ $CFLAGS != *-m32* ]]
-    then
-        ./configure --enable-maintainer-mode
-    else
-        setarch i386 ./configure --enable-maintainer-mode
-    fi
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBGMP"
-    export LIBGMP_INCLUDE_PATH=$(realpath .)
-    export LIBGMP_A_PATH=$(realpath .libs/libgmp.a)
-    # Compile Cryptofuzz libgmp module
-    cd $SRC/cryptofuzz/modules/libgmp
-    make -B
-fi
-
-# Compile mpdecimal
-cd $SRC/
-tar zxf mpdecimal-2.5.0.tar.gz
-cd mpdecimal-2.5.0/
-./configure
-cd libmpdec/
-make libmpdec.a -j$(nproc)
-cd ../
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_MPDECIMAL"
-export LIBMPDEC_A_PATH=$(realpath libmpdec/libmpdec.a)
-export LIBMPDEC_INCLUDE_PATH=$(realpath libmpdec/)
-# Compile Cryptofuzz mpdecimal module
-cd $SRC/cryptofuzz/modules/mpdecimal
-make -B
-
 # Compile Cityhash
 cd $SRC/cityhash
 if [[ $CFLAGS != *-m32* ]]
@@ -238,33 +99,25 @@
 export CRYPTOFUZZ_REFERENCE_CITY_O_PATH="$SRC/cityhash/src/city.o"
 
 ##############################################################################
-# Compile cryptopp
-cd $SRC/cryptopp
 if [[ $CFLAGS != *sanitize=memory* ]]
 then
-    make libcryptopp.a -j$(nproc) >/dev/null 2>&1
-else
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOPP_DISABLE_ASM=1"
-    make libcryptopp.a -j$(nproc) >/dev/null 2>&1
+    # Compile cryptopp (with assembly)
+    cd $SRC/cryptopp
+    make -j$(nproc) >/dev/null 2>&1
+
+    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_CRYPTOPP"
+    export LIBCRYPTOPP_A_PATH="$SRC/cryptopp/libcryptopp.a"
+    export CRYPTOPP_INCLUDE_PATH="$SRC/cryptopp"
+
+    # Compile Cryptofuzz cryptopp (with assembly) module
+    cd $SRC/cryptofuzz/modules/cryptopp
+    make -B
 fi
 
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_CRYPTOPP"
-export LIBCRYPTOPP_A_PATH="$SRC/cryptopp/libcryptopp.a"
-export CRYPTOPP_INCLUDE_PATH="$SRC/cryptopp"
-
-# Compile Cryptofuzz cryptopp module
-cd $SRC/cryptofuzz/modules/cryptopp
-make -B
-
 ##############################################################################
-# Compile mbed TLS
-cd $SRC/mbedtls/
+# Compile mbed crypto
+cd $SRC/mbed-crypto/
 scripts/config.pl set MBEDTLS_PLATFORM_MEMORY
-scripts/config.pl set MBEDTLS_CMAC_C
-scripts/config.pl set MBEDTLS_NIST_KW_C
-scripts/config.pl set MBEDTLS_ARIA_C
-scripts/config.pl set MBEDTLS_MD2_C
-scripts/config.pl set MBEDTLS_MD4_C
 if [[ $CFLAGS == *sanitize=memory* ]]
 then
     scripts/config.pl unset MBEDTLS_HAVE_ASM
@@ -275,8 +128,8 @@
 cd build/
 cmake .. -DENABLE_PROGRAMS=0 -DENABLE_TESTING=0
 make -j$(nproc) >/dev/null 2>&1
-export MBEDTLS_LIBMBEDCRYPTO_A_PATH="$SRC/mbedtls/build/library/libmbedcrypto.a"
-export MBEDTLS_INCLUDE_PATH="$SRC/mbedtls/include"
+export MBEDTLS_LIBMBEDCRYPTO_A_PATH="$SRC/mbed-crypto/build/library/libmbedcrypto.a"
+export MBEDTLS_INCLUDE_PATH="$SRC/mbed-crypto/include"
 export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_MBEDTLS"
 # Compile Cryptofuzz mbed crypto module
 cd $SRC/cryptofuzz/modules/mbedtls
@@ -287,14 +140,14 @@
 cd $SRC/botan
 if [[ $CFLAGS != *-m32* ]]
 then
-    ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
+    ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator
 else
-    ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
+    ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator
 fi
 make -j$(nproc)
 
 export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BOTAN"
-export LIBBOTAN_A_PATH="$SRC/botan/libbotan-3.a"
+export LIBBOTAN_A_PATH="$SRC/botan/libbotan-2.a"
 export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"
 
 # Compile Cryptofuzz Botan module
@@ -318,14 +171,14 @@
     make install
     export LINK_FLAGS="$LINK_FLAGS $SRC/libgpg-error-1.36/src/.libs/libgpg-error.a"
 
-    # Compile libgcrypt
+    # Compile libgcrypt (with assembly)
     cd $SRC/libgcrypt
     autoreconf -ivf
-    if [[ $CFLAGS = *-m32* ]]
+    if [[ $CFLAGS != *-m32* ]]
     then
-        ./configure --enable-static --disable-doc --host=i386
-    else
         ./configure --enable-static --disable-doc
+    else
+        ./configure --enable-static --disable-doc --host=i386
     fi
     make -j$(nproc) >/dev/null 2>&1
 
@@ -333,29 +186,33 @@
     export LIBGCRYPT_A_PATH="$SRC/libgcrypt/src/.libs/libgcrypt.a"
     export LIBGCRYPT_INCLUDE_PATH="$SRC/libgcrypt/src"
 
-    # Compile Cryptofuzz libgcrypt module
+    # Compile Cryptofuzz libgcrypt (with assembly) module
     cd $SRC/cryptofuzz/modules/libgcrypt
     make -B
 fi
 
-# Compile libsodium
-cd $SRC/libsodium
-autoreconf -ivf
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    ./configure
-else
-    ./configure --disable-asm
-fi
-make -j$(nproc) >/dev/null 2>&1
-
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBSODIUM"
-export LIBSODIUM_A_PATH="$SRC/libsodium/src/libsodium/.libs/libsodium.a"
-export LIBSODIUM_INCLUDE_PATH="$SRC/libsodium/src/libsodium/include"
-
-# Compile Cryptofuzz libsodium module
-cd $SRC/cryptofuzz/modules/libsodium
-make -B
+##############################################################################
+# libsodium is currently disabled due to crashes whose cause
+# is not entirely clear.
+# It will be enabled again once the problem has been resolved.
+# See also: https://github.com/jedisct1/libsodium/issues/859
+#
+#if [[ $CFLAGS != *sanitize=memory* ]]
+#then
+#    # Compile libsodium (with assembly)
+#    cd $SRC/libsodium
+#    autoreconf -ivf
+#    ./configure
+#    make -j$(nproc) >/dev/null 2>&1
+#
+#    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBSODIUM"
+#    export LIBSODIUM_A_PATH="$SRC/libsodium/src/libsodium/.libs/libsodium.a"
+#    export LIBSODIUM_INCLUDE_PATH="$SRC/libsodium/src/libsodium/include"
+#
+#    # Compile Cryptofuzz libsodium (with assembly) module
+#    cd $SRC/cryptofuzz/modules/libsodium
+#    make -B
+#fi
 
 if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
 then
@@ -425,24 +282,12 @@
     LINK_FLAGS=${LINK_FLAGS//"-lsqlite3"/}
 fi
 
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    # libtomcrypt can only be compiled with NSS, because OpenSSL, LibreSSL and
-    # BoringSSL have symbol collisions with libtomcrypt.
-    #
-    # So, now that NSS-based Cryptofuzz has been compiled, remove libtomcrypt
-    export CXXFLAGS=${CXXFLAGS/-DCRYPTOFUZZ_LIBTOMCRYPT/}
-    rm -rf "$LIBTOMCRYPT_A_PATH"
-fi
-
 ##############################################################################
 # Compile wolfCrypt
 cd $SRC/wolfssl
-# Enable additional wolfCrypt features which cannot be activated through arguments to ./configure
-export CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP"
 autoreconf -ivf
 
-export WOLFCRYPT_CONFIGURE_PARAMS="--enable-static --enable-md2 --enable-md4 --enable-ripemd --enable-blake2 --enable-blake2s --enable-pwdbased --enable-scrypt --enable-hkdf --enable-cmac --enable-arc4 --enable-camellia --enable-rabbit --enable-aesccm --enable-aesctr --enable-hc128 --enable-xts --enable-des3 --enable-idea --enable-x963kdf --enable-harden --enable-aescfb --enable-aesofb --enable-aeskeywrap --enable-shake256 --enable-curve25519 --enable-curve448 --disable-crypttests --disable-examples --enable-keygen --enable-compkey --enable-ed448 --enable-ed25519 --enable-ecccustcurves --enable-xchacha --enable-cryptocb --enable-eccencrypt"
+export WOLFCRYPT_CONFIGURE_PARAMS="--enable-static --enable-md2 --enable-md4 --enable-ripemd --enable-blake2 --enable-blake2s --enable-pwdbased --enable-scrypt --enable-hkdf --enable-cmac --enable-arc4 --enable-camellia --enable-rabbit --enable-aesccm --enable-aesctr --enable-hc128 --enable-xts --enable-des3 --enable-idea --enable-x963kdf --enable-harden"
 
 if [[ $CFLAGS = *sanitize=memory* ]]
 then
@@ -467,18 +312,13 @@
 
 
 ##############################################################################
-if [[ $CFLAGS != *sanitize=memory* ]]
+if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
 then
     # Compile LibreSSL (with assembly)
     cd $SRC/libressl
     rm -rf build ; mkdir build
     cd build
-    if [[ $CFLAGS != *-m32* ]]
-    then
-        cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" ..
-    else
-        setarch i386 cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" ..
-    fi
+    cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" ..
     make -j$(nproc) crypto >/dev/null 2>&1
 
     # Compile Cryptofuzz LibreSSL (with assembly) module
@@ -597,18 +437,13 @@
 export CXXFLAGS="$SAVE_CXXFLAGS"
 
 ##############################################################################
-if [[ $CFLAGS != *sanitize=memory* ]]
+if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
 then
     # Compile BoringSSL (with assembly)
     cd $SRC/boringssl
     rm -rf build ; mkdir build
     cd build
-    if [[ $CFLAGS = *-m32* ]]
-    then
-        setarch i386 cmake -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DBORINGSSL_ALLOW_CXX_RUNTIME=1 -DCMAKE_ASM_FLAGS="-m32" ..
-    else
-        cmake -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DBORINGSSL_ALLOW_CXX_RUNTIME=1 ..
-    fi
+    cmake -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DBORINGSSL_ALLOW_CXX_RUNTIME=1 ..
     make -j$(nproc) crypto >/dev/null 2>&1
 
     # Compile Cryptofuzz BoringSSL (with assembly) module
@@ -655,4 +490,3 @@
 cp $SRC/cryptofuzz/cryptofuzz-dict.txt $OUT/cryptofuzz-boringssl-noasm.dict
 # Copy seed corpus
 cp $SRC/cryptofuzz-corpora/boringssl_latest.zip $OUT/cryptofuzz-boringssl-noasm_seed_corpus.zip
-
diff --git a/projects/cryptofuzz/project.yaml b/projects/cryptofuzz/project.yaml
index 59c3ac4..9ac4f6a 100644
--- a/projects/cryptofuzz/project.yaml
+++ b/projects/cryptofuzz/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/guidovranken/cryptofuzz"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
     - "openssl-security@openssl.org"
@@ -23,16 +22,14 @@
     - "david@wolfssl.com"
     - "kaleb@wolfssl.com"
     - "jacob@wolfssl.com"
+    - "jjones@mozilla.com"
     - "sledru@mozilla.com"
-    - "bbeurdouche@mozilla.com"
+    - "kjacobs@mozilla.com"
     - "matthias.st.pierre@gmail.com"
-    - "kaleb.himes@gmail.com"
-    - "polubelovam@gmail.com"
-    - "mbed-tls-security@lists.trustedfirmware.org"
 sanitizers:
  - address
  - undefined
  - memory
 architectures:
  - x86_64
-main_repo: 'https://github.com/guidovranken/cryptofuzz'
+ - i386
diff --git a/projects/cryptofuzz/xxd.c b/projects/cryptofuzz/xxd.c
deleted file mode 100644
index f76adaa..0000000
--- a/projects/cryptofuzz/xxd.c
+++ /dev/null
@@ -1,868 +0,0 @@
-/* xxd: my hexdump facility. jw
- *
- *  2.10.90 changed to word output
- *  3.03.93 new indent style, dumb bug inserted and fixed.
- *	    -c option, mls
- * 26.04.94 better option parser, -ps, -l, -s added.
- *  1.07.94 -r badly needs - as input file.  Per default autoskip over
- *	       consecutive lines of zeroes, as unix od does.
- *	    -a shows them too.
- *	    -i dump as c-style #include "file.h"
- *  1.11.95 if "xxd -i" knows the filename, an 'unsigned char filename_bits[]'
- *	    array is written in correct c-syntax.
- *	    -s improved, now defaults to absolute seek, relative requires a '+'.
- *	    -r improved, now -r -s -0x... is supported.
- *	       change/suppress leading '\0' bytes.
- *	    -l n improved: stops exactly after n bytes.
- *	    -r improved, better handling of partial lines with trailing garbage.
- *	    -r improved, now -r -p works again!
- *	    -r improved, less flushing, much faster now! (that was silly)
- *  3.04.96 Per repeated request of a single person: autoskip defaults to off.
- * 15.05.96 -v added. They want to know the version.
- *	    -a fixed, to show last line inf file ends in all zeros.
- *	    -u added: Print upper case hex-letters, as preferred by unix bc.
- *	    -h added to usage message. Usage message extended.
- *	    Now using outfile if specified even in normal mode, aehem.
- *	    No longer mixing of ints and longs. May help doze people.
- *	    Added binify ioctl for same reason. (Enough Doze stress for 1996!)
- * 16.05.96 -p improved, removed occasional superfluous linefeed.
- * 20.05.96 -l 0 fixed. tried to read anyway.
- * 21.05.96 -i fixed. now honours -u, and prepends __ to numeric filenames.
- *	    compile -DWIN32 for NT or W95. George V. Reilly, * -v improved :-)
- *	    support --gnuish-longhorn-options
- * 25.05.96 MAC support added: CodeWarrior already uses ``outline'' in Types.h
- *	    which is included by MacHeaders (Axel Kielhorn). Renamed to
- *	    xxdline().
- *  7.06.96 -i printed 'int' instead of 'char'. *blush*
- *	    added Bram's OS2 ifdefs...
- * 18.07.96 gcc -Wall @ SunOS4 is now slient.
- *	    Added osver for MSDOS/DJGPP/WIN32.
- * 29.08.96 Added size_t to strncmp() for Amiga.
- * 24.03.97 Windows NT support (Phil Hanna). Clean exit for Amiga WB (Bram)
- * 02.04.97 Added -E option, to have EBCDIC translation instead of ASCII
- *	    (azc10@yahoo.com)
- * 22.05.97 added -g (group octets) option (jcook@namerica.kla.com).
- * 23.09.98 nasty -p -r misfeature fixed: slightly wrong output, when -c was
- *	    missing or wrong.
- * 26.09.98 Fixed: 'xxd -i infile outfile' did not truncate outfile.
- * 27.10.98 Fixed: -g option parser required blank.
- *	    option -b added: 01000101 binary output in normal format.
- * 16.05.00 Added VAXC changes by Stephen P. Wall
- * 16.05.00 Improved MMS file and merge for VMS by Zoltan Arpadffy
- * 2011 March  Better error handling by Florian Zumbiehl.
- * 2011 April  Formatting by Bram Moolenaar
- * 08.06.2013  Little-endian hexdump (-e) and offset (-o) by Vadim Vygonets.
- *
- * (c) 1990-1998 by Juergen Weigert (jnweiger@informatik.uni-erlangen.de)
- *
- * I hereby grant permission to distribute and use xxd
- * under X11-MIT or GPL-2.0 (at the user's choice).
- *
- * Small changes made afterwards by Bram Moolenaar et al.
- *
- * Distribute freely and credit me,
- * make money and share with me,
- * lose money and don't ask me.
- */
-
-/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
-#if _MSC_VER >= 1400
-# define _CRT_SECURE_NO_DEPRECATE
-# define _CRT_NONSTDC_NO_DEPRECATE
-#endif
-#if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
-# define CYGWIN
-#endif
-
-#include <stdio.h>
-#ifdef VAXC
-# include <file.h>
-#else
-# include <fcntl.h>
-#endif
-#if defined(WIN32) || defined(__BORLANDC__) || defined(CYGWIN)
-# include <io.h>	/* for setmode() */
-#else
-# ifdef UNIX
-#  include <unistd.h>
-# endif
-#endif
-#include <stdlib.h>
-#include <string.h>	/* for strncmp() */
-#include <ctype.h>	/* for isalnum() */
-#if __MWERKS__ && !defined(BEBOX)
-# include <unix.h>	/* for fdopen() on MAC */
-#endif
-
-#if defined(__BORLANDC__) && __BORLANDC__ <= 0x0410 && !defined(fileno)
-/* Missing define and prototype grabbed from the BC 4.0 <stdio.h> */
-# define fileno(f)       ((f)->fd)
-FILE   _FAR *_Cdecl _FARFUNC fdopen(int __handle, char _FAR *__type);
-#endif
-
-
-/*  This corrects the problem of missing prototypes for certain functions
- *  in some GNU installations (e.g. SunOS 4.1.x).
- *  Darren Hiebert <darren@hmi.com> (sparc-sun-sunos4.1.3_U1/2.7.2.2)
- */
-#if defined(__GNUC__) && defined(__STDC__)
-# ifndef __USE_FIXED_PROTOTYPES__
-#  define __USE_FIXED_PROTOTYPES__
-# endif
-#endif
-
-#ifndef __USE_FIXED_PROTOTYPES__
-/*
- * This is historic and works only if the compiler really has no prototypes:
- *
- * Include prototypes for Sun OS 4.x, when using an ANSI compiler.
- * FILE is defined on OS 4.x, not on 5.x (Solaris).
- * if __SVR4 is defined (some Solaris versions), don't include this.
- */
-#if defined(sun) && defined(FILE) && !defined(__SVR4) && defined(__STDC__)
-#  define __P(a) a
-/* excerpt from my sun_stdlib.h */
-extern int fprintf __P((FILE *, char *, ...));
-extern int fputs   __P((char *, FILE *));
-extern int _flsbuf __P((unsigned char, FILE *));
-extern int _filbuf __P((FILE *));
-extern int fflush  __P((FILE *));
-extern int fclose  __P((FILE *));
-extern int fseek   __P((FILE *, long, int));
-extern int rewind  __P((FILE *));
-
-extern void perror __P((char *));
-# endif
-#endif
-
-extern long int strtol();
-extern long int ftell();
-
-char version[] = "xxd V1.10 27oct98 by Juergen Weigert";
-#ifdef WIN32
-char osver[] = " (Win32)";
-#else
-char osver[] = "";
-#endif
-
-#if defined(WIN32)
-# define BIN_READ(yes)  ((yes) ? "rb" : "rt")
-# define BIN_WRITE(yes) ((yes) ? "wb" : "wt")
-# define BIN_CREAT(yes) ((yes) ? (O_CREAT|O_BINARY) : O_CREAT)
-# define BIN_ASSIGN(fp, yes) setmode(fileno(fp), (yes) ? O_BINARY : O_TEXT)
-# define PATH_SEP '\\'
-#elif defined(CYGWIN)
-# define BIN_READ(yes)  ((yes) ? "rb" : "rt")
-# define BIN_WRITE(yes) ((yes) ? "wb" : "w")
-# define BIN_CREAT(yes) ((yes) ? (O_CREAT|O_BINARY) : O_CREAT)
-# define BIN_ASSIGN(fp, yes) ((yes) ? (void) setmode(fileno(fp), O_BINARY) : (void) (fp))
-# define PATH_SEP '/'
-#else
-# ifdef VMS
-#  define BIN_READ(dummy)  "r"
-#  define BIN_WRITE(dummy) "w"
-#  define BIN_CREAT(dummy) O_CREAT
-#  define BIN_ASSIGN(fp, dummy) fp
-#  define PATH_SEP ']'
-#  define FILE_SEP '.'
-# else
-#  define BIN_READ(dummy)  "r"
-#  define BIN_WRITE(dummy) "w"
-#  define BIN_CREAT(dummy) O_CREAT
-#  define BIN_ASSIGN(fp, dummy) fp
-#  define PATH_SEP '/'
-# endif
-#endif
-
-/* open has only to arguments on the Mac */
-#if __MWERKS__
-# define OPEN(name, mode, umask) open(name, mode)
-#else
-# define OPEN(name, mode, umask) open(name, mode, umask)
-#endif
-
-#ifdef AMIGA
-# define STRNCMP(s1, s2, l) strncmp(s1, s2, (size_t)l)
-#else
-# define STRNCMP(s1, s2, l) strncmp(s1, s2, l)
-#endif
-
-#ifndef __P
-# if defined(__STDC__) || defined(WIN32) || defined(__BORLANDC__)
-#  define __P(a) a
-# else
-#  define __P(a) ()
-# endif
-#endif
-
-/* Let's collect some prototypes */
-/* CodeWarrior is really picky about missing prototypes */
-static void exit_with_usage __P((void));
-static void die __P((int));
-static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
-static void xxdline __P((FILE *, char *, int));
-
-#define TRY_SEEK	/* attempt to use lseek, or skip forward by reading */
-#define COLS 256	/* change here, if you ever need more columns */
-#define LLEN (12 + (9*COLS-1) + COLS + 2)
-
-char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa;
-
-/* the different hextypes known by this program: */
-#define HEX_NORMAL 0
-#define HEX_POSTSCRIPT 1
-#define HEX_CINCLUDE 2
-#define HEX_BITS 3		/* not hex a dump, but bits: 01111001 */
-#define HEX_LITTLEENDIAN 4
-
-static char *pname;
-
-  static void
-exit_with_usage(void)
-{
-  fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
-  fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
-  fprintf(stderr, "Options:\n");
-  fprintf(stderr, "    -a          toggle autoskip: A single '*' replaces nul-lines. Default off.\n");
-  fprintf(stderr, "    -b          binary digit dump (incompatible with -ps,-i,-r). Default hex.\n");
-  fprintf(stderr, "    -c cols     format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
-  fprintf(stderr, "    -E          show characters in EBCDIC. Default ASCII.\n");
-  fprintf(stderr, "    -e          little-endian dump (incompatible with -ps,-i,-r).\n");
-  fprintf(stderr, "    -g          number of octets per group in normal output. Default 2 (-e: 4).\n");
-  fprintf(stderr, "    -h          print this summary.\n");
-  fprintf(stderr, "    -i          output in C include file style.\n");
-  fprintf(stderr, "    -l len      stop after <len> octets.\n");
-  fprintf(stderr, "    -o off      add <off> to the displayed file position.\n");
-  fprintf(stderr, "    -ps         output in postscript plain hexdump style.\n");
-  fprintf(stderr, "    -r          reverse operation: convert (or patch) hexdump into binary.\n");
-  fprintf(stderr, "    -r -s off   revert with <off> added to file positions found in hexdump.\n");
-  fprintf(stderr, "    -s %sseek  start at <seek> bytes abs. %sinfile offset.\n",
-#ifdef TRY_SEEK
-	  "[+][-]", "(or +: rel.) ");
-#else
-	  "", "");
-#endif
-  fprintf(stderr, "    -u          use upper case hex letters.\n");
-  fprintf(stderr, "    -v          show version: \"%s%s\".\n", version, osver);
-  exit(1);
-}
-
-  static void
-die(int ret)
-{
-  fprintf(stderr, "%s: ", pname);
-  perror(NULL);
-  exit(ret);
-}
-
-/*
- * Max. cols binary characters are decoded from the input stream per line.
- * Two adjacent garbage characters after evaluated data delimit valid data.
- * Everything up to the next newline is discarded.
- *
- * The name is historic and came from 'undo type opt h'.
- */
-  static int
-huntype(
-  FILE *fpi,
-  FILE *fpo,
-  FILE *fperr,
-  int cols,
-  int hextype,
-  long base_off)
-{
-  int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
-  long have_off = 0, want_off = 0;
-
-  rewind(fpi);
-
-  while ((c = getc(fpi)) != EOF)
-    {
-      if (c == '\r')	/* Doze style input file? */
-	continue;
-
-      /* Allow multiple spaces.  This doesn't work when there is normal text
-       * after the hex codes in the last line that looks like hex, thus only
-       * use it for PostScript format. */
-      if (hextype == HEX_POSTSCRIPT && (c == ' ' || c == '\n' || c == '\t'))
-	continue;
-
-      n3 = n2;
-      n2 = n1;
-
-      if (c >= '0' && c <= '9')
-	n1 = c - '0';
-      else if (c >= 'a' && c <= 'f')
-	n1 = c - 'a' + 10;
-      else if (c >= 'A' && c <= 'F')
-	n1 = c - 'A' + 10;
-      else
-	{
-	  n1 = -1;
-	  if (ign_garb)
-	    continue;
-	}
-
-      ign_garb = 0;
-
-      if (p >= cols)
-	{
-	  if (!hextype)
-	    {
-	      if (n1 < 0)
-		{
-		  p = 0;
-		  continue;
-		}
-	      want_off = (want_off << 4) | n1;
-	      continue;
-	    }
-	  else
-	    p = 0;
-	}
-
-      if (base_off + want_off != have_off)
-	{
-	  if (fflush(fpo) != 0)
-	    die(3);
-#ifdef TRY_SEEK
-	  c = fseek(fpo, base_off + want_off - have_off, 1);
-	  if (c >= 0)
-	    have_off = base_off + want_off;
-#endif
-	  if (base_off + want_off < have_off)
-	    {
-	      fprintf(fperr, "%s: sorry, cannot seek backwards.\n", pname);
-	      return 5;
-	    }
-	  for (; have_off < base_off + want_off; have_off++)
-	    if (putc(0, fpo) == EOF)
-	      die(3);
-	}
-
-      if (n2 >= 0 && n1 >= 0)
-	{
-	  if (putc((n2 << 4) | n1, fpo) == EOF)
-	    die(3);
-	  have_off++;
-	  want_off++;
-	  n1 = -1;
-	  if ((++p >= cols) && !hextype)
-	    {
-	      /* skip rest of line as garbage */
-	      want_off = 0;
-	      while ((c = getc(fpi)) != '\n' && c != EOF)
-		;
-	      if (c == EOF && ferror(fpi))
-		die(2);
-	      ign_garb = 1;
-	    }
-	}
-      else if (n1 < 0 && n2 < 0 && n3 < 0)
-	{
-	  /* already stumbled into garbage, skip line, wait and see */
-	  if (!hextype)
-	    want_off = 0;
-	  while ((c = getc(fpi)) != '\n' && c != EOF)
-	    ;
-	  if (c == EOF && ferror(fpi))
-	    die(2);
-	  ign_garb = 1;
-	}
-    }
-  if (fflush(fpo) != 0)
-    die(3);
-#ifdef TRY_SEEK
-  fseek(fpo, 0L, 2);
-#endif
-  if (fclose(fpo) != 0)
-    die(3);
-  if (fclose(fpi) != 0)
-    die(2);
-  return 0;
-}
-
-/*
- * Print line l. If nz is false, xxdline regards the line a line of
- * zeroes. If there are three or more consecutive lines of zeroes,
- * they are replaced by a single '*' character.
- *
- * If the output ends with more than two lines of zeroes, you
- * should call xxdline again with l being the last line and nz
- * negative. This ensures that the last line is shown even when
- * it is all zeroes.
- *
- * If nz is always positive, lines are never suppressed.
- */
-  static void
-xxdline(FILE *fp, char *l, int nz)
-{
-  static char z[LLEN+1];
-  static int zero_seen = 0;
-
-  if (!nz && zero_seen == 1)
-    strcpy(z, l);
-
-  if (nz || !zero_seen++)
-    {
-      if (nz)
-	{
-	  if (nz < 0)
-	    zero_seen--;
-	  if (zero_seen == 2)
-	    if (fputs(z, fp) == EOF)
-	      die(3);
-	  if (zero_seen > 2)
-	    if (fputs("*\n", fp) == EOF)
-	      die(3);
-	}
-      if (nz >= 0 || zero_seen > 0)
-	if (fputs(l, fp) == EOF)
-	  die(3);
-      if (nz)
-	zero_seen = 0;
-    }
-}
-
-/* This is an EBCDIC to ASCII conversion table */
-/* from a proposed BTL standard April 16, 1979 */
-static unsigned char etoa64[] =
-{
-    0040,0240,0241,0242,0243,0244,0245,0246,
-    0247,0250,0325,0056,0074,0050,0053,0174,
-    0046,0251,0252,0253,0254,0255,0256,0257,
-    0260,0261,0041,0044,0052,0051,0073,0176,
-    0055,0057,0262,0263,0264,0265,0266,0267,
-    0270,0271,0313,0054,0045,0137,0076,0077,
-    0272,0273,0274,0275,0276,0277,0300,0301,
-    0302,0140,0072,0043,0100,0047,0075,0042,
-    0303,0141,0142,0143,0144,0145,0146,0147,
-    0150,0151,0304,0305,0306,0307,0310,0311,
-    0312,0152,0153,0154,0155,0156,0157,0160,
-    0161,0162,0136,0314,0315,0316,0317,0320,
-    0321,0345,0163,0164,0165,0166,0167,0170,
-    0171,0172,0322,0323,0324,0133,0326,0327,
-    0330,0331,0332,0333,0334,0335,0336,0337,
-    0340,0341,0342,0343,0344,0135,0346,0347,
-    0173,0101,0102,0103,0104,0105,0106,0107,
-    0110,0111,0350,0351,0352,0353,0354,0355,
-    0175,0112,0113,0114,0115,0116,0117,0120,
-    0121,0122,0356,0357,0360,0361,0362,0363,
-    0134,0237,0123,0124,0125,0126,0127,0130,
-    0131,0132,0364,0365,0366,0367,0370,0371,
-    0060,0061,0062,0063,0064,0065,0066,0067,
-    0070,0071,0372,0373,0374,0375,0376,0377
-};
-
-  int
-main(int argc, char *argv[])
-{
-  FILE *fp, *fpo;
-  int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
-  int cols = 0, nonzero = 0, autoskip = 0, hextype = HEX_NORMAL;
-  int ebcdic = 0;
-  int octspergrp = -1;	/* number of octets grouped in output */
-  int grplen;		/* total chars per octet group */
-  long length = -1, n = 0, seekoff = 0, displayoff = 0;
-  static char l[LLEN+1];  /* static because it may be too big for stack */
-  char *pp;
-
-#ifdef AMIGA
-  /* This program doesn't work when started from the Workbench */
-  if (argc == 0)
-    exit(1);
-#endif
-
-  pname = argv[0];
-  for (pp = pname; *pp; )
-    if (*pp++ == PATH_SEP)
-      pname = pp;
-#ifdef FILE_SEP
-  for (pp = pname; *pp; pp++)
-    if (*pp == FILE_SEP)
-      {
-	*pp = '\0';
-	break;
-      }
-#endif
-
-  while (argc >= 2)
-    {
-      pp = argv[1] + (!STRNCMP(argv[1], "--", 2) && argv[1][2]);
-	   if (!STRNCMP(pp, "-a", 2)) autoskip = 1 - autoskip;
-      else if (!STRNCMP(pp, "-b", 2)) hextype = HEX_BITS;
-      else if (!STRNCMP(pp, "-e", 2)) hextype = HEX_LITTLEENDIAN;
-      else if (!STRNCMP(pp, "-u", 2)) hexx = hexxa + 16;
-      else if (!STRNCMP(pp, "-p", 2)) hextype = HEX_POSTSCRIPT;
-      else if (!STRNCMP(pp, "-i", 2)) hextype = HEX_CINCLUDE;
-      else if (!STRNCMP(pp, "-r", 2)) revert++;
-      else if (!STRNCMP(pp, "-E", 2)) ebcdic++;
-      else if (!STRNCMP(pp, "-v", 2))
-	{
-	  fprintf(stderr, "%s%s\n", version, osver);
-	  exit(0);
-	}
-      else if (!STRNCMP(pp, "-c", 2))
-	{
-	  if (pp[2] && STRNCMP("ols", pp + 2, 3))
-	    cols = (int)strtol(pp + 2, NULL, 0);
-	  else
-	    {
-	      if (!argv[2])
-		exit_with_usage();
-	      cols = (int)strtol(argv[2], NULL, 0);
-	      argv++;
-	      argc--;
-	    }
-	}
-      else if (!STRNCMP(pp, "-g", 2))
-	{
-	  if (pp[2] && STRNCMP("group", pp + 2, 5))
-	    octspergrp = (int)strtol(pp + 2, NULL, 0);
-	  else
-	    {
-	      if (!argv[2])
-		exit_with_usage();
-	      octspergrp = (int)strtol(argv[2], NULL, 0);
-	      argv++;
-	      argc--;
-	    }
-	}
-      else if (!STRNCMP(pp, "-o", 2))
-	{
-	  if (pp[2] && STRNCMP("ffset", pp + 2, 5))
-	    displayoff = (int)strtol(pp + 2, NULL, 0);
-	  else
-	    {
-	      if (!argv[2])
-		exit_with_usage();
-	      displayoff = (int)strtol(argv[2], NULL, 0);
-	      argv++;
-	      argc--;
-	    }
-	}
-      else if (!STRNCMP(pp, "-s", 2))
-	{
-	  relseek = 0;
-	  negseek = 0;
-	  if (pp[2] && STRNCMP("kip", pp+2, 3) && STRNCMP("eek", pp+2, 3))
-	    {
-#ifdef TRY_SEEK
-	      if (pp[2] == '+')
-		relseek++;
-	      if (pp[2+relseek] == '-')
-		negseek++;
-#endif
-	      seekoff = strtol(pp + 2+relseek+negseek, (char **)NULL, 0);
-	    }
-	  else
-	    {
-	      if (!argv[2])
-		exit_with_usage();
-#ifdef TRY_SEEK
-	      if (argv[2][0] == '+')
-		relseek++;
-	      if (argv[2][relseek] == '-')
-		negseek++;
-#endif
-	      seekoff = strtol(argv[2] + relseek+negseek, (char **)NULL, 0);
-	      argv++;
-	      argc--;
-	    }
-	}
-      else if (!STRNCMP(pp, "-l", 2))
-	{
-	  if (pp[2] && STRNCMP("en", pp + 2, 2))
-	    length = strtol(pp + 2, (char **)NULL, 0);
-	  else
-	    {
-	      if (!argv[2])
-		exit_with_usage();
-	      length = strtol(argv[2], (char **)NULL, 0);
-	      argv++;
-	      argc--;
-	    }
-	}
-      else if (!strcmp(pp, "--"))	/* end of options */
-	{
-	  argv++;
-	  argc--;
-	  break;
-	}
-      else if (pp[0] == '-' && pp[1])	/* unknown option */
-	exit_with_usage();
-      else
-	break;				/* not an option */
-
-      argv++;				/* advance to next argument */
-      argc--;
-    }
-
-  if (!cols)
-    switch (hextype)
-      {
-      case HEX_POSTSCRIPT:	cols = 30; break;
-      case HEX_CINCLUDE:	cols = 12; break;
-      case HEX_BITS:		cols = 6; break;
-      case HEX_NORMAL:
-      case HEX_LITTLEENDIAN:
-      default:			cols = 16; break;
-      }
-
-  if (octspergrp < 0)
-    switch (hextype)
-      {
-      case HEX_BITS:		octspergrp = 1; break;
-      case HEX_NORMAL:		octspergrp = 2; break;
-      case HEX_LITTLEENDIAN:	octspergrp = 4; break;
-      case HEX_POSTSCRIPT:
-      case HEX_CINCLUDE:
-      default:			octspergrp = 0; break;
-      }
-
-  if (cols < 1 || ((hextype == HEX_NORMAL || hextype == HEX_BITS || hextype == HEX_LITTLEENDIAN)
-							    && (cols > COLS)))
-    {
-      fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS);
-      exit(1);
-    }
-
-  if (octspergrp < 1 || octspergrp > cols)
-    octspergrp = cols;
-  else if (hextype == HEX_LITTLEENDIAN && (octspergrp & (octspergrp-1)))
-    {
-      fprintf(stderr,
-	      "%s: number of octets per group must be a power of 2 with -e.\n",
-	      pname);
-      exit(1);
-    }
-
-  if (argc > 3)
-    exit_with_usage();
-
-  if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
-    BIN_ASSIGN(fp = stdin, !revert);
-  else
-    {
-      if ((fp = fopen(argv[1], BIN_READ(!revert))) == NULL)
-	{
-	  fprintf(stderr,"%s: ", pname);
-	  perror(argv[1]);
-	  return 2;
-	}
-    }
-
-  if (argc < 3 || (argv[2][0] == '-' && !argv[2][1]))
-    BIN_ASSIGN(fpo = stdout, revert);
-  else
-    {
-      int fd;
-      int mode = revert ? O_WRONLY : (O_TRUNC|O_WRONLY);
-
-      if (((fd = OPEN(argv[2], mode | BIN_CREAT(revert), 0666)) < 0) ||
-	  (fpo = fdopen(fd, BIN_WRITE(revert))) == NULL)
-	{
-	  fprintf(stderr, "%s: ", pname);
-	  perror(argv[2]);
-	  return 3;
-	}
-      rewind(fpo);
-    }
-
-  if (revert)
-    {
-      if (hextype && (hextype != HEX_POSTSCRIPT))
-	{
-	  fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
-	  return -1;
-	}
-      return huntype(fp, fpo, stderr, cols, hextype,
-		negseek ? -seekoff : seekoff);
-    }
-
-  if (seekoff || negseek || !relseek)
-    {
-#ifdef TRY_SEEK
-      if (relseek)
-	e = fseek(fp, negseek ? -seekoff : seekoff, 1);
-      else
-	e = fseek(fp, negseek ? -seekoff : seekoff, negseek ? 2 : 0);
-      if (e < 0 && negseek)
-	{
-	  fprintf(stderr, "%s: sorry cannot seek.\n", pname);
-	  return 4;
-	}
-      if (e >= 0)
-	seekoff = ftell(fp);
-      else
-#endif
-	{
-	  long s = seekoff;
-
-	  while (s--)
-	    if (getc(fp) == EOF)
-	    {
-	      if (ferror(fp))
-		{
-		  die(2);
-		}
-	      else
-		{
-		  fprintf(stderr, "%s: sorry cannot seek.\n", pname);
-		  return 4;
-		}
-	    }
-	}
-    }
-
-  if (hextype == HEX_CINCLUDE)
-    {
-      if (fp != stdin)
-	{
-	  if (fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
-	    die(3);
-	  for (e = 0; (c = argv[1][e]) != 0; e++)
-	    if (putc(isalnum(c) ? c : '_', fpo) == EOF)
-	      die(3);
-	  if (fputs("[] = {\n", fpo) == EOF)
-	    die(3);
-	}
-
-      p = 0;
-      c = 0;
-      while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
-	{
-	  if (fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
-		(p % cols) ? ", " : &",\n  "[2*!p],  c) < 0)
-	    die(3);
-	  p++;
-	}
-      if (c == EOF && ferror(fp))
-	die(2);
-
-      if (p && fputs("\n", fpo) == EOF)
-	die(3);
-      if (fputs(&"};\n"[3 * (fp == stdin)], fpo) == EOF)
-	die(3);
-
-      if (fp != stdin)
-	{
-	  if (fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
-	    die(3);
-	  for (e = 0; (c = argv[1][e]) != 0; e++)
-	    if (putc(isalnum(c) ? c : '_', fpo) == EOF)
-	      die(3);
-	  if (fprintf(fpo, "_len = %d;\n", p) < 0)
-	    die(3);
-	}
-
-      if (fclose(fp))
-	die(2);
-      if (fclose(fpo))
-	die(3);
-      return 0;
-    }
-
-  if (hextype == HEX_POSTSCRIPT)
-    {
-      p = cols;
-      e = 0;
-      while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
-	{
-	  if (putc(hexx[(e >> 4) & 0xf], fpo) == EOF
-		  || putc(hexx[e & 0xf], fpo) == EOF)
-	    die(3);
-	  n++;
-	  if (!--p)
-	    {
-	      if (putc('\n', fpo) == EOF)
-		die(3);
-	      p = cols;
-	    }
-	}
-      if (e == EOF && ferror(fp))
-	die(2);
-      if (p < cols)
-	if (putc('\n', fpo) == EOF)
-	  die(3);
-      if (fclose(fp))
-	die(2);
-      if (fclose(fpo))
-	die(3);
-      return 0;
-    }
-
-  /* hextype: HEX_NORMAL or HEX_BITS or HEX_LITTLEENDIAN */
-
-  if (hextype != HEX_BITS)
-    grplen = octspergrp + octspergrp + 1;	/* chars per octet group */
-  else	/* hextype == HEX_BITS */
-    grplen = 8 * octspergrp + 1;
-
-  e = 0;
-  while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
-    {
-      if (p == 0)
-	{
-	  sprintf(l, "%08lx:",
-	    ((unsigned long)(n + seekoff + displayoff)) & 0xffffffff);
-	  for (c = 9; c < LLEN; l[c++] = ' ');
-	}
-      if (hextype == HEX_NORMAL)
-	{
-	  l[c = (10 + (grplen * p) / octspergrp)] = hexx[(e >> 4) & 0xf];
-	  l[++c]				  = hexx[ e       & 0xf];
-	}
-      else if (hextype == HEX_LITTLEENDIAN)
-	{
-	  int x = p ^ (octspergrp-1);
-	  l[c = (10 + (grplen * x) / octspergrp)] = hexx[(e >> 4) & 0xf];
-	  l[++c]				  = hexx[ e       & 0xf];
-	}
-      else /* hextype == HEX_BITS */
-	{
-	  int i;
-
-	  c = (10 + (grplen * p) / octspergrp) - 1;
-	  for (i = 7; i >= 0; i--)
-	    l[++c] = (e & (1 << i)) ? '1' : '0';
-	}
-      if (ebcdic)
-	e = (e < 64) ? '.' : etoa64[e-64];
-      /* When changing this update definition of LLEN above. */
-      l[12 + (grplen * cols - 1)/octspergrp + p] =
-#ifdef __MVS__
-	  (e >= 64)
-#else
-	  (e > 31 && e < 127)
-#endif
-	  ? e : '.';
-      if (e)
-	nonzero++;
-      n++;
-      if (++p == cols)
-	{
-	  l[c = (12 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
-	  xxdline(fpo, l, autoskip ? nonzero : 1);
-	  nonzero = 0;
-	  p = 0;
-	}
-    }
-  if (e == EOF && ferror(fp))
-    die(2);
-  if (p)
-    {
-      l[c = (12 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
-      xxdline(fpo, l, 1);
-    }
-  else if (autoskip)
-    xxdline(fpo, l, -1);	/* last chance to flush out suppressed lines */
-
-  if (fclose(fp))
-    die(2);
-  if (fclose(fpo))
-    die(3);
-  return 0;
-}
-
-/* vi:set ts=8 sw=4 sts=2 cino+={2 cino+=n-2 : */
diff --git a/projects/curl/Dockerfile b/projects/curl/Dockerfile
index 1dc106a..dcd1239 100644
--- a/projects/curl/Dockerfile
+++ b/projects/curl/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dvyukov@google.com
 
 RUN git clone --depth 1 https://github.com/curl/curl.git /src/curl
 RUN git clone --depth 1 https://github.com/curl/curl-fuzzer.git /src/curl_fuzzer
diff --git a/projects/curl/project.yaml b/projects/curl/project.yaml
index 71e6905..6ab2811 100644
--- a/projects/curl/project.yaml
+++ b/projects/curl/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://curl.haxx.se/"
-language: c++
 primary_contact: "daniel@haxx.se"
 auto_ccs:
   - "daniel.haxx@gmail.com"
@@ -11,4 +10,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/curl/curl.git'
diff --git a/projects/dart/Dockerfile b/projects/dart/Dockerfile
deleted file mode 100644
index d60afcb..0000000
--- a/projects/dart/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt install -y g++-multilib git python curl
-
-RUN git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
-ENV PATH="${SRC}/depot_tools:${PATH}"
-RUN mkdir dart-sdk && cd dart-sdk && fetch dart
-COPY build.sh $SRC
-COPY patch.diff $SRC
-WORKDIR $SRC/dart-sdk/sdk
diff --git a/projects/dart/build.sh b/projects/dart/build.sh
deleted file mode 100755
index 520b275..0000000
--- a/projects/dart/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-git apply ../../patch.diff
-./tools/build.py --no-goma -j$(nproc) -m debug -a x64 --sanitizer=asan dart_libfuzzer
-cp out/DebugASANX64/*fuzzer $OUT/
diff --git a/projects/dart/patch.diff b/projects/dart/patch.diff
deleted file mode 100644
index 18729d5..0000000
--- a/projects/dart/patch.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
-index 1bc82252087..68e983b4902 100644
---- a/runtime/bin/BUILD.gn
-+++ b/runtime/bin/BUILD.gn
-@@ -1084,6 +1084,8 @@ if (defined(is_linux) && is_linux && defined(is_asan) && is_asan &&
-     extra_sources = [
-       "../vm/libfuzzer/dart_libfuzzer.cc",
-       "builtin.cc",
-+      "dartdev_isolate.cc",
-+      "dartdev_isolate.h",
-       "dfe.cc",
-       "dfe.h",
-     ]
diff --git a/projects/dart/project.yaml b/projects/dart/project.yaml
deleted file mode 100644
index 155fe23..0000000
--- a/projects/dart/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://dart.dev"
-language: c++
-primary_contact: "scheglov@google.com"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-
-sanitizers:
-- address
-main_repo: 'https://github.com/dart-lang/sdk.git'
diff --git a/projects/dav1d/Dockerfile b/projects/dav1d/Dockerfile
index 81a4e59..61340ad 100644
--- a/projects/dav1d/Dockerfile
+++ b/projects/dav1d/Dockerfile
@@ -15,12 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER janne-vlc@jannau.net
 
-ADD nasm.list /etc/apt/sources.list.d/nasm.list
+ADD bionic.list /etc/apt/sources.list.d/bionic.list
 ADD nasm_apt.pin /etc/apt/preferences
 
-RUN apt-get update && \
-    apt-get install --no-install-recommends -y curl python3-pip python3-setuptools python3-wheel nasm && \
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
+    apt-get install --no-install-recommends -y libstdc++-5-dev libstdc++-5-dev:i386 curl python3-pip python3-setuptools python3-wheel nasm && \
     pip3 install meson ninja
 RUN curl --silent -O https://storage.googleapis.com/aom-test-data/fuzzer/dec_fuzzer_seed_corpus.zip
 RUN curl --silent -O https://jannau.net/dav1d_fuzzer_seed_corpus.zip
diff --git a/projects/dav1d/bionic.list b/projects/dav1d/bionic.list
new file mode 100644
index 0000000..8621803
--- /dev/null
+++ b/projects/dav1d/bionic.list
@@ -0,0 +1,2 @@
+# use nasm 2.13.02 from bionic
+deb http://archive.ubuntu.com/ubuntu/ bionic universe
diff --git a/projects/dav1d/build.sh b/projects/dav1d/build.sh
index e1384ee..252817f 100755
--- a/projects/dav1d/build.sh
+++ b/projects/dav1d/build.sh
@@ -46,7 +46,7 @@
 (cd ${WORK}/tmp && zip -q -m -r -0 ${WORK}/tmp/seed_corpus.zip testdata)
 
 # copy fuzzers and link testdata
-for fuzzer in $(find ${build}/tests/libfuzzer -maxdepth 1 -type f -executable -name 'dav1d_fuzzer*'); do
+for fuzzer in $(find ${build} -name 'dav1d_fuzzer*'); do
 	cp "${fuzzer}" $OUT/
 	cp ${WORK}/tmp/seed_corpus.zip $OUT/$(basename "$fuzzer")_seed_corpus.zip
 done
diff --git a/projects/dav1d/nasm.list b/projects/dav1d/nasm.list
deleted file mode 100644
index 673ee99..0000000
--- a/projects/dav1d/nasm.list
+++ /dev/null
@@ -1,2 +0,0 @@
-# use nasm from a newer ubuntu release
-deb http://archive.ubuntu.com/ubuntu/ focal universe
diff --git a/projects/dav1d/nasm_apt.pin b/projects/dav1d/nasm_apt.pin
index d1932e9..6909902 100644
--- a/projects/dav1d/nasm_apt.pin
+++ b/projects/dav1d/nasm_apt.pin
@@ -1,7 +1,7 @@
 Package: *
-Pin: release n=focal
+Pin: release n=bionic
 Pin-Priority: 1
 
 Package: nasm
-Pin: release n=focal
+Pin: release n=bionic
 Pin-Priority: 555
diff --git a/projects/dav1d/project.yaml b/projects/dav1d/project.yaml
index 76c2349..9ff319f 100644
--- a/projects/dav1d/project.yaml
+++ b/projects/dav1d/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://code.videolan.org/videolan/dav1d"
-language: c++
 primary_contact: "janne.grunau@gmail.com"
 auto_ccs:
   - "rsbultje@gmail.com"
@@ -7,8 +6,8 @@
   - "b@rr-dav.id.au"
   - "dav1d-fuzz@videolan.org"
 vendor_ccs:
-  - "negge@mozilla.com"
   - "twsmith@mozilla.com"
+  - "cdiehl@mozilla.com"
 sanitizers:
   - address
   - memory
@@ -17,4 +16,3 @@
 architectures:
   - i386
   - x86_64
-main_repo: 'https://code.videolan.org/videolan/dav1d.git'
diff --git a/projects/django/Dockerfile b/projects/django/Dockerfile
index a73872f..8d55326 100644
--- a/projects/django/Dockerfile
+++ b/projects/django/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get install -y build-essential libncursesw5-dev libreadline-dev libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev libbz2-dev zlib1g-dev libffi-dev wget
-RUN wget -q https://github.com/python/cpython/archive/v3.8.7.tar.gz
-RUN git clone --depth 1 https://github.com/django/django-fuzzers.git
+RUN wget -q https://github.com/python/cpython/archive/v3.8.0b2.tar.gz
+RUN git clone --depth 1 https://github.com/guidovranken/django-fuzzers.git
 RUN git clone --depth 1 https://github.com/django/django.git
 COPY build.sh $SRC/
diff --git a/projects/django/build.sh b/projects/django/build.sh
index b4e25a4..25d7594 100755
--- a/projects/django/build.sh
+++ b/projects/django/build.sh
@@ -45,8 +45,8 @@
 rm -rf $CPYTHON_INSTALL_PATH
 mkdir $CPYTHON_INSTALL_PATH
 
-tar zxf v3.8.7.tar.gz
-cd cpython-3.8.7/
+tar zxf v3.8.0b2.tar.gz
+cd cpython-3.8.0b2/
 cp $SRC/django-fuzzers/python_coverage.h Python/
 
 # Patch the interpreter to record code coverage
diff --git a/projects/django/project.yaml b/projects/django/project.yaml
index b3836b9..9597d8b 100644
--- a/projects/django/project.yaml
+++ b/projects/django/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.djangoproject.com/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
  - "f.apolloner@gmail.com"
@@ -7,7 +6,5 @@
  - "jammamarkus@gmail.com"
 fuzzing_engines:
   - libfuzzer
-  - honggfuzz
 sanitizers:
  - undefined
-main_repo: 'https://github.com/django/django.git'
diff --git a/projects/dlplibs/Dockerfile b/projects/dlplibs/Dockerfile
index 9c52a61..ec2e29e 100644
--- a/projects/dlplibs/Dockerfile
+++ b/projects/dlplibs/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dtardon@redhat.com
 # install build requirements
 RUN apt-get update && \
     apt-get install -y wget xz-utils autoconf automake libtool pkg-config \
diff --git a/projects/dlplibs/project.yaml b/projects/dlplibs/project.yaml
index 7d3ed33..9711576 100644
--- a/projects/dlplibs/project.yaml
+++ b/projects/dlplibs/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.documentliberation.org"
-language: c++
 primary_contact: "dtardon@redhat.com"
 sanitizers:
   - address
diff --git a/projects/double-conversion/Dockerfile b/projects/double-conversion/Dockerfile
index 56ac7cb..08aa8db 100644
--- a/projects/double-conversion/Dockerfile
+++ b/projects/double-conversion/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER sbucur@google.com
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
diff --git a/projects/double-conversion/project.yaml b/projects/double-conversion/project.yaml
index 2e72b53..1c890f5 100644
--- a/projects/double-conversion/project.yaml
+++ b/projects/double-conversion/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/double-conversion"
-language: c++
 primary_contact: "florian@loitsch.com"
 auto_ccs:
   - "sbucur@google.com"
@@ -13,4 +12,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/google/double-conversion.git'
diff --git a/projects/dovecot/Dockerfile b/projects/dovecot/Dockerfile
deleted file mode 100755
index 5dcf792..0000000
--- a/projects/dovecot/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool wget gettext automake libxml2-dev m4 pkg-config bison flex
-RUN git clone --depth 1 https://github.com/dovecot/core dovecot
-WORKDIR dovecot
-COPY build.sh $SRC/
-#COPY fuzz-* $SRC/
-
diff --git a/projects/dovecot/build.sh b/projects/dovecot/build.sh
deleted file mode 100755
index bed21c6..0000000
--- a/projects/dovecot/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-./autogen.sh
-./configure PANDOC=false --with-fuzzer=clang
-make
-
-# Copy over the fuzzers
-find . -name "fuzz-*" -executable -exec cp {} $OUT/ \;
diff --git a/projects/dovecot/project.yaml b/projects/dovecot/project.yaml
deleted file mode 100755
index 91e350e..0000000
--- a/projects/dovecot/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://www.dovecot.org/"
-language: c
-primary_contact: "oss-fuzz@open-xchange.com"
-auto_ccs:
-    - "david@adalogics.com"
-    - "p.antoine@catenacyber.fr"
-    - "cmousefi@gmail.com"
-    - "boschstephan@gmail.com"
-    - "timo.sirainen@gmail.com"
-main_repo: 'https://github.com/dovecot/core'
diff --git a/projects/draco/Dockerfile b/projects/draco/Dockerfile
deleted file mode 100644
index 772ae6d..0000000
--- a/projects/draco/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y git cmake make pkg-config
-RUN git clone --depth 1 https://github.com/google/draco draco
-COPY build.sh $SRC/
-WORKDIR $WORK/
diff --git a/projects/draco/build.sh b/projects/draco/build.sh
deleted file mode 100755
index 1ebc898..0000000
--- a/projects/draco/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-sh $SRC/draco/src/draco/tools/fuzz/build.sh
diff --git a/projects/draco/project.yaml b/projects/draco/project.yaml
deleted file mode 100644
index 04ef12e..0000000
--- a/projects/draco/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/google/draco"
-language: c++
-primary_contact: "fgalligan@google.com"
-auto_ccs:
-  - "ostava@google.com"
-  - "vytyaz@google.com"
-main_repo: 'https://github.com/google/draco'
diff --git a/projects/dragonfly/Dockerfile b/projects/dragonfly/Dockerfile
deleted file mode 100644
index 46870a6..0000000
--- a/projects/dragonfly/Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN go get	github.com/go-openapi/swag \
-		github.com/go-openapi/validate \
-		gopkg.in/warnings.v0 \
-		github.com/gorilla/mux \
-		github.com/prometheus/client_golang/prometheus \ 
-		github.com/pkg/errors \
-		github.com/sirupsen/logrus \
-		gopkg.in/gcfg.v1 \
-		github.com/valyala/fasthttp \
-		gopkg.in/natefinch/lumberjack.v2 \
-		github.com/emirpasic/gods/maps/treemap \
-		github.com/emirpasic/gods/utils \
-		github.com/willf/bitset
-RUN git clone https://github.com/dragonflyoss/Dragonfly
-COPY build.sh $SRC/
-WORKDIR $SRC/Dragonfly
diff --git a/projects/dragonfly/build.sh b/projects/dragonfly/build.sh
deleted file mode 100755
index 6487785..0000000
--- a/projects/dragonfly/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer github.com/dragonflyoss/Dragonfly/dfget/core/uploader FuzzParseParams uploader_fuzz
-compile_go_fuzzer github.com/dragonflyoss/Dragonfly/supernode/daemon/mgr/cdn Fuzz cdn_fuzz
diff --git a/projects/dragonfly/project.yaml b/projects/dragonfly/project.yaml
deleted file mode 100644
index eb125ca..0000000
--- a/projects/dragonfly/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/dragonflyoss/Dragonfly"
-primary_contact: "zj3142063@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/dragonflyoss/Dragonfly'
diff --git a/projects/dropbear/Dockerfile b/projects/dropbear/Dockerfile
index f2c2354..aaca681 100644
--- a/projects/dropbear/Dockerfile
+++ b/projects/dropbear/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2021 Google LLC
+# Copyright 2016 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER matt@ucc.asn.au
 RUN apt-get update && apt-get install -y libz-dev autoconf mercurial
-RUN hg clone https://hg.ucc.asn.au/dropbear-fuzzcorpus dropbear-corpus
-RUN git clone https://github.com/mkj/dropbear dropbear
+RUN hg clone https://secure.ucc.asn.au/hg/dropbear dropbear
+RUN hg clone https://secure.ucc.asn.au/hg/dropbear-fuzzcorpus dropbear/corpus
 WORKDIR dropbear
 COPY build.sh *.options $SRC/
 
diff --git a/projects/dropbear/build.sh b/projects/dropbear/build.sh
index 9732110..b7030b6 100644
--- a/projects/dropbear/build.sh
+++ b/projects/dropbear/build.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright 2021 Google LLC
+# Copyright 2016 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,15 +21,17 @@
 autoheader
 popd
 
-$SRC/dropbear/configure --enable-fuzz --disable-harden --disable-zlib
+$SRC/dropbear/configure --enable-fuzz --disable-harden
+# force static zlib
+sed -i 's@-lz@/usr/lib/x86_64-linux-gnu/libz.a@' Makefile
 
 make -j$(nproc) fuzz-targets FUZZLIB=$LIB_FUZZING_ENGINE
 
 TARGETS="$(make list-fuzz-targets)"
 
-make -C $SRC/dropbear-corpus
+make -C $SRC/dropbear/corpus
 
 cp -v $TARGETS $OUT/
 cp -v *.options $OUT/
-cp -v $SRC/dropbear-corpus/*.zip $OUT/
-cp -v $SRC/dropbear-corpus/*.dict $OUT/
+cp -v $SRC/dropbear/corpus/*.zip $OUT/
+cp -v $SRC/dropbear/corpus/*.dict $OUT/
diff --git a/projects/dropbear/project.yaml b/projects/dropbear/project.yaml
index 78ee900..f6f10ad 100644
--- a/projects/dropbear/project.yaml
+++ b/projects/dropbear/project.yaml
@@ -1,5 +1,8 @@
 homepage: "https://matt.ucc.asn.au/dropbear/dropbear.html"
-language: c++
 primary_contact: "matt@ucc.asn.au"
-builds_per_day: 4
-main_repo: "https://github.com/mkj/dropbear"
+sanitizers:
+  - address
+  - undefined
+  - memory
+fuzzing_engines:
+   - libfuzzer
diff --git a/projects/e2fsprogs/Dockerfile b/projects/e2fsprogs/Dockerfile
deleted file mode 100644
index 484525b..0000000
--- a/projects/e2fsprogs/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages git make texinfo
-RUN git clone --depth 1 https://github.com/tytso/e2fsprogs
-
-COPY build.sh $SRC/
-COPY fuzz/ $SRC/fuzz/
-WORKDIR $SRC/e2fsprogs
diff --git a/projects/e2fsprogs/build.sh b/projects/e2fsprogs/build.sh
deleted file mode 100755
index 7b19f10..0000000
--- a/projects/e2fsprogs/build.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-export LDFLAGS="$CXXFLAGS"
-$SRC/e2fsprogs/configure
-make -j$(nproc) all
-
-# build fuzzers
-for fuzzer in $(find $SRC/fuzz -name '*_fuzzer.cc'); do
-  fuzzer_basename=$(basename -s .cc $fuzzer)
-  $CXX $CXXFLAGS \
-      $LIB_FUZZING_ENGINE \
-      -I $SRC/e2fsprogs/lib \
-      $fuzzer \
-      -L'./lib/ext2fs' -lext2fs \
-      -L'./lib/et' -lcom_err \
-      -o $OUT/$fuzzer_basename
-done
diff --git a/projects/e2fsprogs/fuzz/ext2fs_check_directory_fuzzer.cc b/projects/e2fsprogs/fuzz/ext2fs_check_directory_fuzzer.cc
deleted file mode 100644
index bd5240b..0000000
--- a/projects/e2fsprogs/fuzz/ext2fs_check_directory_fuzzer.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include "ext2fs/ext2fs.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  static const char* fname = "/tmp/ext2_test_file";
-
-  // Write our data to a temp file.
-  int fd = open(fname, O_RDWR|O_CREAT|O_TRUNC);
-  write(fd, data, size);
-  close(fd);
-
-  ext2_filsys fs;
-  errcode_t retval = ext2fs_open(
-      fname,
-      0, 0, 0,
-      unix_io_manager,
-      &fs);
-
-  if (!retval) {
-    retval = ext2fs_check_directory(fs, EXT2_ROOT_INO);
-    ext2fs_close(fs);
-  }
-
-  return 0;
-}
diff --git a/projects/e2fsprogs/fuzz/ext2fs_image_read_write_fuzzer.cc b/projects/e2fsprogs/fuzz/ext2fs_image_read_write_fuzzer.cc
deleted file mode 100644
index 80128bf..0000000
--- a/projects/e2fsprogs/fuzz/ext2fs_image_read_write_fuzzer.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <assert.h>
-#include <sys/syscall.h>
-#include <linux/memfd.h>
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "ext2fs/ext2fs.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  enum FuzzerType {
-    ext2fsImageBitmapRead,
-    ext2fsImageInodeRead,
-    ext2fsImageSuperRead,
-    ext2fsImageBitmapWrite,
-    ext2fsImageInodeWrite,
-    ext2fsImageSuperWrite,
-    kMaxValue = ext2fsImageSuperWrite
-  };
-
-  FuzzedDataProvider stream(data, size);
-  const FuzzerType f = stream.ConsumeEnum<FuzzerType>();
-  static const char* fname = "/tmp/ext2_test_file";
-
-  // Write our data to a temp file.
-  int fd = syscall(SYS_memfd_create, fname, 0);
-  std::vector<char> buffer = stream.ConsumeRemainingBytes<char>();
-  write(fd, buffer.data(), buffer.size());
-  close(fd);
-
-  ext2_filsys fs;
-  errcode_t retval = ext2fs_open(
-      fname,
-      0, 0, 0,
-      unix_io_manager,
-      &fs);
-
-  if (!retval) {
-    switch (f) {
-      case ext2fsImageBitmapRead: {
-        ext2fs_image_bitmap_read(fs, fd, 0);
-        break;
-      }
-      case ext2fsImageInodeRead: {
-        ext2fs_image_inode_read(fs, fd, 0);
-        break;
-      }
-      case ext2fsImageSuperRead: {
-        ext2fs_image_super_read(fs, fd, 0);
-        break;
-      }
-      case ext2fsImageBitmapWrite: {
-        ext2fs_image_bitmap_write(fs, fd, 0);
-        break;
-      }
-      case ext2fsImageInodeWrite: {
-        ext2fs_image_inode_write(fs, fd, 0);
-        break;
-      }
-      case ext2fsImageSuperWrite: {
-        ext2fs_image_super_write(fs, fd, 0);
-        break;
-      }
-      default: {
-        assert(false);
-      }
-    }
-    ext2fs_close(fs);
-  }
-
-  return 0;
-}
diff --git a/projects/e2fsprogs/fuzz/ext2fs_read_bitmap_fuzzer.cc b/projects/e2fsprogs/fuzz/ext2fs_read_bitmap_fuzzer.cc
deleted file mode 100644
index 861d4b5..0000000
--- a/projects/e2fsprogs/fuzz/ext2fs_read_bitmap_fuzzer.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <assert.h>
-#include <sys/syscall.h>
-#include <linux/memfd.h>
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "ext2fs/ext2fs.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  enum FuzzerType {
-    ext2fsReadBlockBitmap,
-    ext2fsReadInodeBitmap,
-    kMaxValue = ext2fsReadInodeBitmap
-  };
-
-  FuzzedDataProvider stream(data, size);
-  const FuzzerType f = stream.ConsumeEnum<FuzzerType>();
-  static const char* fname = "/tmp/ext2_test_file";
-
-  // Write our data to a temp file.
-  int fd = syscall(SYS_memfd_create, fname, 0);
-  std::vector<char> buffer = stream.ConsumeRemainingBytes<char>();
-  write(fd, buffer.data(), buffer.size());
-  close(fd);
-
-  ext2_filsys fs;
-  errcode_t retval = ext2fs_open(
-      fname,
-      0, 0, 0,
-      unix_io_manager,
-      &fs);
-
-  if (!retval) {
-    switch (f) {
-      case ext2fsReadBlockBitmap: {
-        ext2fs_read_block_bitmap(fs);
-        break;
-      }
-      case ext2fsReadInodeBitmap: {
-        ext2fs_read_inode_bitmap(fs);
-        break;
-      }
-      default: {
-        assert(false);
-      }
-    }
-    ext2fs_close(fs);
-  }
-
-  return 0;
-}
diff --git a/projects/e2fsprogs/project.yaml b/projects/e2fsprogs/project.yaml
deleted file mode 100644
index aabadcf..0000000
--- a/projects/e2fsprogs/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/tytso/e2fsprogs"
-language: c
-primary_contact: "tytso@mit.edu"
-auto_ccs:
-  - "theodore.tso@gmail.com"
-  - "tytso@google.com"
-main_repo: 'https://github.com/tytso/e2fsprogs'
diff --git a/projects/easywsclient/Dockerfile b/projects/easywsclient/Dockerfile
index 5f0cbf1..44678f0 100644
--- a/projects/easywsclient/Dockerfile
+++ b/projects/easywsclient/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dhbaird@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/dhbaird/easywsclient easywsclient
 WORKDIR easywsclient
diff --git a/projects/easywsclient/project.yaml b/projects/easywsclient/project.yaml
index c3be9c4..1bab7b7 100644
--- a/projects/easywsclient/project.yaml
+++ b/projects/easywsclient/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/dhbaird/easywsclient"
-language: c++
 primary_contact: "dhbaird@gmail.com"
 sanitizers:
   - address
@@ -8,4 +7,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/dhbaird/easywsclient'
diff --git a/projects/ecc-diff-fuzzer/Dockerfile b/projects/ecc-diff-fuzzer/Dockerfile
index 0ea8a4e..fd6770f 100644
--- a/projects/ecc-diff-fuzzer/Dockerfile
+++ b/projects/ecc-diff-fuzzer/Dockerfile
@@ -15,15 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake bzip2 autoconf automake gettext libtool python curl
-RUN rustup target add i686-unknown-linux-gnu
-#use different package sources for recent npm
-RUN curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
-RUN bash nodesource_setup.sh
-RUN apt install -y nodejs
-RUN npm install -g browserify
-RUN npm install elliptic
-RUN git clone --depth 1 https://github.com/horhof/quickjs quickjs
+MAINTAINER p.antoine@catenacyber.fr
+RUN apt-get update && apt-get install -y make cmake bzip2 autoconf automake gettext libtool python
 RUN git clone --depth 1 https://github.com/catenacyber/elliptic-curve-differential-fuzzer.git ecfuzzer
 RUN git clone --recursive --depth 1 https://github.com/ARMmbed/mbedtls.git mbedtls
 RUN git clone --depth 1 https://github.com/ANSSI-FR/libecc.git libecc
diff --git a/projects/ecc-diff-fuzzer/build.sh b/projects/ecc-diff-fuzzer/build.sh
index 9b951ca..248941c 100755
--- a/projects/ecc-diff-fuzzer/build.sh
+++ b/projects/ecc-diff-fuzzer/build.sh
@@ -23,21 +23,19 @@
 cd gmp-6.1.2
 #do not use assembly instructions as we do not know if they will be available on the machine who will run the fuzzer
 #we could do instead --enable-fat
-./configure --disable-shared --disable-assembly
-make -j$(nproc)
+./configure --disable-assembly
+make
 make install
 cd ..
 autoreconf
-./configure --disable-shared --disable-openssl
-make -j$(nproc)
-make install
+./configure
+make
 )
 
 #cryptopp
 (
 cd cryptopp
-make -j$(nproc)
-make install
+make
 )
 
 #gcrypt
@@ -49,17 +47,16 @@
 else
     ./configure --disable-doc --enable-static --disable-shared
 fi
-make -j$(nproc)
+make
 make install
 cd ../gcrypt
 ./autogen.sh
 if [ "$ARCHITECTURE" = 'i386' ]; then
-    ./configure -host=i386 --enable-static --disable-shared --disable-doc --enable-maintainer-mode
+    ./configure -host=i386 --enable-static --disable-shared --disable-doc --enable-maintainer-mode --disable-asm
 else
-    ./configure --enable-static --disable-shared --disable-doc --enable-maintainer-mode
+    ./configure --enable-static --disable-shared --disable-doc --enable-maintainer-mode --disable-asm
 fi
-make -j$(nproc)
-make install
+make
 )
 
 #mbedtls
@@ -67,7 +64,6 @@
 cd mbedtls
 cmake . -DENABLE_PROGRAMS=0 -DENABLE_TESTING=0
 make -j$(nproc) all
-make install
 )
 
 #openssl
@@ -80,73 +76,43 @@
     ./config no-poly1305 no-shared no-threads
 fi
 make build_generated libcrypto.a
-make install
 )
 
 #libecc
 (
 cd libecc
 #required by libecc
-(export CFLAGS="$CFLAGS -fPIC"; make; cp build/*.a /usr/local/lib; cp -r src/* /usr/local/include/)
+(export CFLAGS="$CFLAGS -fPIC"; make)
 )
 
 #botan
 (
 cd botan
+#help it find libstdc++
+cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so
+export LDFLAGS=$CXXFLAGS
 if [ "$ARCHITECTURE" = 'i386' ]; then
-    ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" \
-               --disable-shared --disable-modules=locking_allocator --disable-shared-library \
-               --without-os-features=getrandom,getentropy --cpu x86_32
+    ./configure.py --disable-shared-library --cpu x86_32
 else
-    ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" \
-               --disable-shared --disable-modules=locking_allocator --disable-shared-library \
-               --without-os-features=getrandom,getentropy
+    ./configure.py --disable-shared-library
 fi
-make -j$(nproc)
-make install
-)
-
-#quickjs
-(
-cd quickjs
-if [ "$ARCHITECTURE" = 'i386' ]; then
-    make qjsc
-    cp qjsc /usr/local/bin/
-    make clean
-    # Makefile should not override CFLAGS
-    sed -i -e 's/CFLAGS=/CFLAGS+=/' Makefile
-    CFLAGS="-m32" make libquickjs.a
-else
-    make && make install
-fi
-cp quickjs*.h /usr/local/include/
-cp libquickjs.a /usr/local/lib/
+make
 )
 
 #build fuzz target
 cd ecfuzzer
-if [ "$ARCHITECTURE" = 'i386' ]; then
-    export GOARCH=386
-#needed explicitly because of cross compilation cf https://golang.org/cmd/cgo/
-    export CGO_ENABLED=1
-    export CARGO_BUILD_TARGET=i686-unknown-linux-gnu
-fi
 zip -r fuzz_ec_seed_corpus.zip corpus/
 cp fuzz_ec_seed_corpus.zip $OUT/
 cp fuzz_ec.dict $OUT/
-cp fuzz_ec.dict $OUT/fuzz_ec_noblocker.dict
 
-mkdir build
-cd build
-#no afl with long javascript initialization
-if [ "$FUZZING_ENGINE" != 'afl' ]; then
-    cmake ..
-    make -j$(nproc)
-    cp ecfuzzer $OUT/fuzz_ec
-    rm -Rf *
-fi
+$CC $CFLAGS -I. -c fuzz_ec.c -o fuzz_ec.o
+$CC $CFLAGS -I. -c fail.c -o fail.o
+$CC $CFLAGS -I. -I../mbedtls/include -I../mbedtls/crypto/include -c modules/mbedtls.c -o mbedtls.o
+$CC $CFLAGS -I. -I../openssl/include -c modules/openssl.c -o openssl.o
+$CC $CFLAGS -DWITH_STDLIB -I. -I../libecc/src -c modules/libecc.c -o libecc.o
+$CC $CFLAGS -I. -I../gcrypt/src -c modules/gcrypt.c -o gcrypt.o
+$CXX $CXXFLAGS -I. -I../ -c modules/cryptopp.cpp -o cryptopp.o
+$CC $CFLAGS -I. -I../ -c modules/nettle.c -o nettle.o
+$CXX $CXXFLAGS -std=c++11 -I. -I../ -I../botan/build/include -c modules/botan.cpp -o botan.o
 
-#another target without javascript
-cmake -DDISABLE_JS=ON ..
-make -j$(nproc)
-cp ecfuzzer $OUT/fuzz_ec_noblocker
+$CXX $CXXFLAGS fuzz_ec.o fail.o mbedtls.o libecc.o openssl.o gcrypt.o cryptopp.o nettle.o botan.o -o $OUT/fuzz_ec ../mbedtls/crypto/library/libmbedcrypto.a ../libecc/build/libec.a ../libecc/src/external_deps/rand.o ../openssl/libcrypto.a ../nettle/libhogweed.a ../nettle/libnettle.a ../nettle/gmp-6.1.2/.libs/libgmp.a ../gcrypt/src/.libs/libgcrypt.a ../cryptopp/libcryptopp.a ../botan/libbotan-2.a -lgpg-error $LIB_FUZZING_ENGINE
diff --git a/projects/ecc-diff-fuzzer/project.yaml b/projects/ecc-diff-fuzzer/project.yaml
index d88c040..d6a5e0b 100644
--- a/projects/ecc-diff-fuzzer/project.yaml
+++ b/projects/ecc-diff-fuzzer/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/catenacyber/elliptic-curve-differential-fuzzer"
-language: c++
 primary_contact: "p.antoine@catenacyber.fr"
 
 architectures:
diff --git a/projects/eigen/Dockerfile b/projects/eigen/Dockerfile
index 59f9c65..4d442dd 100644
--- a/projects/eigen/Dockerfile
+++ b/projects/eigen/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER eigen-core-team@lists.tuxfamily.org
 RUN apt-get update && apt-get install --yes cmake mercurial
-RUN git clone https://gitlab.com/libeigen/eigen.git
+RUN hg clone https://GOOGLE-AUTOFUZZ@bitbucket.org/eigen/eigen
 WORKDIR eigen
-COPY build.sh *.cc $SRC/
+COPY build.sh solver_fuzzer.cc $SRC/
diff --git a/projects/eigen/basicstuff_fuzzer.cc b/projects/eigen/basicstuff_fuzzer.cc
deleted file mode 100644
index d593239..0000000
--- a/projects/eigen/basicstuff_fuzzer.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "Eigen/Core"
-
-namespace {
-
-static constexpr Eigen::Index kEigenTestMaxSize = 64;
-static constexpr Eigen::Index kEigenIndexOne = static_cast<Eigen::Index>(1);
-
-template <typename T>
-T ConsumeValue(FuzzedDataProvider* stream) {
-  return stream->ConsumeIntegral<T>();
-}
-
-template <>
-float ConsumeValue(FuzzedDataProvider* stream) {
-  return stream->ConsumeFloatingPoint<float>();
-}
-
-template <>
-double ConsumeValue(FuzzedDataProvider* stream) {
-  return stream->ConsumeFloatingPoint<double>();
-}
-
-template <>
-long double ConsumeValue(FuzzedDataProvider* stream) {
-  return stream->ConsumeFloatingPoint<long double>();
-}
-
-template <>
-std::complex<float> ConsumeValue(FuzzedDataProvider* stream) {
-  return std::complex<float>(stream->ConsumeFloatingPoint<float>(),
-                             stream->ConsumeFloatingPoint<float>());
-}
-
-template <>
-std::complex<double> ConsumeValue(FuzzedDataProvider* stream) {
-  return std::complex<float>(stream->ConsumeFloatingPoint<double>(),
-                             stream->ConsumeFloatingPoint<double>());
-}
-
-template <typename MatrixType>
-MatrixType GenerateTestMatrix(size_t rows, size_t cols,
-                              FuzzedDataProvider* stream) {
-  std::vector<typename MatrixType::value_type> test_data(rows * cols);
-  for (auto& value : test_data) {
-    value = ConsumeValue<typename MatrixType::value_type>(stream);
-  }
-  Eigen::Map<MatrixType> mapped_map(test_data.data(), rows, cols);
-  return MatrixType(mapped_map);
-}
-
-template <typename MatrixType>
-void basicStuff(const MatrixType& m, FuzzedDataProvider* stream) {
-  typedef typename MatrixType::Scalar Scalar;
-  typedef Eigen::Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
-  typedef Eigen::Matrix<Scalar, MatrixType::RowsAtCompileTime,
-                        MatrixType::RowsAtCompileTime>
-      SquareMatrixType;
-
-  Eigen::Index rows = m.rows();
-  Eigen::Index cols = m.cols();
-
-  MatrixType m1 = GenerateTestMatrix<MatrixType>(rows, cols, stream),
-             m2 = GenerateTestMatrix<MatrixType>(rows, cols, stream),
-             m3(rows, cols), mzero = MatrixType::Zero(rows, cols),
-             square = GenerateTestMatrix<
-                 Eigen::Matrix<Scalar, MatrixType::RowsAtCompileTime,
-                               MatrixType::RowsAtCompileTime>>(rows, rows,
-                                                               stream);
-  VectorType v1 = GenerateTestMatrix<VectorType>(rows, 1, stream),
-             vzero = VectorType::Zero(rows);
-  SquareMatrixType sm1 = SquareMatrixType::Random(rows, rows), sm2(rows, rows);
-
-  Scalar x = ConsumeValue<typename MatrixType::Scalar>(stream);
-
-  Eigen::Index r = stream->ConsumeIntegralInRange(
-                   std::min(kEigenIndexOne, rows - 1), rows - 1),
-               c = stream->ConsumeIntegralInRange(
-                   std::min(kEigenIndexOne, cols - 1), cols - 1);
-
-  m1.coeffRef(r, c) = x;
-  m1(r, c) = x;
-  v1.coeffRef(r) = x;
-  v1(r) = x;
-  v1[r] = x;
-
-  Eigen::Index r1 = stream->ConsumeIntegralInRange(
-      static_cast<Eigen::Index>(0),
-      std::min(static_cast<Eigen::Index>(127), rows - 1));
-  x = v1(static_cast<char>(r1));
-  x = v1(static_cast<signed char>(r1));
-  x = v1(static_cast<unsigned char>(r1));
-  x = v1(static_cast<signed short>(r1));
-  x = v1(static_cast<unsigned short>(r1));
-  x = v1(static_cast<signed int>(r1));
-  x = v1(static_cast<unsigned int>(r1));
-  x = v1(static_cast<signed long>(r1));
-  x = v1(static_cast<unsigned long>(r1));
-  x = v1(static_cast<long long int>(r1));
-  x = v1(static_cast<unsigned long long int>(r1));
-
-  // now test copying a row-vector into a (column-)vector and conversely.
-  square.col(r) = square.row(r).eval();
-  Eigen::Matrix<Scalar, 1, MatrixType::RowsAtCompileTime> rv(rows);
-  Eigen::Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> cv(rows);
-  rv = square.row(r);
-  cv = square.col(r);
-
-  cv.transpose();
-
-  m3.real() = m1.real();
-  m1 = m2;
-
-  sm2.setZero();
-  for (Eigen::Index i = 0; i < rows; ++i) sm2.col(i) = sm1.row(i);
-
-  sm2.setZero();
-  for (Eigen::Index i = 0; i < rows; ++i) sm2.col(i).noalias() = sm1.row(i);
-
-  sm2.setZero();
-  for (Eigen::Index i = 0; i < rows; ++i) sm2.col(i).noalias() += sm1.row(i);
-
-  sm2.setZero();
-  for (Eigen::Index i = 0; i < rows; ++i) sm2.col(i).noalias() -= sm1.row(i);
-}
-
-template <typename MatrixType>
-void basicStuffComplex(const MatrixType& m, FuzzedDataProvider* stream) {
-  typedef typename MatrixType::Scalar Scalar;
-  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
-  typedef Eigen::Matrix<RealScalar, MatrixType::RowsAtCompileTime,
-                        MatrixType::ColsAtCompileTime>
-      RealMatrixType;
-
-  Eigen::Index rows = m.rows();
-  Eigen::Index cols = m.cols();
-
-  RealMatrixType rm1 = GenerateTestMatrix<RealMatrixType>(rows, cols, stream),
-                 rm2 = GenerateTestMatrix<RealMatrixType>(rows, cols, stream);
-  MatrixType cm(rows, cols);
-  cm.real() = rm1;
-  cm.imag() = rm2;
-  rm1.setZero();
-  rm2.setZero();
-  rm1 = cm.real();
-  rm2 = cm.imag();
-  cm.real().setZero();
-}
-
-}  // namespace
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  FuzzedDataProvider stream(data, size);
-
-  basicStuff(
-      Eigen::MatrixXcf(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-  basicStuff(
-      Eigen::MatrixXi(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-  basicStuff(
-      Eigen::MatrixXcd(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-  basicStuff(
-      Eigen::Matrix<long double, Eigen::Dynamic, Eigen::Dynamic>(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-  basicStuffComplex(
-      Eigen::MatrixXcf(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-  basicStuffComplex(
-      Eigen::MatrixXcd(
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize),
-          stream.ConsumeIntegralInRange(kEigenIndexOne, kEigenTestMaxSize)),
-      &stream);
-
-  return 0;
-}
diff --git a/projects/eigen/project.yaml b/projects/eigen/project.yaml
index b64d68b..1968313 100644
--- a/projects/eigen/project.yaml
+++ b/projects/eigen/project.yaml
@@ -1,11 +1,6 @@
 homepage: "http://eigen.tuxfamily.org/index.php?title=Main_Page"
-language: c++
 primary_contact: "eigen-core-team@lists.tuxfamily.org"
 sanitizers:
- - address
- - memory
- - undefined
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://gitlab.com/libeigen/eigen.git'
+  - address
+  - memory
+  - undefined
diff --git a/projects/envoy/Dockerfile b/projects/envoy/Dockerfile
index 5055acc..0be1677 100644
--- a/projects/envoy/Dockerfile
+++ b/projects/envoy/Dockerfile
@@ -14,8 +14,10 @@
 #
 ################################################################################
 
-
-FROM gcr.io/oss-fuzz-base/base-builder
+# TODO(https://github.com/google/oss-fuzz/issues/3093): Stop specifying the
+# image SHA once the bug is fixed.
+FROM gcr.io/oss-fuzz-base/base-builder@sha256:276813aef0ce5972db43c0230f96162003994fa742fb1b2f4e66c67498575c65
+MAINTAINER htuch@google.com
 
 RUN apt-get update && apt-get -y install  \
 	build-essential \
@@ -27,7 +29,16 @@
     libtool         \
     wget            \
     golang          \
-    rsync
+    python
+
+# Install Bazelisk
+RUN wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v0.0.8/bazelisk-linux-amd64
+RUN chmod +x /usr/local/bin/bazel
+
+# Install cmake
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh; \
+    chmod +x cmake-3.14.5-Linux-x86_64.sh; \
+    ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/usr/local"
 
 RUN git clone https://github.com/envoyproxy/envoy.git
 WORKDIR $SRC/envoy/
diff --git a/projects/envoy/build.sh b/projects/envoy/build.sh
index 09086a2..39ef1b2 100755
--- a/projects/envoy/build.sh
+++ b/projects/envoy/build.sh
@@ -15,38 +15,62 @@
 #
 ################################################################################
 
-declare -r FUZZ_TARGET_QUERY='
-  let all_fuzz_tests = attr(tags, "fuzz_target", "...") in
-  $all_fuzz_tests - attr(tags, "no_fuzz", $all_fuzz_tests)
-'
-declare -r OSS_FUZZ_TARGETS="$(bazel query "${FUZZ_TARGET_QUERY}" | sed 's/$/_oss_fuzz/')"
+export CFLAGS="$CFLAGS"
+export CXXFLAGS="$CXXFLAGS"
 
+declare -r FUZZER_TARGETS_CC=$(find . -name *_fuzz_test.cc)
+declare -r FUZZER_TARGETS="$(for t in ${FUZZER_TARGETS_CC}; do echo "${t:2:-3}"; done)"
+
+FUZZER_DICTIONARIES="\
+"
+
+# Copy $CFLAGS and $CXXFLAGS into Bazel command-line flags, for both
+# compilation and linking.
+#
+# Some flags, such as `-stdlib=libc++`, generate warnings if used on a C source
+# file. Since the build runs with `-Werror` this will cause it to break, so we
+# use `--conlyopt` and `--cxxopt` instead of `--copt`.
+#
 declare -r EXTRA_BAZEL_FLAGS="$(
+for f in ${CFLAGS}; do
+  echo "--conlyopt=${f}" "--linkopt=${f}"
+done
+for f in ${CXXFLAGS}; do
+  echo "--cxxopt=${f}" "--linkopt=${f}"
+done
+
 if [ "$SANITIZER" = "undefined" ]
 then
   # Bazel uses clang to link binary, which does not link clang_rt ubsan library for C++ automatically.
   # See issue: https://github.com/bazelbuild/bazel/issues/8777
   echo "--linkopt=\"$(find $(llvm-config --libdir) -name libclang_rt.ubsan_standalone_cxx-x86_64.a | head -1)\""
-elif [ "$SANITIZER" = "address" ]
-then
-  echo "--copt=-D__SANITIZE_ADDRESS__" "--copt=-DADDRESS_SANITIZER=1" "--linkopt=-fsanitize=address"
 fi
 )"
 
-# The Envoy build configuration may clobber CFLAGS/CXXFLAGS, so we use separate
-# environment variables that are understood by rules_fuzzing.
-export FUZZING_CFLAGS="$CFLAGS"
-export FUZZING_CXXFLAGS="$CXXFLAGS"
+declare BAZEL_BUILD_TARGETS=""
+declare BAZEL_CORPUS_TARGETS=""
+declare FILTERED_FUZZER_TARGETS=""
+for t in ${FUZZER_TARGETS}
+do
+  declare BAZEL_PATH="//"$(dirname "$t")":"$(basename "$t")
+  declare TAGGED=$(bazel query "attr('tags', 'no_fuzz', ${BAZEL_PATH})")
+  if [ -z "${TAGGED}" ]
+  then
+    FILTERED_FUZZER_TARGETS+="$t "
+    BAZEL_BUILD_TARGETS+="${BAZEL_PATH}_driverless "
+    BAZEL_CORPUS_TARGETS+="${BAZEL_PATH}_corpus_tar "
+  fi
+done
 
-# Benchmark about 3 GB per CPU (10 threads for 28.8 GB RAM)
-# TODO(asraa): Remove deprecation warnings when Envoy and deps moves to C++17
-bazel build --verbose_failures --dynamic_mode=off \
-  --spawn_strategy=standalone --genrule_strategy=standalone \
-  --local_cpu_resources=HOST_CPUS*0.32 \
-  --//source/extensions/wasm_runtime/v8:enabled=false \
-  --build_tag_filters=-no_asan --config=oss-fuzz \
-  ${EXTRA_BAZEL_FLAGS} \
-  ${OSS_FUZZ_TARGETS[*]}
+# Build driverless libraries.
+bazel build --verbose_failures --dynamic_mode=off --spawn_strategy=standalone \
+  --genrule_strategy=standalone --strip=never \
+  --copt=-fno-sanitize=vptr --linkopt=-fno-sanitize=vptr \
+  --define tcmalloc=disabled --define signal_trace=disabled \
+  --define ENVOY_CONFIG_ASAN=1 --copt -D__SANITIZE_ADDRESS__ \
+  --define force_libcpp=enabled --build_tag_filters=-no_asan \
+  --linkopt=-lc++ --linkopt=-pthread ${EXTRA_BAZEL_FLAGS} \
+  ${BAZEL_BUILD_TARGETS[*]} ${BAZEL_CORPUS_TARGETS[*]}
 
 # Profiling with coverage requires that we resolve+copy all Bazel symlinks and
 # also remap everything under proc/self/cwd to correspond to Bazel build paths.
@@ -75,8 +99,36 @@
   rsync -avLkR "${RSYNC_FILTER_ARGS[@]}" /tmp "${OUT}"
 fi
 
-for oss_fuzz_archive in $(find bazel-bin/ -name '*_oss_fuzz.tar'); do
-    tar -xvf "${oss_fuzz_archive}" -C "${OUT}"
+# Copy out test driverless binaries from bazel-bin/.
+for t in ${FILTERED_FUZZER_TARGETS}
+do
+  TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
+  TARGET_DRIVERLESS=bazel-bin/"${t}"_driverless
+  echo "Copying fuzzer $t"
+  cp "${TARGET_DRIVERLESS}" "${OUT}"/"${TARGET_BASE}"_fuzz_test
+done
+
+# Zip up related test corpuses.
+# TODO(htuch): just use the .tar directly when
+# https://github.com/google/oss-fuzz/issues/1918 is fixed.
+CORPUS_UNTAR_PATH="${PWD}"/_tmp_corpus
+for t in ${FILTERED_FUZZER_TARGETS}
+do
+  echo "Extracting and zipping fuzzer $t corpus"
+  rm -rf "${CORPUS_UNTAR_PATH}"
+  mkdir -p "${CORPUS_UNTAR_PATH}"
+  tar -C "${CORPUS_UNTAR_PATH}" -xvf bazel-bin/"${t}"_corpus_tar.tar
+  TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
+  # There may be *.dict files in this folder that need to be moved into the OUT dir.
+  find "${CORPUS_UNTAR_PATH}" -type f -name *.dict -exec mv -n {} "${OUT}"/ \;
+  zip "${OUT}/${TARGET_BASE}"_fuzz_test_seed_corpus.zip \
+    "${CORPUS_UNTAR_PATH}"/*
+done
+rm -rf "${CORPUS_UNTAR_PATH}"
+
+# Copy dictionaries and options files to $OUT/
+for d in $FUZZER_DICTIONARIES; do
+  cp "$d" "${OUT}"/
 done
 
 # Cleanup bazel- symlinks to avoid oss-fuzz trying to copy out of the build
diff --git a/projects/envoy/project.yaml b/projects/envoy/project.yaml
index 5fae149..eccfd77 100644
--- a/projects/envoy/project.yaml
+++ b/projects/envoy/project.yaml
@@ -1,22 +1,14 @@
 homepage: "https://www.envoyproxy.io/"
-language: c++
 primary_contact: "htuch@google.com"
 auto_ccs:
   - "mattklein123@gmail.com"
   - "alyssar@google.com"
   - "dio@tetrate.io"
+  - "jbuckland@google.com"
   - "jmarantz@google.com"
   - "lizan@tetrate.io"
   - "envoy-security@googlegroups.com"
   - "yavlasov@google.com"
   - "asraa@google.com"
-  - "adip@google.com"
   - "avd@google.com"
-  - "skerner@google.com"
-  - "rdsmith@google.com"
-  - "chaoqinli@google.com"
-  - "yanjunxiang@google.com"
-  - "arquebus@appspot.gserviceaccount.com"
-  - "david@adalogics.com"
 coverage_extra_args: -ignore-filename-regex=.*\.cache.*envoy_deps_cache.*
-main_repo: 'https://github.com/envoyproxy/envoy.git'
diff --git a/projects/esp-v2/Dockerfile b/projects/esp-v2/Dockerfile
deleted file mode 100644
index 0e5a296..0000000
--- a/projects/esp-v2/Dockerfile
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-## This file was copied from envoy (with minor changes).
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get -y install  \
-    build-essential \
-    openjdk-8-jdk   \
-    make            \
-    ninja-build     \
-    curl            \
-    autoconf        \
-    libtool         \
-    wget            \
-    golang          \
-    python          \
-    rsync
-
-# Install Bazelisk
-RUN wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v0.0.8/bazelisk-linux-amd64; \
-    chmod +x /usr/local/bin/bazel
-
-RUN git clone --depth 1 https://github.com/GoogleCloudPlatform/esp-v2.git
-WORKDIR $SRC/esp-v2/
-COPY build.sh $SRC/
diff --git a/projects/esp-v2/build.sh b/projects/esp-v2/build.sh
deleted file mode 100755
index 4206b30..0000000
--- a/projects/esp-v2/build.sh
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-## Copied from envoy
-
-export CFLAGS="$CFLAGS"
-export CXXFLAGS="$CXXFLAGS"
-
-FUZZER_DICTIONARIES="\
-"
-
-# Copy $CFLAGS and $CXXFLAGS into Bazel command-line flags, for both
-# compilation and linking.
-#
-# Some flags, such as `-stdlib=libc++`, generate warnings if used on a C source
-# file. Since the build runs with `-Werror` this will cause it to break, so we
-# use `--conlyopt` and `--cxxopt` instead of `--copt`.
-#
-declare -r EXTRA_BAZEL_FLAGS="$(
-for f in ${CFLAGS}; do
-  echo "--conlyopt=${f}" "--linkopt=${f}"
-done
-for f in ${CXXFLAGS}; do
-  echo "--cxxopt=${f}" "--linkopt=${f}"
-done
-
-if [ "$SANITIZER" = "undefined" ]
-then
-  # Bazel uses clang to link binary, which does not link clang_rt ubsan library for C++ automatically.
-  # See issue: https://github.com/bazelbuild/bazel/issues/8777
-  echo "--linkopt=\"$(find $(llvm-config --libdir) -name libclang_rt.ubsan_standalone_cxx-x86_64.a | head -1)\""
-elif [ "$SANITIZER" = "address" ]
-then
-  echo "--copt -D__SANITIZE_ADDRESS__" "--copt -DADDRESS_SANITIZER=1"
-fi
-)"
-
-declare BAZEL_BUILD_TARGETS=""
-declare BAZEL_CORPUS_TARGETS=""
-declare FILTERED_FUZZER_TARGETS=""
-for t in $(bazel query 'src/...' --output label | grep '_fuzz_test$')
-do
-  declare TAGGED=$(bazel query "attr('tags', 'no_fuzz', ${t})")
-  if [ -z "${TAGGED}" ]
-  then
-    BASE_PATH=${t//://}
-    BASE_PATH=${BASE_PATH#"//"}
-    FILTERED_FUZZER_TARGETS+="${BASE_PATH} "
-    BAZEL_BUILD_TARGETS+="${t}_driverless "
-    BAZEL_CORPUS_TARGETS+="${t}_corpus_tar "
-  fi
-done
-
-# Build driverless libraries.
-# Benchmark about 3 GB per CPU (10 threads for 28.8 GB RAM)
-# TODO(nareddyt): Remove deprecation warnings when Envoy and deps moves to C++17
-bazel build --verbose_failures --dynamic_mode=off --spawn_strategy=sandboxed \
-  --local_cpu_resources=HOST_CPUS*0.32 \
-  --genrule_strategy=standalone --strip=never \
-  --copt=-fno-sanitize=vptr --linkopt=-fno-sanitize=vptr \
-  --define tcmalloc=disabled --define signal_trace=disabled \
-  --define ENVOY_CONFIG_ASAN=1 \
-  --define force_libcpp=enabled --build_tag_filters=-no_asan \
-  --linkopt=-lc++ --linkopt=-pthread ${EXTRA_BAZEL_FLAGS} \
-  ${BAZEL_BUILD_TARGETS[*]} ${BAZEL_CORPUS_TARGETS[*]}
-
-# Profiling with coverage requires that we resolve+copy all Bazel symlinks and
-# also remap everything under proc/self/cwd to correspond to Bazel build paths.
-if [ "$SANITIZER" = "coverage" ]
-then
-  # The build invoker looks for sources in $SRC, but it turns out that we need
-  # to not be buried under src/, paths are expected at out/proc/self/cwd by
-  # the profiler.
-  declare -r REMAP_PATH="${OUT}/proc/self/cwd"
-  mkdir -p "${REMAP_PATH}"
-
-  rsync -av "${SRC}"/esp-v2/src "${REMAP_PATH}"
-  # Remove filesystem loop manually.
-  rm -rf "${SRC}"/esp-v2/bazel-esp-v2/external/esp-v2
-  # Clean up symlinks with a missing referrant.
-  find "${SRC}"/esp-v2/bazel-esp-v2/external -follow -type l -ls -delete || echo "Symlink cleanup soft fail"
-  rsync -avLk "${SRC}"/esp-v2/bazel-esp-v2/external "${REMAP_PATH}"
-  # For .h, and some generated artifacts, we need bazel-out/. Need to heavily
-  # filter out the build objects from bazel-out/. Also need to resolve symlinks,
-  # since they don't make sense outside the build container.
-  declare -r RSYNC_FILTER_ARGS=("--include" "*.h" "--include" "*.cc" "--include" \
-    "*.hpp" "--include" "*.cpp" "--include" "*.c" "--include" "*/" "--exclude" "*")
-  rsync -avLk "${RSYNC_FILTER_ARGS[@]}" "${SRC}"/esp-v2/bazel-out "${REMAP_PATH}"
-  rsync -avLkR "${RSYNC_FILTER_ARGS[@]}" "${HOME}" "${OUT}"
-  # Some low-level libraries are built located /tmp.
-  # But ESPv2 engineeers don't really look at them.
-  # rsync -avLkR "${RSYNC_FILTER_ARGS[@]}" /tmp "${OUT}"
-fi
-
-# Copy out test driverless binaries from bazel-bin/.
-for t in ${FILTERED_FUZZER_TARGETS}
-do
-  TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
-  TARGET_DRIVERLESS=bazel-bin/"${t}"_driverless
-  echo "Copying fuzzer $t"
-  cp "${TARGET_DRIVERLESS}" "${OUT}"/"${TARGET_BASE}"_fuzz_test
-done
-
-# Zip up related test corpuses.
-# TODO(nareddyt): just use the .tar directly when
-# https://github.com/google/oss-fuzz/issues/1918 is fixed.
-CORPUS_UNTAR_PATH="${PWD}"/_tmp_corpus
-for t in ${FILTERED_FUZZER_TARGETS}
-do
-  echo "Extracting and zipping fuzzer $t corpus"
-  rm -rf "${CORPUS_UNTAR_PATH}"
-  mkdir -p "${CORPUS_UNTAR_PATH}"
-  tar -C "${CORPUS_UNTAR_PATH}" -xvf bazel-bin/"${t}"_corpus_tar.tar
-  TARGET_BASE="$(expr "$t" : '.*/\(.*\)_fuzz_test')"
-  # There may be *.dict files in this folder that need to be moved into the OUT dir.
-  find "${CORPUS_UNTAR_PATH}" -type f -name *.dict -exec mv -n {} "${OUT}"/ \;
-  zip "${OUT}/${TARGET_BASE}"_fuzz_test_seed_corpus.zip \
-    "${CORPUS_UNTAR_PATH}"/*
-done
-rm -rf "${CORPUS_UNTAR_PATH}"
-
-# Copy dictionaries and options files to $OUT/
-for d in $FUZZER_DICTIONARIES; do
-  cp "$d" "${OUT}"/
-done
-
-# Cleanup bazel- symlinks to avoid oss-fuzz trying to copy out of the build
-# cache.
-rm -f bazel-*
diff --git a/projects/esp-v2/project.yaml b/projects/esp-v2/project.yaml
deleted file mode 100644
index a24dbd2..0000000
--- a/projects/esp-v2/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/GoogleCloudPlatform/esp-v2"
-language: c++
-primary_contact: "nareddyt@google.com"
-auto_ccs:
-- "taoxuy@google.com"
-- "qiwzhang@google.com"
-sanitizers:
-- address
-- undefined
-coverage_extra_args: -ignore-filename-regex=.*\.cache.* -ignore-filename-regex=.*bazel-out.*
-main_repo: 'https://github.com/GoogleCloudPlatform/esp-v2.git'
diff --git a/projects/example/project.yaml b/projects/example/project.yaml
index 9ae82d4..ac3a4c7 100644
--- a/projects/example/project.yaml
+++ b/projects/example/project.yaml
@@ -1,9 +1,6 @@
 # Provide the home page for *your* project:
 homepage: "https://my-api.example.com"
 
-# Language the project is written in:
-language: c++
-
 # Provide the e-mail for the primary contact and others:
 # Un-comment the below lines to make auto-cc work.
 # primary_contact: "primary-my-api-maintainer@example.com"
diff --git a/projects/excelize/project.yaml b/projects/excelize/project.yaml
deleted file mode 100644
index 428a813..0000000
--- a/projects/excelize/project.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-homepage: "https://xuri.me/excelize"
-language: go
-primary_contact: "xuri.me@gmail.com"
\ No newline at end of file
diff --git a/projects/expat/Dockerfile b/projects/expat/Dockerfile
index b9aedc9..64efaff 100644
--- a/projects/expat/Dockerfile
+++ b/projects/expat/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mike.aizatsky@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool docbook2x cmake
 
 RUN git clone --depth 1 https://github.com/libexpat/libexpat expat
diff --git a/projects/expat/build.sh b/projects/expat/build.sh
index 333d258..21c4f51 100755
--- a/projects/expat/build.sh
+++ b/projects/expat/build.sh
@@ -15,33 +15,9 @@
 #
 ################################################################################
 
-: ${LD:="${CXX}"}
-: ${LDFLAGS:="${CXXFLAGS}"}  # to make sure we link with sanitizer runtime
-
-cmake_args=(
-    # Specific to Expat
-    -DEXPAT_BUILD_FUZZERS=ON
-    -DEXPAT_OSSFUZZ_BUILD=ON
-    -DEXPAT_SHARED_LIBS=OFF
-
-    # C compiler
-    -DCMAKE_C_COMPILER="${CC}"
-    -DCMAKE_C_FLAGS="${CFLAGS}"
-
-    # C++ compiler
-    -DCMAKE_CXX_COMPILER="${CXX}"
-    -DCMAKE_CXX_FLAGS="${CXXFLAGS}"
-
-    # Linker
-    -DCMAKE_LINKER="${LD}"
-    -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}"
-    -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}"
-    -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}"
-)
-
 mkdir -p build
 cd build
-cmake ../expat "${cmake_args[@]}"
+cmake ../expat -DEXPAT_BUILD_FUZZERS=ON -DEXPAT_OSSFUZZ_BUILD=ON -DEXPAT_SHARED_LIBS=OFF
 make -j$(nproc)
 
 for fuzzer in fuzz/*;
diff --git a/projects/expat/project.yaml b/projects/expat/project.yaml
index a72ec4e..0022a91 100644
--- a/projects/expat/project.yaml
+++ b/projects/expat/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/libexpat/libexpat"
-language: c++
 primary_contact: "sebastian@pipping.org"
 auto_ccs:
  - "rhodri@kynesim.co.uk"
@@ -7,7 +6,7 @@
  - "webmaster@hartwork.org"
  - "bshas3@gmail.com"
 vendor_ccs:
- - "twsmith@mozilla.com"
+ - "cdiehl@mozilla.com"
 sanitizers:
   - address
   - memory
@@ -15,4 +14,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/libexpat/libexpat'
diff --git a/projects/exprtk/Dockerfile b/projects/exprtk/Dockerfile
deleted file mode 100644
index 966d4e9..0000000
--- a/projects/exprtk/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/ArashPartow/exprtk.git exprtk
-WORKDIR exprtk
-COPY build.sh exprtk_fuzzer.cpp exprtk_test_expressions.dict $SRC/
diff --git a/projects/exprtk/build.sh b/projects/exprtk/build.sh
deleted file mode 100644
index 2fcb53d..0000000
--- a/projects/exprtk/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cp $SRC/*.dict $OUT/
-
-CXXFLAGS="${CXXFLAGS} -O2 -fno-sanitize=integer-divide-by-zero,float-divide-by-zero"
-
-$CXX -std=c++11 $CXXFLAGS -I. -I$SRC/exprtk \
-     $SRC/exprtk_fuzzer.cpp -o $OUT/exprtk_fuzzer \
-     $LIB_FUZZING_ENGINE
diff --git a/projects/exprtk/exprtk_fuzzer.cpp b/projects/exprtk/exprtk_fuzzer.cpp
deleted file mode 100644
index 3b10913..0000000
--- a/projects/exprtk/exprtk_fuzzer.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstdint>
-#include <string>
-
-#define exprtk_enable_runtime_checks
-#include "exprtk.hpp"
-
-
-template <typename T>
-void run(const std::string& expression_string)
-{
-   typedef exprtk::symbol_table<T>          symbol_table_t;
-   typedef exprtk::expression<T>              expression_t;
-   typedef exprtk::parser<T>                      parser_t;
-   typedef exprtk::loop_runtime_check loop_runtime_check_t;
-
-   T x = T(1.2345);
-   T y = T(2.2345);
-   T z = T(3.2345);
-   T w = T(4.2345);
-
-   symbol_table_t symbol_table;
-   symbol_table.add_variable("x",x);
-   symbol_table.add_variable("y",y);
-   symbol_table.add_variable("z",z);
-   symbol_table.add_variable("w",w);
-   symbol_table.add_constants();
-
-   expression_t expression;
-   expression.register_symbol_table(symbol_table);
-
-   loop_runtime_check_t loop_runtime_check;
-   loop_runtime_check.loop_set = loop_runtime_check_t::e_all_loops;
-   loop_runtime_check.max_loop_iterations = 1000000;
-
-   parser_t parser;
-
-   parser.register_loop_runtime_check(loop_runtime_check);
-
-   if (parser.compile(expression_string, expression))
-   {
-      const std::size_t max_expression_size = 64 * 1024;
-
-      if (expression_string.size() <= max_expression_size)
-      {
-         try
-         {
-            expression.value();
-         }
-         catch (std::runtime_error& rte)
-         {}
-
-         parser.clear_loop_runtime_check();
-      }
-   }
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
-{
-   const std::string expression(reinterpret_cast<const char*>(data), size);
-
-   run<double>(expression);
-   run<float> (expression);
-
-   return 0;
-}
diff --git a/projects/exprtk/exprtk_test_expressions.dict b/projects/exprtk/exprtk_test_expressions.dict
deleted file mode 100644
index 40711f0..0000000
--- a/projects/exprtk/exprtk_test_expressions.dict
+++ /dev/null
@@ -1,7239 +0,0 @@
-"1"
-"a"
-"()"
-"a*2"
-"a+1"
-"a+b"
-"(())"
-"a+-b"
-"(a*e)"
-"(a+e)"
-"(a-a)"
-"(b*e)"
-"(b+a)"
-"(b-b)"
-"(e*e)"
-"1+a^2"
-"2*a+1"
-"a*2.2"
-"a*b*c"
-"a*b+c"
-"a+1.1"
-"a+b*c"
-"a+b+c"
-"a+b-c"
-"a-b-c"
-"a/b/c"
-"a^2+1"
-"a^2^3"
-"b^2*2"
-"x*y*z"
-"x*y+z"
-"x*y-z"
-"x*y/z"
-"x+y*z"
-"x+y+z"
-"x+y-z"
-"x+y/z"
-"x-y*z"
-"x-y/z"
-"x/y*z"
-"x/y+z"
-"x/y-z"
-"x/y/z"
-"((()))"
-"(pi*b)"
-"(pi+b)"
-"(x)(x)"
-"[x][x]"
-"abs(a)"
-"cos(a)"
-"sin(a)"
-"tan(a)"
-"{x}{x}"
-"(a+b)*3"
-"(pi+pi)"
-"1.1*a^2"
-"1.1+a^2"
-"2*(a+b)"
-"2.2*b^2"
-"2.2*y*z"
-"2.2*y+z"
-"2.2*y-z"
-"2.2*y/z"
-"2.2+y*z"
-"2.2+y+z"
-"2.2+y-z"
-"2.2+y/z"
-"2.2-y*z"
-"2.2-y/z"
-"2.2/y*z"
-"2.2/y+z"
-"2.2/y-z"
-"2.2/y/z"
-"a*2+b*2"
-"a^2+b^2"
-"sqrt(a)"
-"x*3.3*z"
-"x*3.3+z"
-"x*3.3-z"
-"x*3.3/z"
-"x*y*4.4"
-"x*y*z+w"
-"x*y*z-w"
-"x*y+4.4"
-"x*y+z*w"
-"x*y+z+w"
-"x*y+z-w"
-"x*y+z/w"
-"x*y-4.4"
-"x*y-z*w"
-"x*y-z+w"
-"x*y-z-w"
-"x*y-z/w"
-"x*y/4.4"
-"x*y/z+w"
-"x*y/z-w"
-"x+3.3*z"
-"x+3.3+z"
-"x+3.3-z"
-"x+3.3/z"
-"x+y*4.4"
-"x+y*z*w"
-"x+y*z-w"
-"x+y*z/w"
-"x+y+4.4"
-"x+y+z*w"
-"x+y+z-w"
-"x+y+z/w"
-"x+y-4.4"
-"x+y-z*w"
-"x+y-z-w"
-"x+y-z/w"
-"x+y/4.4"
-"x+y/z*w"
-"x+y/z+w"
-"x+y/z-w"
-"x+y/z/w"
-"x-3.3*z"
-"x-3.3/z"
-"x-y*4.4"
-"x-y*z*w"
-"x-y*z-w"
-"x-y*z/w"
-"x-y+z*w"
-"x-y+z+w"
-"x-y+z/w"
-"x-y-z*w"
-"x-y-z+w"
-"x-y-z/w"
-"x-y/4.4"
-"x-y/z*w"
-"x-y/z-w"
-"x-y/z/w"
-"x/3.3*z"
-"x/3.3+z"
-"x/3.3-z"
-"x/3.3/z"
-"x/y*4.4"
-"x/y*z+w"
-"x/y*z-w"
-"x/y+4.4"
-"x/y+z*w"
-"x/y+z+w"
-"x/y+z-w"
-"x/y+z/w"
-"x/y-4.4"
-"x/y-z*w"
-"x/y-z+w"
-"x/y-z-w"
-"x/y-z/w"
-"x/y/4.4"
-"x/y/z+w"
-"x/y/z-w"
-"(3.70/b)"
-"(a/0.20)"
-"(b+2.07)"
-"(b+3.52)"
-"-(b^1.1)"
-"((a/a)+e)"
-"((b/a)/a)"
-"((e/b)+e)"
-"((x*y*z))"
-"((x*y+z))"
-"((x*y-z))"
-"((x*y/z))"
-"((x+y*z))"
-"((x+y+z))"
-"((x+y-z))"
-"((x+y/z))"
-"((x-y*z))"
-"((x-y+z))"
-"((x-y-z))"
-"((x-y/z))"
-"((x/y*z))"
-"((x/y+z))"
-"((x/y-z))"
-"((x/y/z))"
-"(2*a+1)*3"
-"(2*a+2*a)"
-"(3.00+pi)"
-"(a+b)*3.3"
-"2.2*(a+b)"
-"2.2*a+1.1"
-"2.2*y*4.4"
-"2.2*y*z+w"
-"2.2*y*z-w"
-"2.2*y+4.4"
-"2.2*y+z*w"
-"2.2*y+z+w"
-"2.2*y+z-w"
-"2.2*y+z/w"
-"2.2*y-4.4"
-"2.2*y-z*w"
-"2.2*y-z+w"
-"2.2*y-z-w"
-"2.2*y-z/w"
-"2.2*y/4.4"
-"2.2*y/z+w"
-"2.2*y/z-w"
-"2.2+y*4.4"
-"2.2+y*z*w"
-"2.2+y*z-w"
-"2.2+y*z/w"
-"2.2+y+4.4"
-"2.2+y+z*w"
-"2.2+y+z-w"
-"2.2+y+z/w"
-"2.2+y-4.4"
-"2.2+y-z*w"
-"2.2+y-z-w"
-"2.2+y-z/w"
-"2.2+y/4.4"
-"2.2+y/z*w"
-"2.2+y/z+w"
-"2.2+y/z-w"
-"2.2+y/z/w"
-"2.2-y*4.4"
-"2.2-y*z*w"
-"2.2-y*z-w"
-"2.2-y*z/w"
-"2.2-y+z*w"
-"2.2-y+z+w"
-"2.2-y+z/w"
-"2.2-y-z*w"
-"2.2-y-z+w"
-"2.2-y-z/w"
-"2.2-y/4.4"
-"2.2-y/z*w"
-"2.2-y/z-w"
-"2.2-y/z/w"
-"2.2/y*4.4"
-"2.2/y*z+w"
-"2.2/y*z-w"
-"2.2/y+4.4"
-"2.2/y+z*w"
-"2.2/y+z+w"
-"2.2/y+z-w"
-"2.2/y+z/w"
-"2.2/y-4.4"
-"2.2/y-z*w"
-"2.2/y-z+w"
-"2.2/y-z-w"
-"2.2/y-z/w"
-"2.2/y/4.4"
-"2.2/y/z+w"
-"2.2/y/z-w"
-"a+b*(a+b)"
-"a^2^3-a^8"
-"tan(1.29)"
-"x*3.3*4.4"
-"x*3.3*z+w"
-"x*3.3*z-w"
-"x*3.3+4.4"
-"x*3.3+z*w"
-"x*3.3+z+w"
-"x*3.3+z-w"
-"x*3.3+z/w"
-"x*3.3-4.4"
-"x*3.3-z*w"
-"x*3.3-z+w"
-"x*3.3-z-w"
-"x*3.3-z/w"
-"x*3.3/4.4"
-"x*3.3/z+w"
-"x*3.3/z-w"
-"x*y*4.4+w"
-"x*y*4.4-w"
-"x*y*z+5.5"
-"x*y*z-5.5"
-"x*y+4.4*w"
-"x*y+4.4+w"
-"x*y+4.4-w"
-"x*y+4.4/w"
-"x*y+z*5.5"
-"x*y+z+5.5"
-"x*y+z-5.5"
-"x*y+z/5.5"
-"x*y-4.4*w"
-"x*y-4.4+w"
-"x*y-4.4-w"
-"x*y-4.4/w"
-"x*y-z*5.5"
-"x*y-z+5.5"
-"x*y-z-5.5"
-"x*y-z/5.5"
-"x*y/4.4+w"
-"x*y/4.4-w"
-"x*y/z+5.5"
-"x*y/z-5.5"
-"x+3.3*4.4"
-"x+3.3*z*w"
-"x+3.3*z-w"
-"x+3.3*z/w"
-"x+3.3+4.4"
-"x+3.3+z*w"
-"x+3.3+z-w"
-"x+3.3+z/w"
-"x+3.3-4.4"
-"x+3.3-z*w"
-"x+3.3-z-w"
-"x+3.3-z/w"
-"x+3.3/4.4"
-"x+3.3/z*w"
-"x+3.3/z+w"
-"x+3.3/z-w"
-"x+3.3/z/w"
-"x+y*4.4*w"
-"x+y*4.4-w"
-"x+y*4.4/w"
-"x+y*z*5.5"
-"x+y*z-5.5"
-"x+y*z/5.5"
-"x+y+4.4*w"
-"x+y+4.4-w"
-"x+y+4.4/w"
-"x+y+z*5.5"
-"x+y+z-5.5"
-"x+y+z/5.5"
-"x+y-4.4*w"
-"x+y-4.4-w"
-"x+y-4.4/w"
-"x+y-z*5.5"
-"x+y-z-5.5"
-"x+y-z/5.5"
-"x+y/4.4*w"
-"x+y/4.4+w"
-"x+y/4.4-w"
-"x+y/4.4/w"
-"x+y/z*5.5"
-"x+y/z+5.5"
-"x+y/z-5.5"
-"x+y/z/5.5"
-"x-3.3*4.4"
-"x-3.3*z*w"
-"x-3.3*z-w"
-"x-3.3*z/w"
-"x-3.3+z*w"
-"x-3.3+z+w"
-"x-3.3+z/w"
-"x-3.3-z*w"
-"x-3.3-z+w"
-"x-3.3-z/w"
-"x-3.3/4.4"
-"x-3.3/z*w"
-"x-3.3/z-w"
-"x-3.3/z/w"
-"x-y*4.4*w"
-"x-y*4.4-w"
-"x-y*4.4/w"
-"x-y*z*5.5"
-"x-y*z-5.5"
-"x-y*z/5.5"
-"x-y+4.4*w"
-"x-y+4.4+w"
-"x-y+4.4/w"
-"x-y+z*5.5"
-"x-y+z+5.5"
-"x-y+z/5.5"
-"x-y-4.4*w"
-"x-y-4.4+w"
-"x-y-4.4/w"
-"x-y-z*5.5"
-"x-y-z+5.5"
-"x-y-z/5.5"
-"x-y/4.4*w"
-"x-y/4.4-w"
-"x-y/4.4/w"
-"x-y/z*5.5"
-"x-y/z-5.5"
-"x-y/z/5.5"
-"x/3.3*4.4"
-"x/3.3*z+w"
-"x/3.3*z-w"
-"x/3.3+4.4"
-"x/3.3+z*w"
-"x/3.3+z+w"
-"x/3.3+z-w"
-"x/3.3+z/w"
-"x/3.3-4.4"
-"x/3.3-z*w"
-"x/3.3-z+w"
-"x/3.3-z-w"
-"x/3.3-z/w"
-"x/3.3/4.4"
-"x/3.3/z+w"
-"x/3.3/z-w"
-"x/y*4.4+w"
-"x/y*4.4-w"
-"x/y*z+5.5"
-"x/y*z-5.5"
-"x/y+4.4*w"
-"x/y+4.4+w"
-"x/y+4.4-w"
-"x/y+4.4/w"
-"x/y+z*5.5"
-"x/y+z+5.5"
-"x/y+z-5.5"
-"x/y+z/5.5"
-"x/y-4.4*w"
-"x/y-4.4+w"
-"x/y-4.4-w"
-"x/y-4.4/w"
-"x/y-z*5.5"
-"x/y-z+5.5"
-"x/y-z-5.5"
-"x/y-z/5.5"
-"x/y/4.4+w"
-"x/y/4.4-w"
-"x/y/z+5.5"
-"x/y/z-5.5"
-"((b/b)/pi)"
-"((x))((x))"
-"(1+b)*(-3)"
-"(b+(pi*a))"
-"-a^2^3-a^8"
-"1.1*a^2.01"
-"[[x]][[x]]"
-"e^log(7*a)"
-"{{x}}{{x}}"
-"(((x*y)*z))"
-"(((x*y)+z))"
-"(((x*y)-z))"
-"(((x*y)/z))"
-"(((x+y)*z))"
-"(((x+y)+z))"
-"(((x+y)-z))"
-"(((x+y)/z))"
-"(((x-y)*z))"
-"(((x-y)/z))"
-"(((x/y)*z))"
-"(((x/y)+z))"
-"(((x/y)-z))"
-"(((x/y)/z))"
-"((a-pi)*pi)"
-"((x*(y*z)))"
-"((x*(y+z)))"
-"((x*(y-z)))"
-"((x*(y/z)))"
-"((x*y*z+w))"
-"((x*y*z-w))"
-"((x*y+z*w))"
-"((x*y+z+w))"
-"((x*y+z-w))"
-"((x*y+z/w))"
-"((x*y-z*w))"
-"((x*y-z+w))"
-"((x*y-z-w))"
-"((x*y-z/w))"
-"((x*y/z+w))"
-"((x*y/z-w))"
-"((x+(y*z)))"
-"((x+(y+z)))"
-"((x+(y-z)))"
-"((x+(y/z)))"
-"((x+y*z*w))"
-"((x+y*z-w))"
-"((x+y*z/w))"
-"((x+y+z*w))"
-"((x+y+z-w))"
-"((x+y+z/w))"
-"((x+y-z*w))"
-"((x+y-z-w))"
-"((x+y-z/w))"
-"((x+y/z*w))"
-"((x+y/z+w))"
-"((x+y/z-w))"
-"((x+y/z/w))"
-"((x-(y*z)))"
-"((x-(y+z)))"
-"((x-(y-z)))"
-"((x-(y/z)))"
-"((x-y*z*w))"
-"((x-y*z+w))"
-"((x-y*z-w))"
-"((x-y*z/w))"
-"((x-y+z*w))"
-"((x-y+z+w))"
-"((x-y+z/w))"
-"((x-y-z*w))"
-"((x-y-z+w))"
-"((x-y-z/w))"
-"((x-y/z*w))"
-"((x-y/z+w))"
-"((x-y/z-w))"
-"((x-y/z/w))"
-"((x/(y*z)))"
-"((x/(y+z)))"
-"((x/(y-z)))"
-"((x/(y/z)))"
-"((x/y*z+w))"
-"((x/y*z-w))"
-"((x/y+z*w))"
-"((x/y+z+w))"
-"((x/y+z-w))"
-"((x/y+z/w))"
-"((x/y-z*w))"
-"((x/y-z+w))"
-"((x/y-z-w))"
-"((x/y-z/w))"
-"((x/y/z+w))"
-"((x/y/z-w))"
-"1-(a/b*0.5)"
-"10^log(3+b)"
-"2.2*a^1+1.1"
-"2.2*y*4.4+w"
-"2.2*y*4.4-w"
-"2.2*y*z+5.5"
-"2.2*y*z-5.5"
-"2.2*y+4.4*w"
-"2.2*y+4.4+w"
-"2.2*y+4.4-w"
-"2.2*y+4.4/w"
-"2.2*y+z*5.5"
-"2.2*y+z+5.5"
-"2.2*y+z-5.5"
-"2.2*y+z/5.5"
-"2.2*y-4.4*w"
-"2.2*y-4.4+w"
-"2.2*y-4.4-w"
-"2.2*y-4.4/w"
-"2.2*y-z*5.5"
-"2.2*y-z+5.5"
-"2.2*y-z-5.5"
-"2.2*y-z/5.5"
-"2.2*y/4.4+w"
-"2.2*y/4.4-w"
-"2.2*y/z+5.5"
-"2.2*y/z-5.5"
-"2.2+y*4.4*w"
-"2.2+y*4.4-w"
-"2.2+y*4.4/w"
-"2.2+y*z*5.5"
-"2.2+y*z-5.5"
-"2.2+y*z/5.5"
-"2.2+y+4.4*w"
-"2.2+y+4.4-w"
-"2.2+y+4.4/w"
-"2.2+y+z*5.5"
-"2.2+y+z-5.5"
-"2.2+y+z/5.5"
-"2.2+y-4.4*w"
-"2.2+y-4.4-w"
-"2.2+y-4.4/w"
-"2.2+y-z*5.5"
-"2.2+y-z-5.5"
-"2.2+y-z/5.5"
-"2.2+y/4.4*w"
-"2.2+y/4.4+w"
-"2.2+y/4.4-w"
-"2.2+y/4.4/w"
-"2.2+y/z*5.5"
-"2.2+y/z+5.5"
-"2.2+y/z-5.5"
-"2.2+y/z/5.5"
-"2.2-y*4.4*w"
-"2.2-y*4.4-w"
-"2.2-y*4.4/w"
-"2.2-y*z*5.5"
-"2.2-y*z-5.5"
-"2.2-y*z/5.5"
-"2.2-y+4.4*w"
-"2.2-y+4.4+w"
-"2.2-y+4.4/w"
-"2.2-y+z*5.5"
-"2.2-y+z+5.5"
-"2.2-y+z/5.5"
-"2.2-y-4.4*w"
-"2.2-y-4.4+w"
-"2.2-y-4.4/w"
-"2.2-y-z*5.5"
-"2.2-y-z+5.5"
-"2.2-y-z/5.5"
-"2.2-y/4.4*w"
-"2.2-y/4.4-w"
-"2.2-y/4.4/w"
-"2.2-y/z*5.5"
-"2.2-y/z-5.5"
-"2.2-y/z/5.5"
-"2.2/y*4.4+w"
-"2.2/y*4.4-w"
-"2.2/y*z+5.5"
-"2.2/y*z-5.5"
-"2.2/y+4.4*w"
-"2.2/y+4.4+w"
-"2.2/y+4.4-w"
-"2.2/y+4.4/w"
-"2.2/y+z*5.5"
-"2.2/y+z+5.5"
-"2.2/y+z-5.5"
-"2.2/y+z/5.5"
-"2.2/y-4.4*w"
-"2.2/y-4.4+w"
-"2.2/y-4.4-w"
-"2.2/y-4.4/w"
-"2.2/y-z*5.5"
-"2.2/y-z+5.5"
-"2.2/y-z-5.5"
-"2.2/y-z/5.5"
-"2.2/y/4.4+w"
-"2.2/y/4.4-w"
-"2.2/y/z+5.5"
-"2.2/y/z-5.5"
-"sin(tan(b))"
-"x*3.3*4.4+w"
-"x*3.3*4.4-w"
-"x*3.3*z+5.5"
-"x*3.3*z-5.5"
-"x*3.3+4.4*w"
-"x*3.3+4.4+w"
-"x*3.3+4.4-w"
-"x*3.3+4.4/w"
-"x*3.3+z*5.5"
-"x*3.3+z+5.5"
-"x*3.3+z-5.5"
-"x*3.3+z/5.5"
-"x*3.3-4.4*w"
-"x*3.3-4.4+w"
-"x*3.3-4.4-w"
-"x*3.3-4.4/w"
-"x*3.3-z*5.5"
-"x*3.3-z+5.5"
-"x*3.3-z-5.5"
-"x*3.3-z/5.5"
-"x*3.3/4.4+w"
-"x*3.3/4.4-w"
-"x*3.3/z+5.5"
-"x*3.3/z-5.5"
-"x*y*z-x*y/z"
-"x*y+z+x*y-z"
-"x*y/z-x*y*z"
-"x+3.3*4.4*w"
-"x+3.3*4.4-w"
-"x+3.3*4.4/w"
-"x+3.3*z*5.5"
-"x+3.3*z-5.5"
-"x+3.3*z/5.5"
-"x+3.3+4.4*w"
-"x+3.3+4.4-w"
-"x+3.3+4.4/w"
-"x+3.3+z*5.5"
-"x+3.3+z-5.5"
-"x+3.3+z/5.5"
-"x+3.3-4.4*w"
-"x+3.3-4.4-w"
-"x+3.3-4.4/w"
-"x+3.3-z*5.5"
-"x+3.3-z-5.5"
-"x+3.3-z/5.5"
-"x+3.3/4.4*w"
-"x+3.3/4.4-w"
-"x+3.3/4.4/w"
-"x+3.3/z*5.5"
-"x+3.3/z+5.5"
-"x+3.3/z-5.5"
-"x+3.3/z/5.5"
-"x+y-z-x+y+z"
-"x+y/z+x+y*z"
-"x+y/z-x+y+z"
-"x-3.3*4.4*w"
-"x-3.3*4.4-w"
-"x-3.3*4.4/w"
-"x-3.3*z*5.5"
-"x-3.3*z-5.5"
-"x-3.3*z/5.5"
-"x-3.3+4.4*w"
-"x-3.3+4.4+w"
-"x-3.3+4.4/w"
-"x-3.3+z*5.5"
-"x-3.3+z+5.5"
-"x-3.3+z/5.5"
-"x-3.3-4.4*w"
-"x-3.3-4.4+w"
-"x-3.3-4.4/w"
-"x-3.3-z*5.5"
-"x-3.3-z+5.5"
-"x-3.3-z/5.5"
-"x-3.3/4.4*w"
-"x-3.3/4.4-w"
-"x-3.3/4.4/w"
-"x-3.3/z*5.5"
-"x-3.3/z-5.5"
-"x-3.3/z/5.5"
-"x-y*z+x+y*z"
-"x-y/z*x-y*z"
-"x-y/z*x-y/z"
-"x/3.3*4.4+w"
-"x/3.3*4.4-w"
-"x/3.3*z+5.5"
-"x/3.3*z-5.5"
-"x/3.3+4.4*w"
-"x/3.3+4.4+w"
-"x/3.3+4.4-w"
-"x/3.3+4.4/w"
-"x/3.3+z*5.5"
-"x/3.3+z+5.5"
-"x/3.3+z-5.5"
-"x/3.3+z/5.5"
-"x/3.3-4.4*w"
-"x/3.3-4.4+w"
-"x/3.3-4.4-w"
-"x/3.3-4.4/w"
-"x/3.3-z*5.5"
-"x/3.3-z+5.5"
-"x/3.3-z-5.5"
-"x/3.3-z/5.5"
-"x/3.3/4.4+w"
-"x/3.3/4.4-w"
-"x/3.3/z+5.5"
-"x/3.3/z-5.5"
-"x/y*z*x/y/z"
-"x/y+z*x/y-z"
-"x/y+z-x/y-z"
-"x/y/z+x/y*z"
-"(((((())))))"
-"((1.11+a)*a)"
-"((3.08+e)-b)"
-"((a+b)+3.55)"
-"((b*b)*2.41)"
-"(b/(b*0.06))"
-"a+b-e*pi/5^6"
-"a^-2^3-1/a^8"
-"a^b/e*pi-5+6"
-"(((a-a)+e)/a)"
-"(((b+e)+a)-a)"
-"((0.73+pi)*e)"
-"((3.123*y*z))"
-"((3.123*y+z))"
-"((3.123*y-z))"
-"((3.123*y/z))"
-"((3.123+y*z))"
-"((3.123+y+z))"
-"((3.123+y-z))"
-"((3.123+y/z))"
-"((3.123-y*z))"
-"((3.123-y+z))"
-"((3.123-y-z))"
-"((3.123-y/z))"
-"((3.123/y*z))"
-"((3.123/y+z))"
-"((3.123/y-z))"
-"((3.123/y/z))"
-"((a/pi)-2.55)"
-"((b*(b+b))*b)"
-"((pi/2.23)-a)"
-"((x*5.123*z))"
-"((x*5.123+z))"
-"((x*5.123-z))"
-"((x*5.123/z))"
-"((x*y*7.123))"
-"((x*y+7.123))"
-"((x*y-7.123))"
-"((x*y/7.123))"
-"((x+5.123*z))"
-"((x+5.123+z))"
-"((x+5.123-z))"
-"((x+5.123/z))"
-"((x+y*7.123))"
-"((x+y+7.123))"
-"((x+y-7.123))"
-"((x+y/7.123))"
-"((x-5.123*z))"
-"((x-5.123+z))"
-"((x-5.123-z))"
-"((x-5.123/z))"
-"((x-y*7.123))"
-"((x-y+7.123))"
-"((x-y-7.123))"
-"((x-y/7.123))"
-"((x/5.123*z))"
-"((x/5.123+z))"
-"((x/5.123-z))"
-"((x/5.123/z))"
-"((x/y*7.123))"
-"((x/y+7.123))"
-"((x/y-7.123))"
-"((x/y/7.123))"
-"(a*(b-(b/b)))"
-"(cos(2.41)/b)"
-"+a^+2^+3-a^+8"
-"123456.123456"
-"2.2*y*4.4-5.5"
-"2.2*y/4.4-5.5"
-"2.2+y*4.4*5.5"
-"2.2+y*4.4-5.5"
-"2.2+y*4.4/5.5"
-"2.2+y+4.4*5.5"
-"2.2+y+4.4/5.5"
-"2.2+y-4.4*5.5"
-"2.2+y-4.4/5.5"
-"2.2+y/4.4*5.5"
-"2.2+y/4.4+5.5"
-"2.2+y/4.4-5.5"
-"2.2+y/4.4/5.5"
-"2.2-y*4.4*5.5"
-"2.2-y*4.4-5.5"
-"2.2-y*4.4/5.5"
-"2.2-y+4.4*5.5"
-"2.2-y+4.4/5.5"
-"2.2-y-4.4*5.5"
-"2.2-y-4.4/5.5"
-"2.2-y/4.4*5.5"
-"2.2-y/4.4-5.5"
-"2.2-y/4.4/5.5"
-"2.2/y*4.4-5.5"
-"2.2/y/4.4-5.5"
-"sin(a)+sin(b)"
-"sqrt(a^2+b^2)"
-"tan((3.59-e))"
-"x*3.3*4.4-5.5"
-"x*3.3/4.4-5.5"
-"x+3.3*4.4-5.5"
-"x+3.3/4.4-5.5"
-"x-3.3*4.4-5.5"
-"x-3.3/4.4-5.5"
-"x/3.3*4.4-5.5"
-"x/3.3/4.4-5.5"
-"(((x)))(((x)))"
-"(1.1+b)*(-3.3)"
-"-(sin(pi+a)+1)"
-"[[[x]]][[[x]]]"
-"sqrt(a)<sin(8)"
-"tan(((e+e)/a))"
-"{{{x}}}{{{x}}}"
-"((((x*y)*z)-w))"
-"((((x*y)/z)-w))"
-"((((x+y)*z)-w))"
-"((((x+y)/z)-w))"
-"((((x-y)*z)-w))"
-"((((x-y)/z)-w))"
-"((((x/y)*z)-w))"
-"((((x/y)/z)-w))"
-"(((3.123*y)*z))"
-"(((3.123*y)+z))"
-"(((3.123*y)-z))"
-"(((3.123*y)/z))"
-"(((3.123+y)*z))"
-"(((3.123+y)+z))"
-"(((3.123+y)-z))"
-"(((3.123+y)/z))"
-"(((3.123-y)*z))"
-"(((3.123-y)/z))"
-"(((3.123/y)*z))"
-"(((3.123/y)+z))"
-"(((3.123/y)-z))"
-"(((3.123/y)/z))"
-"(((x*5.123)*z))"
-"(((x*5.123)+z))"
-"(((x*5.123)-z))"
-"(((x*5.123)/z))"
-"(((x*y)*(z+w)))"
-"(((x*y)*(z-w)))"
-"(((x*y)*7.123))"
-"(((x*y)+(z*w)))"
-"(((x*y)+(z+w)))"
-"(((x*y)+(z-w)))"
-"(((x*y)+(z/w)))"
-"(((x*y)+7.123))"
-"(((x*y)-(z*w)))"
-"(((x*y)-(z+w)))"
-"(((x*y)-(z-w)))"
-"(((x*y)-(z/w)))"
-"(((x*y)-7.123))"
-"(((x*y)/(z+w)))"
-"(((x*y)/(z-w)))"
-"(((x*y)/7.123))"
-"(((x+5.123)*z))"
-"(((x+5.123)+z))"
-"(((x+5.123)-z))"
-"(((x+5.123)/z))"
-"(((x+y)*(z*w)))"
-"(((x+y)*(z-w)))"
-"(((x+y)*(z/w)))"
-"(((x+y)*7.123))"
-"(((x+y)+(z*w)))"
-"(((x+y)+(z-w)))"
-"(((x+y)+(z/w)))"
-"(((x+y)+7.123))"
-"(((x+y)-(z*w)))"
-"(((x+y)-(z-w)))"
-"(((x+y)-(z/w)))"
-"(((x+y)-7.123))"
-"(((x+y)/(z*w)))"
-"(((x+y)/(z-w)))"
-"(((x+y)/(z/w)))"
-"(((x+y)/7.123))"
-"(((x-5.123)*z))"
-"(((x-5.123)/z))"
-"(((x-y)*(z*w)))"
-"(((x-y)*(z+w)))"
-"(((x-y)*(z/w)))"
-"(((x-y)*7.123))"
-"(((x-y)+(z*w)))"
-"(((x-y)+(z+w)))"
-"(((x-y)+(z/w)))"
-"(((x-y)-(z*w)))"
-"(((x-y)-(z+w)))"
-"(((x-y)-(z/w)))"
-"(((x-y)/(z*w)))"
-"(((x-y)/(z+w)))"
-"(((x-y)/(z/w)))"
-"(((x-y)/7.123))"
-"(((x/5.123)*z))"
-"(((x/5.123)+z))"
-"(((x/5.123)-z))"
-"(((x/5.123)/z))"
-"(((x/y)*(z+w)))"
-"(((x/y)*(z-w)))"
-"(((x/y)*7.123))"
-"(((x/y)+(z+w)))"
-"(((x/y)+(z-w)))"
-"(((x/y)+(z/w)))"
-"(((x/y)+7.123))"
-"(((x/y)-(z*w)))"
-"(((x/y)-(z+w)))"
-"(((x/y)-(z-w)))"
-"(((x/y)-(z/w)))"
-"(((x/y)-7.123))"
-"(((x/y)/(z+w)))"
-"(((x/y)/(z-w)))"
-"(((x/y)/7.123))"
-"((3.123*(y*z)))"
-"((3.123*(y+z)))"
-"((3.123*(y-z)))"
-"((3.123*(y/z)))"
-"((3.123*y*z+w))"
-"((3.123*y*z-w))"
-"((3.123*y+z*w))"
-"((3.123*y+z+w))"
-"((3.123*y+z-w))"
-"((3.123*y+z/w))"
-"((3.123*y-z*w))"
-"((3.123*y-z+w))"
-"((3.123*y-z-w))"
-"((3.123*y-z/w))"
-"((3.123*y/z+w))"
-"((3.123*y/z-w))"
-"((3.123+(y*z)))"
-"((3.123+(y+z)))"
-"((3.123+(y-z)))"
-"((3.123+(y/z)))"
-"((3.123+y*z*w))"
-"((3.123+y*z-w))"
-"((3.123+y*z/w))"
-"((3.123+y+z*w))"
-"((3.123+y+z-w))"
-"((3.123+y+z/w))"
-"((3.123+y-z*w))"
-"((3.123+y-z-w))"
-"((3.123+y-z/w))"
-"((3.123+y/z*w))"
-"((3.123+y/z+w))"
-"((3.123+y/z-w))"
-"((3.123+y/z/w))"
-"((3.123-(y*z)))"
-"((3.123-(y+z)))"
-"((3.123-(y-z)))"
-"((3.123-(y/z)))"
-"((3.123-y*z*w))"
-"((3.123-y*z+w))"
-"((3.123-y*z-w))"
-"((3.123-y*z/w))"
-"((3.123-y+z*w))"
-"((3.123-y+z+w))"
-"((3.123-y+z/w))"
-"((3.123-y-z*w))"
-"((3.123-y-z+w))"
-"((3.123-y-z/w))"
-"((3.123-y/z*w))"
-"((3.123-y/z+w))"
-"((3.123-y/z-w))"
-"((3.123-y/z/w))"
-"((3.123/(y*z)))"
-"((3.123/(y+z)))"
-"((3.123/(y-z)))"
-"((3.123/(y/z)))"
-"((3.123/y*z+w))"
-"((3.123/y*z-w))"
-"((3.123/y+z*w))"
-"((3.123/y+z+w))"
-"((3.123/y+z-w))"
-"((3.123/y+z/w))"
-"((3.123/y-z*w))"
-"((3.123/y-z+w))"
-"((3.123/y-z-w))"
-"((3.123/y-z/w))"
-"((3.123/y/z+w))"
-"((3.123/y/z-w))"
-"((3.27-b)-0.73)"
-"((a+sin(a))-pi)"
-"((x*(5.123*z)))"
-"((x*(5.123+z)))"
-"((x*(5.123-z)))"
-"((x*(5.123/z)))"
-"((x*(y*7.123)))"
-"((x*(y+(z*w))))"
-"((x*(y+7.123)))"
-"((x*(y-(z*w))))"
-"((x*(y-7.123)))"
-"((x*(y/7.123)))"
-"((x*5.123*z+w))"
-"((x*5.123*z-w))"
-"((x*5.123+z*w))"
-"((x*5.123+z+w))"
-"((x*5.123+z-w))"
-"((x*5.123+z/w))"
-"((x*5.123-z*w))"
-"((x*5.123-z+w))"
-"((x*5.123-z-w))"
-"((x*5.123-z/w))"
-"((x*5.123/z+w))"
-"((x*5.123/z-w))"
-"((x*y*7.123+w))"
-"((x*y*7.123-w))"
-"((x*y*z+9.123))"
-"((x*y*z+x+y/z))"
-"((x*y*z-9.123))"
-"((x*y*z-x/y*z))"
-"((x*y+7.123*w))"
-"((x*y+7.123+w))"
-"((x*y+7.123-w))"
-"((x*y+7.123/w))"
-"((x*y+z*9.123))"
-"((x*y+z*x-y*z))"
-"((x*y+z*x/y*z))"
-"((x*y+z+9.123))"
-"((x*y+z-9.123))"
-"((x*y+z/9.123))"
-"((x*y-7.123*w))"
-"((x*y-7.123+w))"
-"((x*y-7.123-w))"
-"((x*y-7.123/w))"
-"((x*y-z*9.123))"
-"((x*y-z+9.123))"
-"((x*y-z-9.123))"
-"((x*y-z/9.123))"
-"((x*y-z/x+y*z))"
-"((x*y-z/x/y+z))"
-"((x*y/7.123+w))"
-"((x*y/7.123-w))"
-"((x*y/z+9.123))"
-"((x*y/z+x/y-z))"
-"((x*y/z-9.123))"
-"((x*y/z-x+y+z))"
-"((x+((y*z)*w)))"
-"((x+((y*z)/w)))"
-"((x+((y+z)*w)))"
-"((x+((y+z)/w)))"
-"((x+((y-z)*w)))"
-"((x+((y-z)/w)))"
-"((x+((y/z)*w)))"
-"((x+((y/z)+w)))"
-"((x+((y/z)/w)))"
-"((x+(5.123*z)))"
-"((x+(5.123+z)))"
-"((x+(5.123-z)))"
-"((x+(5.123/z)))"
-"((x+(y*(z/w))))"
-"((x+(y*7.123)))"
-"((x+(y+7.123)))"
-"((x+(y-7.123)))"
-"((x+(y/(z*w))))"
-"((x+(y/7.123)))"
-"((x+5.123*z*w))"
-"((x+5.123*z-w))"
-"((x+5.123*z/w))"
-"((x+5.123+z*w))"
-"((x+5.123+z-w))"
-"((x+5.123+z/w))"
-"((x+5.123-z*w))"
-"((x+5.123-z-w))"
-"((x+5.123-z/w))"
-"((x+5.123/z*w))"
-"((x+5.123/z+w))"
-"((x+5.123/z-w))"
-"((x+5.123/z/w))"
-"((x+y*7.123*w))"
-"((x+y*7.123-w))"
-"((x+y*7.123/w))"
-"((x+y*z*9.123))"
-"((x+y*z*x+y+z))"
-"((x+y*z-9.123))"
-"((x+y*z-x*y/z))"
-"((x+y*z/9.123))"
-"((x+y+7.123*w))"
-"((x+y+7.123-w))"
-"((x+y+7.123/w))"
-"((x+y+z*9.123))"
-"((x+y+z+x-y*z))"
-"((x+y+z-9.123))"
-"((x+y+z/9.123))"
-"((x+y+z/x/y+z))"
-"((x+y-7.123*w))"
-"((x+y-7.123-w))"
-"((x+y-7.123/w))"
-"((x+y-z*9.123))"
-"((x+y-z*x*y*z))"
-"((x+y-z-9.123))"
-"((x+y-z-x*y+z))"
-"((x+y-z/9.123))"
-"((x+y/7.123*w))"
-"((x+y/7.123+w))"
-"((x+y/7.123-w))"
-"((x+y/7.123/w))"
-"((x+y/z*9.123))"
-"((x+y/z+9.123))"
-"((x+y/z+x*y-z))"
-"((x+y/z-9.123))"
-"((x+y/z/9.123))"
-"((x+y/z/x-y/z))"
-"((x-((y*z)*w)))"
-"((x-((y*z)/w)))"
-"((x-((y+z)*w)))"
-"((x-((y+z)/w)))"
-"((x-((y-z)*w)))"
-"((x-((y-z)/w)))"
-"((x-((y/z)*w)))"
-"((x-((y/z)/w)))"
-"((x-(5.123*z)))"
-"((x-(5.123+z)))"
-"((x-(5.123-z)))"
-"((x-(5.123/z)))"
-"((x-(y*(z/w))))"
-"((x-(y*7.123)))"
-"((x-(y+7.123)))"
-"((x-(y-7.123)))"
-"((x-(y/(z*w))))"
-"((x-(y/7.123)))"
-"((x-5.123*z*w))"
-"((x-5.123*z+w))"
-"((x-5.123*z-w))"
-"((x-5.123*z/w))"
-"((x-5.123+z*w))"
-"((x-5.123+z+w))"
-"((x-5.123+z/w))"
-"((x-5.123-z*w))"
-"((x-5.123-z+w))"
-"((x-5.123-z/w))"
-"((x-5.123/z*w))"
-"((x-5.123/z+w))"
-"((x-5.123/z-w))"
-"((x-5.123/z/w))"
-"((x-y*7.123*w))"
-"((x-y*7.123+w))"
-"((x-y*7.123-w))"
-"((x-y*7.123/w))"
-"((x-y*z*9.123))"
-"((x-y*z+9.123))"
-"((x-y*z-9.123))"
-"((x-y*z-x+y-z))"
-"((x-y*z-x/y/z))"
-"((x-y*z/9.123))"
-"((x-y+7.123*w))"
-"((x-y+7.123+w))"
-"((x-y+7.123/w))"
-"((x-y+z*9.123))"
-"((x-y+z*x+y-z))"
-"((x-y+z+9.123))"
-"((x-y+z/9.123))"
-"((x-y-7.123*w))"
-"((x-y-7.123+w))"
-"((x-y-7.123/w))"
-"((x-y-z*9.123))"
-"((x-y-z+9.123))"
-"((x-y-z/9.123))"
-"((x-y-z/x+y/z))"
-"((x-y/7.123*w))"
-"((x-y/7.123+w))"
-"((x-y/7.123-w))"
-"((x-y/7.123/w))"
-"((x-y/z*9.123))"
-"((x-y/z+9.123))"
-"((x-y/z+x+y*z))"
-"((x-y/z+x/y-z))"
-"((x-y/z-9.123))"
-"((x-y/z/9.123))"
-"((x/(5.123*z)))"
-"((x/(5.123+z)))"
-"((x/(5.123-z)))"
-"((x/(5.123/z)))"
-"((x/(y*7.123)))"
-"((x/(y+(z*w))))"
-"((x/(y+7.123)))"
-"((x/(y-(z*w))))"
-"((x/(y-7.123)))"
-"((x/(y/7.123)))"
-"((x/5.123*z+w))"
-"((x/5.123*z-w))"
-"((x/5.123+z*w))"
-"((x/5.123+z+w))"
-"((x/5.123+z-w))"
-"((x/5.123+z/w))"
-"((x/5.123-z*w))"
-"((x/5.123-z+w))"
-"((x/5.123-z-w))"
-"((x/5.123-z/w))"
-"((x/5.123/z+w))"
-"((x/5.123/z-w))"
-"((x/y*7.123+w))"
-"((x/y*7.123-w))"
-"((x/y*z+9.123))"
-"((x/y*z+x-y-z))"
-"((x/y*z-9.123))"
-"((x/y*z-x*y*z))"
-"((x/y+7.123*w))"
-"((x/y+7.123+w))"
-"((x/y+7.123-w))"
-"((x/y+7.123/w))"
-"((x/y+z*9.123))"
-"((x/y+z*x*y/z))"
-"((x/y+z*x/y/z))"
-"((x/y+z+9.123))"
-"((x/y+z-9.123))"
-"((x/y+z/9.123))"
-"((x/y-7.123*w))"
-"((x/y-7.123+w))"
-"((x/y-7.123-w))"
-"((x/y-7.123/w))"
-"((x/y-z*9.123))"
-"((x/y-z+9.123))"
-"((x/y-z-9.123))"
-"((x/y-z/9.123))"
-"((x/y-z/x*y+z))"
-"((x/y-z/x-y+z))"
-"((x/y/7.123+w))"
-"((x/y/7.123-w))"
-"((x/y/z+9.123))"
-"((x/y/z+x*y-z))"
-"((x/y/z-9.123))"
-"((x/y/z-x-y/z))"
-"(0.1*a+1)*a+1.1"
-"(2.2*a+1.1)*3.3"
-"(b+a/b)*(a-b/a)"
-"(pi+sin((a/b)))"
-"1.1*a^2+2.2*b^3"
-"1.1*a^7+2.2*b^8"
-"2.2*y*z-2.2*y/z"
-"2.2*y+z+2.2*y-z"
-"2.2*y/z-2.2*y*z"
-"2.2+y-z-2.2+y+z"
-"2.2+y/z+2.2+y*z"
-"2.2+y/z-2.2+y+z"
-"2.2-y*z+2.2+y*z"
-"2.2-y/z*2.2-y*z"
-"2.2-y/z*2.2-y/z"
-"2.2/y*z*2.2/y/z"
-"2.2/y+z*2.2/y-z"
-"2.2/y+z-2.2/y-z"
-"2.2/y/z+2.2/y*z"
-"a^-2^-3-1/a^1/8"
-"tan(((a-b)+pi))"
-"x*3.3*z-x*3.3/z"
-"x*3.3+z+x*3.3-z"
-"x*3.3/z-x*3.3*z"
-"x*y*4.4-x*y/4.4"
-"x*y*z+w-x/y*z+w"
-"x*y*z-w-x/y*z-w"
-"x*y+4.4+x*y-4.4"
-"x*y+z*w*x*y-z*w"
-"x*y+z+w+x/y+z+w"
-"x*y+z-w-x/y+z-w"
-"x*y-z*w-x*y+z/w"
-"x*y-z+w*x/y-z+w"
-"x*y-z-w*x/y-z-w"
-"x*y-z/w*x/y+z/w"
-"x*y/4.4-x*y*4.4"
-"x*y/z+w*x/y/z+w"
-"x*y/z-w+x/y/z-w"
-"x+3.3-z-x+3.3+z"
-"x+3.3/z+x+3.3*z"
-"x+3.3/z-x+3.3+z"
-"x+y*z*w+x+y*z/w"
-"x+y*z/w*x+y*z*w"
-"x+y+z*w-x+y+z/w"
-"x+y+z-w*x+y+z-w"
-"x+y+z/w+x+y+z*w"
-"x+y-4.4-x+y+4.4"
-"x+y-z*w+x+y-z/w"
-"x+y-z-w-x+y-z-w"
-"x+y-z/w-x+y-z*w"
-"x+y/4.4+x+y*4.4"
-"x+y/4.4-x+y+4.4"
-"x+y/z*w-x+y/z/w"
-"x+y/z*w-x-y+z/w"
-"x+y/z+w+x+y/z/w"
-"x-3.3*z+x+3.3*z"
-"x-3.3/z*x-3.3*z"
-"x-3.3/z*x-3.3/z"
-"x-y*4.4+x+y*4.4"
-"x-y*z*w+x-y*z/w"
-"x-y*z*w-x-y/z/w"
-"x-y*z-w+x*y*z-w"
-"x-y+z*w*x-y+z/w"
-"x-y+z*w*x-y-z/w"
-"x-y+z+w-x-y+z+w"
-"x-y-z*w+x-y*z/w"
-"x-y-z*w+x-y-z/w"
-"x-y-z+w+x-y-z+w"
-"x-y/4.4*x-y*4.4"
-"x-y/4.4*x-y/4.4"
-"x-y/z*w*x+y*z-w"
-"x-y/z*w*x-y/z/w"
-"x-y/z-w*x*y/z-w"
-"x/3.3*z*x/3.3/z"
-"x/3.3+z*x/3.3-z"
-"x/3.3+z-x/3.3-z"
-"x/3.3/z+x/3.3*z"
-"x/y*4.4*x/y/4.4"
-"x/y*z-w-x+y/z-w"
-"x/y+4.4*x/y-4.4"
-"x/y+4.4-x/y-4.4"
-"x/y+z*w-x/y-z*w"
-"x/y-z/w+x/y-z*w"
-"x/y/4.4+x/y*4.4"
-"x/y/z-w+x*y+z*w"
-"(((1.06+a)*e)+e)"
-"(((3.55-b)+a)+b)"
-"((a+(a+2.13))*e)"
-"((sin(b)+pi)*pi)"
-"a-(e^(log(7+b)))"
-"(((2.85+a)*pi)/a)"
-"((3.123*5.123*z))"
-"((3.123*5.123+z))"
-"((3.123*5.123-z))"
-"((3.123*5.123/z))"
-"((3.123*y*7.123))"
-"((3.123*y+7.123))"
-"((3.123*y-7.123))"
-"((3.123*y/7.123))"
-"((3.123+5.123*z))"
-"((3.123+5.123+z))"
-"((3.123+5.123-z))"
-"((3.123+5.123/z))"
-"((3.123+y*7.123))"
-"((3.123+y+7.123))"
-"((3.123+y-7.123))"
-"((3.123+y/7.123))"
-"((3.123-5.123*z))"
-"((3.123-5.123+z))"
-"((3.123-5.123-z))"
-"((3.123-5.123/z))"
-"((3.123-y*7.123))"
-"((3.123-y+7.123))"
-"((3.123-y-7.123))"
-"((3.123-y/7.123))"
-"((3.123/5.123*z))"
-"((3.123/5.123+z))"
-"((3.123/5.123-z))"
-"((3.123/5.123/z))"
-"((3.123/y*7.123))"
-"((3.123/y+7.123))"
-"((3.123/y-7.123))"
-"((3.123/y/7.123))"
-"((x*5.123*7.123))"
-"((x*5.123+7.123))"
-"((x*5.123-7.123))"
-"((x*5.123/7.123))"
-"((x+5.123*7.123))"
-"((x+5.123+7.123))"
-"((x+5.123-7.123))"
-"((x+5.123/7.123))"
-"((x-5.123*7.123))"
-"((x-5.123/7.123))"
-"((x/5.123*7.123))"
-"((x/5.123+7.123))"
-"((x/5.123-7.123))"
-"((x/5.123/7.123))"
-"(1.99-sin((b-b)))"
-"1-((a*b)+(a/b))-3"
-"a/((a+b)*(a-b))/b"
-"tan(((b*2.56)*b))"
-"((((b*pi)+a)*b)-a)"
-"((pi-((a+b)*b))*a)"
-"(0.32+((pi+b)+pi))"
-"(cos(((e/a)+e))+a)"
-"(tan((b+(a-b)))*b)"
-"sin(2*a)+cos(pi/b)"
-"((((3.123*y)*z)-w))"
-"((((3.123*y)/z)-w))"
-"((((3.123+y)*z)-w))"
-"((((3.123+y)/z)-w))"
-"((((3.123-y)*z)-w))"
-"((((3.123-y)/z)-w))"
-"((((3.123/y)*z)-w))"
-"((((3.123/y)/z)-w))"
-"((((x*5.123)*z)-w))"
-"((((x*5.123)/z)-w))"
-"((((x*y)*7.123)-w))"
-"((((x*y)*z)-9.123))"
-"((((x*y)/7.123)-w))"
-"((((x*y)/z)-9.123))"
-"((((x+5.123)*z)-w))"
-"((((x+5.123)/z)-w))"
-"((((x+y)*7.123)-w))"
-"((((x+y)*z)-9.123))"
-"((((x+y)/7.123)-w))"
-"((((x+y)/z)-9.123))"
-"((((x-5.123)*z)-w))"
-"((((x-5.123)/z)-w))"
-"((((x-y)*7.123)-w))"
-"((((x-y)*z)-9.123))"
-"((((x-y)/7.123)-w))"
-"((((x-y)/z)-9.123))"
-"((((x/5.123)*z)-w))"
-"((((x/5.123)/z)-w))"
-"((((x/y)*7.123)-w))"
-"((((x/y)*z)-9.123))"
-"((((x/y)/7.123)-w))"
-"((((x/y)/z)-9.123))"
-"(((2.12-a)+2.76)+b)"
-"(((3.123*y)*(z+w)))"
-"(((3.123*y)*(z-w)))"
-"(((3.123*y)*7.123))"
-"(((3.123*y)+(z*w)))"
-"(((3.123*y)+(z+w)))"
-"(((3.123*y)+(z-w)))"
-"(((3.123*y)+(z/w)))"
-"(((3.123*y)+7.123))"
-"(((3.123*y)-(z*w)))"
-"(((3.123*y)-(z+w)))"
-"(((3.123*y)-(z-w)))"
-"(((3.123*y)-(z/w)))"
-"(((3.123*y)-7.123))"
-"(((3.123*y)/(z+w)))"
-"(((3.123*y)/(z-w)))"
-"(((3.123*y)/7.123))"
-"(((3.123+y)*(z*w)))"
-"(((3.123+y)*(z-w)))"
-"(((3.123+y)*(z/w)))"
-"(((3.123+y)*7.123))"
-"(((3.123+y)+(z*w)))"
-"(((3.123+y)+(z-w)))"
-"(((3.123+y)+(z/w)))"
-"(((3.123+y)+7.123))"
-"(((3.123+y)-(z*w)))"
-"(((3.123+y)-(z-w)))"
-"(((3.123+y)-(z/w)))"
-"(((3.123+y)-7.123))"
-"(((3.123+y)/(z*w)))"
-"(((3.123+y)/(z-w)))"
-"(((3.123+y)/(z/w)))"
-"(((3.123+y)/7.123))"
-"(((3.123-y)*(z*w)))"
-"(((3.123-y)*(z+w)))"
-"(((3.123-y)*(z/w)))"
-"(((3.123-y)*7.123))"
-"(((3.123-y)+(z*w)))"
-"(((3.123-y)+(z+w)))"
-"(((3.123-y)+(z/w)))"
-"(((3.123-y)-(z*w)))"
-"(((3.123-y)-(z+w)))"
-"(((3.123-y)-(z/w)))"
-"(((3.123-y)/(z*w)))"
-"(((3.123-y)/(z+w)))"
-"(((3.123-y)/(z/w)))"
-"(((3.123-y)/7.123))"
-"(((3.123/y)*(z+w)))"
-"(((3.123/y)*(z-w)))"
-"(((3.123/y)*7.123))"
-"(((3.123/y)+(z+w)))"
-"(((3.123/y)+(z-w)))"
-"(((3.123/y)+(z/w)))"
-"(((3.123/y)+7.123))"
-"(((3.123/y)-(z*w)))"
-"(((3.123/y)-(z+w)))"
-"(((3.123/y)-(z-w)))"
-"(((3.123/y)-(z/w)))"
-"(((3.123/y)-7.123))"
-"(((3.123/y)/(z+w)))"
-"(((3.123/y)/(z-w)))"
-"(((3.123/y)/7.123))"
-"(((3.88/a)-a)-2.08)"
-"(((x*5.123)*(z+w)))"
-"(((x*5.123)*(z-w)))"
-"(((x*5.123)*7.123))"
-"(((x*5.123)+(z*w)))"
-"(((x*5.123)+(z+w)))"
-"(((x*5.123)+(z-w)))"
-"(((x*5.123)+(z/w)))"
-"(((x*5.123)+7.123))"
-"(((x*5.123)-(z*w)))"
-"(((x*5.123)-(z+w)))"
-"(((x*5.123)-(z-w)))"
-"(((x*5.123)-(z/w)))"
-"(((x*5.123)-7.123))"
-"(((x*5.123)/(z+w)))"
-"(((x*5.123)/(z-w)))"
-"(((x*5.123)/7.123))"
-"(((x*y)*(7.123+w)))"
-"(((x*y)*(7.123-w)))"
-"(((x*y)*(z+9.123)))"
-"(((x*y)*(z-9.123)))"
-"(((x*y)+(7.123*w)))"
-"(((x*y)+(7.123+w)))"
-"(((x*y)+(7.123-w)))"
-"(((x*y)+(7.123/w)))"
-"(((x*y)+(z*9.123)))"
-"(((x*y)+(z+9.123)))"
-"(((x*y)+(z-9.123)))"
-"(((x*y)+(z/9.123)))"
-"(((x*y)-(7.123*w)))"
-"(((x*y)-(7.123+w)))"
-"(((x*y)-(7.123-w)))"
-"(((x*y)-(7.123/w)))"
-"(((x*y)-(z*9.123)))"
-"(((x*y)-(z+9.123)))"
-"(((x*y)-(z-9.123)))"
-"(((x*y)-(z/9.123)))"
-"(((x*y)/(7.123+w)))"
-"(((x*y)/(7.123-w)))"
-"(((x*y)/(z+9.123)))"
-"(((x*y)/(z-9.123)))"
-"(((x+5.123)*(z*w)))"
-"(((x+5.123)*(z-w)))"
-"(((x+5.123)*(z/w)))"
-"(((x+5.123)*7.123))"
-"(((x+5.123)+(z*w)))"
-"(((x+5.123)+(z-w)))"
-"(((x+5.123)+(z/w)))"
-"(((x+5.123)+7.123))"
-"(((x+5.123)-(z*w)))"
-"(((x+5.123)-(z-w)))"
-"(((x+5.123)-(z/w)))"
-"(((x+5.123)-7.123))"
-"(((x+5.123)/(z*w)))"
-"(((x+5.123)/(z-w)))"
-"(((x+5.123)/(z/w)))"
-"(((x+5.123)/7.123))"
-"(((x+y)*(7.123*w)))"
-"(((x+y)*(7.123-w)))"
-"(((x+y)*(7.123/w)))"
-"(((x+y)*(z*9.123)))"
-"(((x+y)*(z-9.123)))"
-"(((x+y)*(z/9.123)))"
-"(((x+y)+(7.123*w)))"
-"(((x+y)+(7.123-w)))"
-"(((x+y)+(7.123/w)))"
-"(((x+y)+(z*9.123)))"
-"(((x+y)+(z-9.123)))"
-"(((x+y)+(z/9.123)))"
-"(((x+y)-(7.123*w)))"
-"(((x+y)-(7.123-w)))"
-"(((x+y)-(7.123/w)))"
-"(((x+y)-(z*9.123)))"
-"(((x+y)-(z-9.123)))"
-"(((x+y)-(z/9.123)))"
-"(((x+y)/(7.123*w)))"
-"(((x+y)/(7.123-w)))"
-"(((x+y)/(7.123/w)))"
-"(((x+y)/(z*9.123)))"
-"(((x+y)/(z-9.123)))"
-"(((x+y)/(z/9.123)))"
-"(((x-5.123)*(z*w)))"
-"(((x-5.123)*(z+w)))"
-"(((x-5.123)*(z/w)))"
-"(((x-5.123)*7.123))"
-"(((x-5.123)+(z*w)))"
-"(((x-5.123)+(z+w)))"
-"(((x-5.123)+(z/w)))"
-"(((x-5.123)-(z*w)))"
-"(((x-5.123)-(z+w)))"
-"(((x-5.123)-(z/w)))"
-"(((x-5.123)/(z*w)))"
-"(((x-5.123)/(z+w)))"
-"(((x-5.123)/(z/w)))"
-"(((x-5.123)/7.123))"
-"(((x-y)*(7.123*w)))"
-"(((x-y)*(7.123+w)))"
-"(((x-y)*(7.123/w)))"
-"(((x-y)*(z*9.123)))"
-"(((x-y)*(z+9.123)))"
-"(((x-y)*(z/9.123)))"
-"(((x-y)+(7.123*w)))"
-"(((x-y)+(7.123+w)))"
-"(((x-y)+(7.123/w)))"
-"(((x-y)+(z*9.123)))"
-"(((x-y)+(z+9.123)))"
-"(((x-y)+(z/9.123)))"
-"(((x-y)-(7.123*w)))"
-"(((x-y)-(7.123+w)))"
-"(((x-y)-(7.123/w)))"
-"(((x-y)-(z*9.123)))"
-"(((x-y)-(z+9.123)))"
-"(((x-y)-(z/9.123)))"
-"(((x-y)/(7.123*w)))"
-"(((x-y)/(7.123+w)))"
-"(((x-y)/(7.123/w)))"
-"(((x-y)/(z*9.123)))"
-"(((x-y)/(z+9.123)))"
-"(((x-y)/(z/9.123)))"
-"(((x/5.123)*(z+w)))"
-"(((x/5.123)*(z-w)))"
-"(((x/5.123)*7.123))"
-"(((x/5.123)+(z+w)))"
-"(((x/5.123)+(z-w)))"
-"(((x/5.123)+(z/w)))"
-"(((x/5.123)+7.123))"
-"(((x/5.123)-(z*w)))"
-"(((x/5.123)-(z+w)))"
-"(((x/5.123)-(z-w)))"
-"(((x/5.123)-(z/w)))"
-"(((x/5.123)-7.123))"
-"(((x/5.123)/(z+w)))"
-"(((x/5.123)/(z-w)))"
-"(((x/5.123)/7.123))"
-"(((x/y)*(7.123+w)))"
-"(((x/y)*(7.123-w)))"
-"(((x/y)*(z+9.123)))"
-"(((x/y)*(z-9.123)))"
-"(((x/y)+(7.123+w)))"
-"(((x/y)+(7.123-w)))"
-"(((x/y)+(7.123/w)))"
-"(((x/y)+(z+9.123)))"
-"(((x/y)+(z-9.123)))"
-"(((x/y)+(z/9.123)))"
-"(((x/y)-(7.123*w)))"
-"(((x/y)-(7.123+w)))"
-"(((x/y)-(7.123-w)))"
-"(((x/y)-(7.123/w)))"
-"(((x/y)-(z*9.123)))"
-"(((x/y)-(z+9.123)))"
-"(((x/y)-(z-9.123)))"
-"(((x/y)-(z/9.123)))"
-"(((x/y)/(7.123+w)))"
-"(((x/y)/(7.123-w)))"
-"(((x/y)/(z+9.123)))"
-"(((x/y)/(z-9.123)))"
-"((3.123*(5.123*z)))"
-"((3.123*(5.123+z)))"
-"((3.123*(5.123-z)))"
-"((3.123*(5.123/z)))"
-"((3.123*(y*7.123)))"
-"((3.123*(y+(z*w))))"
-"((3.123*(y+7.123)))"
-"((3.123*(y-(z*w))))"
-"((3.123*(y-7.123)))"
-"((3.123*(y/7.123)))"
-"((3.123*y*7.123+w))"
-"((3.123*y*7.123-w))"
-"((3.123*y*z+9.123))"
-"((3.123*y*z-9.123))"
-"((3.123*y+7.123*w))"
-"((3.123*y+7.123+w))"
-"((3.123*y+7.123-w))"
-"((3.123*y+7.123/w))"
-"((3.123*y+z*9.123))"
-"((3.123*y+z+9.123))"
-"((3.123*y+z-9.123))"
-"((3.123*y+z/9.123))"
-"((3.123*y-7.123*w))"
-"((3.123*y-7.123+w))"
-"((3.123*y-7.123-w))"
-"((3.123*y-7.123/w))"
-"((3.123*y-z*9.123))"
-"((3.123*y-z+9.123))"
-"((3.123*y-z-9.123))"
-"((3.123*y-z/9.123))"
-"((3.123*y/7.123+w))"
-"((3.123*y/7.123-w))"
-"((3.123*y/z+9.123))"
-"((3.123*y/z-9.123))"
-"((3.123+((y*z)*w)))"
-"((3.123+((y*z)/w)))"
-"((3.123+((y+z)*w)))"
-"((3.123+((y+z)/w)))"
-"((3.123+((y-z)*w)))"
-"((3.123+((y-z)/w)))"
-"((3.123+((y/z)*w)))"
-"((3.123+((y/z)+w)))"
-"((3.123+((y/z)/w)))"
-"((3.123+(5.123*z)))"
-"((3.123+(5.123+z)))"
-"((3.123+(5.123-z)))"
-"((3.123+(5.123/z)))"
-"((3.123+(y*(z/w))))"
-"((3.123+(y*7.123)))"
-"((3.123+(y+7.123)))"
-"((3.123+(y-7.123)))"
-"((3.123+(y/(z*w))))"
-"((3.123+(y/7.123)))"
-"((3.123+y*7.123*w))"
-"((3.123+y*7.123-w))"
-"((3.123+y*7.123/w))"
-"((3.123+y*z*9.123))"
-"((3.123+y*z-9.123))"
-"((3.123+y*z/9.123))"
-"((3.123+y+7.123*w))"
-"((3.123+y+7.123-w))"
-"((3.123+y+7.123/w))"
-"((3.123+y+z*9.123))"
-"((3.123+y+z-9.123))"
-"((3.123+y+z/9.123))"
-"((3.123+y-7.123*w))"
-"((3.123+y-7.123-w))"
-"((3.123+y-7.123/w))"
-"((3.123+y-z*9.123))"
-"((3.123+y-z-9.123))"
-"((3.123+y-z/9.123))"
-"((3.123+y/7.123*w))"
-"((3.123+y/7.123+w))"
-"((3.123+y/7.123-w))"
-"((3.123+y/7.123/w))"
-"((3.123+y/z*9.123))"
-"((3.123+y/z+9.123))"
-"((3.123+y/z-9.123))"
-"((3.123+y/z/9.123))"
-"((3.123-((y*z)*w)))"
-"((3.123-((y*z)/w)))"
-"((3.123-((y+z)*w)))"
-"((3.123-((y+z)/w)))"
-"((3.123-((y-z)*w)))"
-"((3.123-((y-z)/w)))"
-"((3.123-((y/z)*w)))"
-"((3.123-((y/z)/w)))"
-"((3.123-(5.123*z)))"
-"((3.123-(5.123+z)))"
-"((3.123-(5.123-z)))"
-"((3.123-(5.123/z)))"
-"((3.123-(y*(z/w))))"
-"((3.123-(y*7.123)))"
-"((3.123-(y+7.123)))"
-"((3.123-(y-7.123)))"
-"((3.123-(y/(z*w))))"
-"((3.123-(y/7.123)))"
-"((3.123-y*7.123*w))"
-"((3.123-y*7.123+w))"
-"((3.123-y*7.123-w))"
-"((3.123-y*7.123/w))"
-"((3.123-y*z*9.123))"
-"((3.123-y*z+9.123))"
-"((3.123-y*z-9.123))"
-"((3.123-y*z/9.123))"
-"((3.123-y+7.123*w))"
-"((3.123-y+7.123+w))"
-"((3.123-y+7.123/w))"
-"((3.123-y+z*9.123))"
-"((3.123-y+z+9.123))"
-"((3.123-y+z/9.123))"
-"((3.123-y-7.123*w))"
-"((3.123-y-7.123+w))"
-"((3.123-y-7.123/w))"
-"((3.123-y-z*9.123))"
-"((3.123-y-z+9.123))"
-"((3.123-y-z/9.123))"
-"((3.123-y/7.123*w))"
-"((3.123-y/7.123+w))"
-"((3.123-y/7.123-w))"
-"((3.123-y/7.123/w))"
-"((3.123-y/z*9.123))"
-"((3.123-y/z+9.123))"
-"((3.123-y/z-9.123))"
-"((3.123-y/z/9.123))"
-"((3.123/(5.123*z)))"
-"((3.123/(5.123+z)))"
-"((3.123/(5.123-z)))"
-"((3.123/(5.123/z)))"
-"((3.123/(y*7.123)))"
-"((3.123/(y+(z*w))))"
-"((3.123/(y+7.123)))"
-"((3.123/(y-(z*w))))"
-"((3.123/(y-7.123)))"
-"((3.123/(y/7.123)))"
-"((3.123/y*7.123+w))"
-"((3.123/y*7.123-w))"
-"((3.123/y*z+9.123))"
-"((3.123/y*z-9.123))"
-"((3.123/y+7.123*w))"
-"((3.123/y+7.123+w))"
-"((3.123/y+7.123-w))"
-"((3.123/y+7.123/w))"
-"((3.123/y+z*9.123))"
-"((3.123/y+z+9.123))"
-"((3.123/y+z-9.123))"
-"((3.123/y+z/9.123))"
-"((3.123/y-7.123*w))"
-"((3.123/y-7.123+w))"
-"((3.123/y-7.123-w))"
-"((3.123/y-7.123/w))"
-"((3.123/y-z*9.123))"
-"((3.123/y-z+9.123))"
-"((3.123/y-z-9.123))"
-"((3.123/y-z/9.123))"
-"((3.123/y/7.123+w))"
-"((3.123/y/7.123-w))"
-"((3.123/y/z+9.123))"
-"((3.123/y/z-9.123))"
-"((b+sin((pi-a)))-a)"
-"((tan(tan(e))*e)*e)"
-"((x*(5.123+(z*w))))"
-"((x*(5.123-(z*w))))"
-"((x*(y+(7.123*w))))"
-"((x*(y+(z*9.123))))"
-"((x*(y-(7.123*w))))"
-"((x*(y-(z*9.123))))"
-"((x*3.123*z+9.123))"
-"((x*3.123*z-9.123))"
-"((x*3.123+z*9.123))"
-"((x*3.123+z+9.123))"
-"((x*3.123+z-9.123))"
-"((x*3.123+z/9.123))"
-"((x*3.123-z*9.123))"
-"((x*3.123-z+9.123))"
-"((x*3.123-z-9.123))"
-"((x*3.123-z/9.123))"
-"((x*3.123/z+9.123))"
-"((x*3.123/z-9.123))"
-"((x*5.123*7.123+w))"
-"((x*5.123*7.123-w))"
-"((x*5.123+7.123*w))"
-"((x*5.123+7.123+w))"
-"((x*5.123+7.123-w))"
-"((x*5.123+7.123/w))"
-"((x*5.123-7.123*w))"
-"((x*5.123-7.123+w))"
-"((x*5.123-7.123-w))"
-"((x*5.123-7.123/w))"
-"((x*5.123/7.123+w))"
-"((x*5.123/7.123-w))"
-"((x*y*z+w+x+y/z/w))"
-"((x*y*z-w*x-y*z/w))"
-"((x*y*z-w/x+y+z*w))"
-"((x*y+z*w*x/y-z+w))"
-"((x*y+z*w-x+y-z-w))"
-"((x*y+z+w*x/y/z-w))"
-"((x*y+z-w+x/y*z-w))"
-"((x*y+z/w/x+y*z-w))"
-"((x*y-z*w*x+y+z-w))"
-"((x*y-z*w/x*y+z+w))"
-"((x*y-z+w+x/y/z+w))"
-"((x*y-z-w*x-y*z/w))"
-"((x*y-z/w+x+y/z-w))"
-"((x*y/z+w*x-y+z/w))"
-"((x*y/z-w+x-y-z/w))"
-"((x*y/z-w/x-y-z*w))"
-"((x+((5.123*z)*w)))"
-"((x+((5.123*z)/w)))"
-"((x+((5.123+z)*w)))"
-"((x+((5.123+z)/w)))"
-"((x+((5.123-z)*w)))"
-"((x+((5.123-z)/w)))"
-"((x+((5.123/z)*w)))"
-"((x+((5.123/z)+w)))"
-"((x+((5.123/z)/w)))"
-"((x+((y*7.123)*w)))"
-"((x+((y*7.123)/w)))"
-"((x+((y*z)*9.123)))"
-"((x+((y*z)/9.123)))"
-"((x+((y+7.123)*w)))"
-"((x+((y+7.123)/w)))"
-"((x+((y+z)*9.123)))"
-"((x+((y+z)/9.123)))"
-"((x+((y-7.123)*w)))"
-"((x+((y-7.123)/w)))"
-"((x+((y-z)*9.123)))"
-"((x+((y-z)/9.123)))"
-"((x+((y/7.123)*w)))"
-"((x+((y/7.123)+w)))"
-"((x+((y/7.123)/w)))"
-"((x+((y/z)*9.123)))"
-"((x+((y/z)+9.123)))"
-"((x+((y/z)/9.123)))"
-"((x+(5.123*(z/w))))"
-"((x+(5.123/(z*w))))"
-"((x+(y*(7.123/w))))"
-"((x+(y*(z/9.123))))"
-"((x+(y/(7.123*w))))"
-"((x+(y/(z*9.123))))"
-"((x+3.123*z*9.123))"
-"((x+3.123*z-9.123))"
-"((x+3.123*z/9.123))"
-"((x+3.123+z*9.123))"
-"((x+3.123+z-9.123))"
-"((x+3.123+z/9.123))"
-"((x+3.123-z*9.123))"
-"((x+3.123-z-9.123))"
-"((x+3.123-z/9.123))"
-"((x+3.123/z*9.123))"
-"((x+3.123/z+9.123))"
-"((x+3.123/z-9.123))"
-"((x+3.123/z/9.123))"
-"((x+5.123*7.123*w))"
-"((x+5.123*7.123-w))"
-"((x+5.123*7.123/w))"
-"((x+5.123+7.123*w))"
-"((x+5.123+7.123-w))"
-"((x+5.123+7.123/w))"
-"((x+5.123-7.123*w))"
-"((x+5.123-7.123-w))"
-"((x+5.123-7.123/w))"
-"((x+5.123/7.123*w))"
-"((x+5.123/7.123-w))"
-"((x+5.123/7.123/w))"
-"((x+y*z*w+x-y/z*w))"
-"((x+y*z*w-x/y/z-w))"
-"((x+y*z-w*x-y/z/w))"
-"((x+y*z-w-x+y-z*w))"
-"((x+y*z/w+x*y/z-w))"
-"((x+y*z/w+x-y/z/w))"
-"((x+y*z/w-x+y+z/w))"
-"((x+y+z*w*x/y+z-w))"
-"((x+y+z*w-x/y*z-w))"
-"((x+y+z-w-x-y/z*w))"
-"((x+y+z/w+x*y*z-w))"
-"((x+y+z/w/x*y-z-w))"
-"((x+y-z*w+x/y+z+w))"
-"((x+y-z*w/x-y/z-w))"
-"((x+y-z-w+x+y/z/w))"
-"((x+y-z/w*x+y/z-w))"
-"((x+y-z/w-x*y+z-w))"
-"((x+y/z*w*x+y*z-w))"
-"((x+y/z*w*x+y+z*w))"
-"((x+y/z*w+x*y+z/w))"
-"((x+y/z+w*x*y+z*w))"
-"((x+y/z-w-x-y+z*w))"
-"((x+y/z-w/x-y*z*w))"
-"((x+y/z/w/x*y-z*w))"
-"((x+y/z/w/x+y-z/w))"
-"((x-((5.123*z)*w)))"
-"((x-((5.123*z)/w)))"
-"((x-((5.123+z)*w)))"
-"((x-((5.123+z)/w)))"
-"((x-((5.123-z)*w)))"
-"((x-((5.123-z)/w)))"
-"((x-((5.123/z)*w)))"
-"((x-((5.123/z)/w)))"
-"((x-((y*7.123)*w)))"
-"((x-((y*7.123)/w)))"
-"((x-((y*z)*9.123)))"
-"((x-((y*z)/9.123)))"
-"((x-((y+7.123)*w)))"
-"((x-((y+7.123)/w)))"
-"((x-((y+z)*9.123)))"
-"((x-((y+z)/9.123)))"
-"((x-((y-7.123)*w)))"
-"((x-((y-7.123)/w)))"
-"((x-((y-z)*9.123)))"
-"((x-((y-z)/9.123)))"
-"((x-((y/7.123)*w)))"
-"((x-((y/7.123)/w)))"
-"((x-((y/z)*9.123)))"
-"((x-((y/z)/9.123)))"
-"((x-(5.123*(z/w))))"
-"((x-(5.123/(z*w))))"
-"((x-(y*(7.123/w))))"
-"((x-(y*(z/9.123))))"
-"((x-(y/(7.123*w))))"
-"((x-(y/(z*9.123))))"
-"((x-3.123*z*9.123))"
-"((x-3.123*z+9.123))"
-"((x-3.123*z-9.123))"
-"((x-3.123*z/9.123))"
-"((x-3.123+z*9.123))"
-"((x-3.123+z+9.123))"
-"((x-3.123+z/9.123))"
-"((x-3.123-z*9.123))"
-"((x-3.123-z+9.123))"
-"((x-3.123-z/9.123))"
-"((x-3.123/z*9.123))"
-"((x-3.123/z+9.123))"
-"((x-3.123/z-9.123))"
-"((x-3.123/z/9.123))"
-"((x-5.123*7.123*w))"
-"((x-5.123*7.123+w))"
-"((x-5.123*7.123-w))"
-"((x-5.123*7.123/w))"
-"((x-5.123+7.123*w))"
-"((x-5.123+7.123+w))"
-"((x-5.123+7.123/w))"
-"((x-5.123-7.123*w))"
-"((x-5.123-7.123+w))"
-"((x-5.123-7.123/w))"
-"((x-5.123/7.123*w))"
-"((x-5.123/7.123+w))"
-"((x-5.123/7.123-w))"
-"((x-5.123/7.123/w))"
-"((x-y*z*w*x+y*z*w))"
-"((x-y*z*w*x/y-z*w))"
-"((x-y*z+w*x/y*z+w))"
-"((x-y*z-w*x+y-z/w))"
-"((x-y*z/w-x-y/z*w))"
-"((x-y*z/w-x/y+z*w))"
-"((x-y*z/w/x+y/z+w))"
-"((x-y+z*w*x/y+z/w))"
-"((x-y+z*w+x/y-z-w))"
-"((x-y+z+w-x*y*z+w))"
-"((x-y+z/w-x*y-z/w))"
-"((x-y+z/w-x+y*z*w))"
-"((x-y-z*w*x+y*z/w))"
-"((x-y-z*w+x/y-z*w))"
-"((x-y-z+w+x-y*z/w))"
-"((x-y-z/w/x+y/z*w))"
-"((x-y-z/w/x/y-z/w))"
-"((x-y/z*w+x*y-z*w))"
-"((x-y/z*w+x+y-z*w))"
-"((x-y/z*w/x-y*z-w))"
-"((x-y/z+w/x*y/z+w))"
-"((x-y/z-w*x-y+z/w))"
-"((x-y/z/w-x+y*z/w))"
-"((x-y/z/w/x*y+z*w))"
-"((x/(5.123+(z*w))))"
-"((x/(5.123-(z*w))))"
-"((x/(y+(7.123*w))))"
-"((x/(y+(z*9.123))))"
-"((x/(y-(7.123*w))))"
-"((x/(y-(z*9.123))))"
-"((x/3.123*z+9.123))"
-"((x/3.123*z-9.123))"
-"((x/3.123+z*9.123))"
-"((x/3.123+z+9.123))"
-"((x/3.123+z-9.123))"
-"((x/3.123+z/9.123))"
-"((x/3.123-z*9.123))"
-"((x/3.123-z+9.123))"
-"((x/3.123-z-9.123))"
-"((x/3.123-z/9.123))"
-"((x/3.123/z+9.123))"
-"((x/3.123/z-9.123))"
-"((x/5.123*7.123+w))"
-"((x/5.123*7.123-w))"
-"((x/5.123+7.123*w))"
-"((x/5.123+7.123+w))"
-"((x/5.123+7.123-w))"
-"((x/5.123+7.123/w))"
-"((x/5.123-7.123*w))"
-"((x/5.123-7.123+w))"
-"((x/5.123-7.123-w))"
-"((x/5.123-7.123/w))"
-"((x/5.123/7.123+w))"
-"((x/5.123/7.123-w))"
-"((x/y*z+w-x+y/z*w))"
-"((x/y*z-w+x+y+z/w))"
-"((x/y*z-w/x-y*z*w))"
-"((x/y+z*w+x-y/z+w))"
-"((x/y+z+w/x*y*z-w))"
-"((x/y+z-w-x+y*z/w))"
-"((x/y+z/w-x-y-z+w))"
-"((x/y-z*w-x*y-z+w))"
-"((x/y-z*w/x-y*z+w))"
-"((x/y-z+w-x*y/z-w))"
-"((x/y-z-w/x+y/z*w))"
-"((x/y-z/w*x-y+z+w))"
-"((x/y/z+w/x-y+z*w))"
-"((x/y/z-w+x-y-z/w))"
-"((x/y/z-w-x-y-z*w))"
-"(1.1*(2.2/3.3))-4.4"
-"(1.1+a^2)+(2.2+b^2)"
-"(a^2^3/4)-(a^2^3/4)"
-"2.2*y*z+w-2.2/y*z+w"
-"2.2*y*z-w-2.2/y*z-w"
-"2.2*y+z*w*2.2*y-z*w"
-"2.2*y+z+w+2.2/y+z+w"
-"2.2*y+z-w-2.2/y+z-w"
-"2.2*y-z*w-2.2*y+z/w"
-"2.2*y-z+w*2.2/y-z+w"
-"2.2*y-z-w*2.2/y-z-w"
-"2.2*y-z/w*2.2/y+z/w"
-"2.2*y/z+w*2.2/y/z+w"
-"2.2*y/z-w+2.2/y/z-w"
-"2.2+y*z*w+2.2+y*z/w"
-"2.2+y*z/w*2.2+y*z*w"
-"2.2+y+z*w-2.2+y+z/w"
-"2.2+y+z-w*2.2+y+z-w"
-"2.2+y+z/w+2.2+y+z*w"
-"2.2+y-z*w+2.2+y-z/w"
-"2.2+y-z-w-2.2+y-z-w"
-"2.2+y-z/w-2.2+y-z*w"
-"2.2+y/z*w-2.2+y/z/w"
-"2.2+y/z*w-2.2-y+z/w"
-"2.2+y/z+w+2.2+y/z/w"
-"2.2-y*z*w+2.2-y*z/w"
-"2.2-y*z*w-2.2-y/z/w"
-"2.2-y*z-w+2.2*y*z-w"
-"2.2-y+z*w*2.2-y+z/w"
-"2.2-y+z*w*2.2-y-z/w"
-"2.2-y+z+w-2.2-y+z+w"
-"2.2-y-z*w+2.2-y*z/w"
-"2.2-y-z*w+2.2-y-z/w"
-"2.2-y-z+w+2.2-y-z+w"
-"2.2-y/z*w*2.2+y*z-w"
-"2.2-y/z*w*2.2-y/z/w"
-"2.2-y/z-w*2.2*y/z-w"
-"2.2/y*z-w-2.2+y/z-w"
-"2.2/y+z*w-2.2/y-z*w"
-"2.2/y-z/w+2.2/y-z*w"
-"2.2/y/z-w+2.2*y+z*w"
-"3.3*a^2+2.2*a^1+1.1"
-"cos(((cos(b)/b)-b))"
-"sin(pi/2)+cos(pi/2)"
-"x*3.3*z+w-x/3.3*z+w"
-"x*3.3*z-w-x/3.3*z-w"
-"x*3.3+z*w*x*3.3-z*w"
-"x*3.3+z+w+x/3.3+z+w"
-"x*3.3+z-w-x/3.3+z-w"
-"x*3.3-z*w-x*3.3+z/w"
-"x*3.3-z+w*x/3.3-z+w"
-"x*3.3-z-w*x/3.3-z-w"
-"x*3.3-z/w*x/3.3+z/w"
-"x*3.3/z+w*x/3.3/z+w"
-"x*3.3/z-w+x/3.3/z-w"
-"x*y*4.4+w-x/y*4.4+w"
-"x*y*4.4-w-x/y*4.4-w"
-"x*y*z+5.5-x/y*z+5.5"
-"x*y*z-5.5-x/y*z-5.5"
-"x*y+4.4*w*x*y-4.4*w"
-"x*y+4.4+w+x/y+4.4+w"
-"x*y+4.4-w-x/y+4.4-w"
-"x*y+z*5.5*x*y-z*5.5"
-"x*y+z+5.5+x/y+z+5.5"
-"x*y+z-5.5-x/y+z-5.5"
-"x*y-4.4*w-x*y+4.4/w"
-"x*y-4.4+w*x/y-4.4+w"
-"x*y-4.4-w*x/y-4.4-w"
-"x*y-4.4/w*x/y+4.4/w"
-"x*y-z*5.5-x*y+z/5.5"
-"x*y-z+5.5*x/y-z+5.5"
-"x*y-z-5.5*x/y-z-5.5"
-"x*y-z/5.5*x/y+z/5.5"
-"x*y/4.4+w*x/y/4.4+w"
-"x*y/4.4-w+x/y/4.4-w"
-"x*y/z+5.5*x/y/z+5.5"
-"x*y/z-5.5+x/y/z-5.5"
-"x+3.3*z*w+x+3.3*z/w"
-"x+3.3*z/w*x+3.3*z*w"
-"x+3.3+z*w-x+3.3+z/w"
-"x+3.3+z-w*x+3.3+z-w"
-"x+3.3+z/w+x+3.3+z*w"
-"x+3.3-z*w+x+3.3-z/w"
-"x+3.3-z-w-x+3.3-z-w"
-"x+3.3-z/w-x+3.3-z*w"
-"x+3.3/z*w-x+3.3/z/w"
-"x+3.3/z*w-x-3.3+z/w"
-"x+3.3/z+w+x+3.3/z/w"
-"x+y*4.4*w+x+y*4.4/w"
-"x+y*4.4/w*x+y*4.4*w"
-"x+y*z*5.5+x+y*z/5.5"
-"x+y*z/5.5*x+y*z*5.5"
-"x+y+4.4*w-x+y+4.4/w"
-"x+y+4.4-w*x+y+4.4-w"
-"x+y+4.4/w+x+y+4.4*w"
-"x+y+z*5.5-x+y+z/5.5"
-"x+y+z-5.5*x+y+z-5.5"
-"x+y+z/5.5+x+y+z*5.5"
-"x+y-4.4*w+x+y-4.4/w"
-"x+y-4.4-w-x+y-4.4-w"
-"x+y-4.4/w-x+y-4.4*w"
-"x+y-z*5.5+x+y-z/5.5"
-"x+y-z-5.5-x+y-z-5.5"
-"x+y-z/5.5-x+y-z*5.5"
-"x+y/4.4*w-x+y/4.4/w"
-"x+y/4.4*w-x-y+4.4/w"
-"x+y/4.4+w+x+y/4.4/w"
-"x+y/z*5.5-x+y/z/5.5"
-"x+y/z*5.5-x-y+z/5.5"
-"x+y/z+5.5+x+y/z/5.5"
-"x-3.3*z*w+x-3.3*z/w"
-"x-3.3*z*w-x-3.3/z/w"
-"x-3.3*z-w+x*3.3*z-w"
-"x-3.3+z*w*x-3.3+z/w"
-"x-3.3+z*w*x-3.3-z/w"
-"x-3.3+z+w-x-3.3+z+w"
-"x-3.3-z*w+x-3.3*z/w"
-"x-3.3-z*w+x-3.3-z/w"
-"x-3.3-z+w+x-3.3-z+w"
-"x-3.3/z*w*x+3.3*z-w"
-"x-3.3/z*w*x-3.3/z/w"
-"x-3.3/z-w*x*3.3/z-w"
-"x-y*4.4*w+x-y*4.4/w"
-"x-y*4.4*w-x-y/4.4/w"
-"x-y*4.4-w+x*y*4.4-w"
-"x-y*z*5.5+x-y*z/5.5"
-"x-y*z*5.5-x-y/z/5.5"
-"x-y*z-5.5+x*y*z-5.5"
-"x-y+4.4*w*x-y+4.4/w"
-"x-y+4.4*w*x-y-4.4/w"
-"x-y+4.4+w-x-y+4.4+w"
-"x-y+z*5.5*x-y+z/5.5"
-"x-y+z*5.5*x-y-z/5.5"
-"x-y+z+5.5-x-y+z+5.5"
-"x-y-4.4*w+x-y*4.4/w"
-"x-y-4.4*w+x-y-4.4/w"
-"x-y-4.4+w+x-y-4.4+w"
-"x-y-z*5.5+x-y*z/5.5"
-"x-y-z*5.5+x-y-z/5.5"
-"x-y-z+5.5+x-y-z+5.5"
-"x-y/4.4*w*x+y*4.4-w"
-"x-y/4.4*w*x-y/4.4/w"
-"x-y/4.4-w*x*y/4.4-w"
-"x-y/z*5.5*x+y*z-5.5"
-"x-y/z*5.5*x-y/z/5.5"
-"x-y/z-5.5*x*y/z-5.5"
-"x/3.3*z-w-x+3.3/z-w"
-"x/3.3+z*w-x/3.3-z*w"
-"x/3.3-z/w+x/3.3-z*w"
-"x/3.3/z-w+x*3.3+z*w"
-"x/y*4.4-w-x+y/4.4-w"
-"x/y*z-5.5-x+y/z-5.5"
-"x/y+4.4*w-x/y-4.4*w"
-"x/y+z*5.5-x/y-z*5.5"
-"x/y-4.4/w+x/y-4.4*w"
-"x/y-z/5.5+x/y-z*5.5"
-"x/y/4.4-w+x*y+4.4*w"
-"x/y/z-5.5+x*y+z*5.5"
-"((((b/b)-b)+b)+0.94)"
-"(((b+(3.51+b))+b)-e)"
-"((b/((a/b)+e))+3.10)"
-"(-1+a^2^3)-(a^2^3-1)"
-"1-sin(2*a)+cos(pi/b)"
-"sin(2.2*a)+cos(pi/b)"
-"(((((b/e)+a)+a)-b)+b)"
-"((((b-pi)*a)+2.77)+a)"
-"((((pi/a)+e)+b)*1.94)"
-"(((x*y)*z)-(x/(y*z)))"
-"(((x*y)+z)*((x/y)*z))"
-"(((x*y)-z)/(x/(y+z)))"
-"(((x*y)/z)+(x/(y-z)))"
-"(((x+y)*z)-((x*y)/z))"
-"(((x+y)+z)/((x/y)+z))"
-"(((x+y)-z)*((x*y)*z))"
-"(((x+y)/z)+((x*y)-z))"
-"(((x-y)*z)-((x/y)/z))"
-"(((x-y)/z)+((x/y)-z))"
-"(((x/y)*z)-(x*(y*z)))"
-"(((x/y)+z)*(x/(y/z)))"
-"(((x/y)-z)/(x*(y+z)))"
-"(((x/y)/z)+(x*(y-z)))"
-"((x*(y*z))+(x+(y/z)))"
-"((x*(y+z))*(x-(y*z)))"
-"((x*(y-z))/(x+(y*z)))"
-"((x*(y/z))-(x+(y+z)))"
-"((x+(y*z))*((x+y)+z))"
-"((x+(y+z))+((x-y)*z))"
-"((x+(y-z))-((x*y)+z))"
-"((x+(y/z))/((x-y)/z))"
-"((x-(y*z))-((x+y)-z))"
-"((x-(y+z))*(x+(y-z)))"
-"((x-(y-z))/((x+y)/z))"
-"((x-(y/z))+((x+y)*z))"
-"((x/(y*z))+(x-(y-z)))"
-"((x/(y+z))*(x*(y/z)))"
-"((x/(y-z))/(x-(y+z)))"
-"((x/(y/z))-(x-(y/z)))"
-"(-1*a^2^3)-(a^2^3*-1)"
-"(a^2/sin(2*pi/b))-a/2"
-"(b+(((2.59+b)*b)+pi))"
-"(cos(((e+b)+0.71))-a)"
-"(tan(((b/3.21)-a))+e)"
-"1.1*a^2.01+2.2*b^3.01"
-"1.1-((a*b)+(a/b))-3.3"
-"sin(pi/6)+cos(2*pi/6)"
-"tan(((b+(a*1.99))*a))"
-"(0.1*a+1)*a+1.1-sin(a)"
-"1-sin(2.2*a)+cos(pi/b)"
-"tan((((pi+2.69)/a)/b))"
-"(((((e+a)/e)*b)+pi)*pi)"
-"((((3.123*y)*7.123)-w))"
-"((((3.123*y)*z)-9.123))"
-"((((3.123*y)/7.123)-w))"
-"((((3.123*y)/z)-9.123))"
-"((((3.123+y)*7.123)-w))"
-"((((3.123+y)*z)-9.123))"
-"((((3.123+y)/7.123)-w))"
-"((((3.123+y)/z)-9.123))"
-"((((3.123-y)*7.123)-w))"
-"((((3.123-y)*z)-9.123))"
-"((((3.123-y)/7.123)-w))"
-"((((3.123-y)/z)-9.123))"
-"((((3.123/y)*7.123)-w))"
-"((((3.123/y)*z)-9.123))"
-"((((3.123/y)/7.123)-w))"
-"((((3.123/y)/z)-9.123))"
-"((((x*3.123)*z)-9.123))"
-"((((x*3.123)/z)-9.123))"
-"((((x*5.123)*7.123)-w))"
-"((((x*5.123)/7.123)-w))"
-"((((x+3.123)*z)-9.123))"
-"((((x+3.123)/z)-9.123))"
-"((((x+5.123)*7.123)-w))"
-"((((x+5.123)/7.123)-w))"
-"((((x-3.123)*z)-9.123))"
-"((((x-3.123)/z)-9.123))"
-"((((x-5.123)*7.123)-w))"
-"((((x-5.123)/7.123)-w))"
-"((((x/3.123)*z)-9.123))"
-"((((x/3.123)/z)-9.123))"
-"((((x/5.123)*7.123)-w))"
-"((((x/5.123)/7.123)-w))"
-"(((3.123*y)*(7.123+w)))"
-"(((3.123*y)*(7.123-w)))"
-"(((3.123*y)*(z+9.123)))"
-"(((3.123*y)*(z-9.123)))"
-"(((3.123*y)+(7.123*w)))"
-"(((3.123*y)+(7.123+w)))"
-"(((3.123*y)+(7.123-w)))"
-"(((3.123*y)+(7.123/w)))"
-"(((3.123*y)+(z*9.123)))"
-"(((3.123*y)+(z+9.123)))"
-"(((3.123*y)+(z-9.123)))"
-"(((3.123*y)+(z/9.123)))"
-"(((3.123*y)-(7.123*w)))"
-"(((3.123*y)-(7.123+w)))"
-"(((3.123*y)-(7.123-w)))"
-"(((3.123*y)-(7.123/w)))"
-"(((3.123*y)-(z*9.123)))"
-"(((3.123*y)-(z+9.123)))"
-"(((3.123*y)-(z-9.123)))"
-"(((3.123*y)-(z/9.123)))"
-"(((3.123*y)/(7.123+w)))"
-"(((3.123*y)/(7.123-w)))"
-"(((3.123*y)/(z+9.123)))"
-"(((3.123*y)/(z-9.123)))"
-"(((3.123+y)*(7.123*w)))"
-"(((3.123+y)*(7.123-w)))"
-"(((3.123+y)*(7.123/w)))"
-"(((3.123+y)*(z*9.123)))"
-"(((3.123+y)*(z-9.123)))"
-"(((3.123+y)*(z/9.123)))"
-"(((3.123+y)+(7.123*w)))"
-"(((3.123+y)+(7.123-w)))"
-"(((3.123+y)+(7.123/w)))"
-"(((3.123+y)+(z*9.123)))"
-"(((3.123+y)+(z-9.123)))"
-"(((3.123+y)+(z/9.123)))"
-"(((3.123+y)-(7.123*w)))"
-"(((3.123+y)-(7.123-w)))"
-"(((3.123+y)-(7.123/w)))"
-"(((3.123+y)-(z*9.123)))"
-"(((3.123+y)-(z-9.123)))"
-"(((3.123+y)-(z/9.123)))"
-"(((3.123+y)/(7.123*w)))"
-"(((3.123+y)/(7.123-w)))"
-"(((3.123+y)/(7.123/w)))"
-"(((3.123+y)/(z*9.123)))"
-"(((3.123+y)/(z-9.123)))"
-"(((3.123+y)/(z/9.123)))"
-"(((3.123-y)*(7.123*w)))"
-"(((3.123-y)*(7.123+w)))"
-"(((3.123-y)*(7.123/w)))"
-"(((3.123-y)*(z*9.123)))"
-"(((3.123-y)*(z+9.123)))"
-"(((3.123-y)*(z/9.123)))"
-"(((3.123-y)+(7.123*w)))"
-"(((3.123-y)+(7.123+w)))"
-"(((3.123-y)+(7.123/w)))"
-"(((3.123-y)+(z*9.123)))"
-"(((3.123-y)+(z+9.123)))"
-"(((3.123-y)+(z/9.123)))"
-"(((3.123-y)-(7.123*w)))"
-"(((3.123-y)-(7.123+w)))"
-"(((3.123-y)-(7.123/w)))"
-"(((3.123-y)-(z*9.123)))"
-"(((3.123-y)-(z+9.123)))"
-"(((3.123-y)-(z/9.123)))"
-"(((3.123-y)/(7.123*w)))"
-"(((3.123-y)/(7.123+w)))"
-"(((3.123-y)/(7.123/w)))"
-"(((3.123-y)/(z*9.123)))"
-"(((3.123-y)/(z+9.123)))"
-"(((3.123-y)/(z/9.123)))"
-"(((3.123/y)*(7.123+w)))"
-"(((3.123/y)*(7.123-w)))"
-"(((3.123/y)*(z+9.123)))"
-"(((3.123/y)*(z-9.123)))"
-"(((3.123/y)+(7.123+w)))"
-"(((3.123/y)+(7.123-w)))"
-"(((3.123/y)+(7.123/w)))"
-"(((3.123/y)+(z+9.123)))"
-"(((3.123/y)+(z-9.123)))"
-"(((3.123/y)+(z/9.123)))"
-"(((3.123/y)-(7.123*w)))"
-"(((3.123/y)-(7.123+w)))"
-"(((3.123/y)-(7.123-w)))"
-"(((3.123/y)-(7.123/w)))"
-"(((3.123/y)-(z*9.123)))"
-"(((3.123/y)-(z+9.123)))"
-"(((3.123/y)-(z-9.123)))"
-"(((3.123/y)-(z/9.123)))"
-"(((3.123/y)/(7.123+w)))"
-"(((3.123/y)/(7.123-w)))"
-"(((3.123/y)/(z+9.123)))"
-"(((3.123/y)/(z-9.123)))"
-"(((x*3.123)*(z+9.123)))"
-"(((x*3.123)*(z-9.123)))"
-"(((x*3.123)+(z*9.123)))"
-"(((x*3.123)+(z+9.123)))"
-"(((x*3.123)+(z-9.123)))"
-"(((x*3.123)+(z/9.123)))"
-"(((x*3.123)-(z*9.123)))"
-"(((x*3.123)-(z+9.123)))"
-"(((x*3.123)-(z-9.123)))"
-"(((x*3.123)-(z/9.123)))"
-"(((x*3.123)/(z+9.123)))"
-"(((x*3.123)/(z-9.123)))"
-"(((x*5.123)*(7.123+w)))"
-"(((x*5.123)*(7.123-w)))"
-"(((x*5.123)+(7.123*w)))"
-"(((x*5.123)+(7.123+w)))"
-"(((x*5.123)+(7.123-w)))"
-"(((x*5.123)+(7.123/w)))"
-"(((x*5.123)-(7.123*w)))"
-"(((x*5.123)-(7.123+w)))"
-"(((x*5.123)-(7.123-w)))"
-"(((x*5.123)-(7.123/w)))"
-"(((x*5.123)/(7.123+w)))"
-"(((x*5.123)/(7.123-w)))"
-"(((x+3.123)*(z*9.123)))"
-"(((x+3.123)*(z-9.123)))"
-"(((x+3.123)*(z/9.123)))"
-"(((x+3.123)+(z*9.123)))"
-"(((x+3.123)+(z-9.123)))"
-"(((x+3.123)+(z/9.123)))"
-"(((x+3.123)-(z*9.123)))"
-"(((x+3.123)-(z-9.123)))"
-"(((x+3.123)-(z/9.123)))"
-"(((x+3.123)/(z*9.123)))"
-"(((x+3.123)/(z-9.123)))"
-"(((x+3.123)/(z/9.123)))"
-"(((x+5.123)*(7.123*w)))"
-"(((x+5.123)*(7.123-w)))"
-"(((x+5.123)*(7.123/w)))"
-"(((x+5.123)+(7.123*w)))"
-"(((x+5.123)+(7.123-w)))"
-"(((x+5.123)+(7.123/w)))"
-"(((x+5.123)-(7.123*w)))"
-"(((x+5.123)-(7.123-w)))"
-"(((x+5.123)-(7.123/w)))"
-"(((x+5.123)/(7.123*w)))"
-"(((x+5.123)/(7.123-w)))"
-"(((x+5.123)/(7.123/w)))"
-"(((x-3.123)*(z*9.123)))"
-"(((x-3.123)*(z+9.123)))"
-"(((x-3.123)*(z/9.123)))"
-"(((x-3.123)+(z*9.123)))"
-"(((x-3.123)+(z+9.123)))"
-"(((x-3.123)+(z/9.123)))"
-"(((x-3.123)-(z*9.123)))"
-"(((x-3.123)-(z+9.123)))"
-"(((x-3.123)-(z/9.123)))"
-"(((x-3.123)/(z*9.123)))"
-"(((x-3.123)/(z+9.123)))"
-"(((x-3.123)/(z/9.123)))"
-"(((x-5.123)*(7.123*w)))"
-"(((x-5.123)*(7.123+w)))"
-"(((x-5.123)*(7.123/w)))"
-"(((x-5.123)+(7.123*w)))"
-"(((x-5.123)+(7.123+w)))"
-"(((x-5.123)+(7.123/w)))"
-"(((x-5.123)-(7.123*w)))"
-"(((x-5.123)-(7.123+w)))"
-"(((x-5.123)-(7.123/w)))"
-"(((x-5.123)/(7.123*w)))"
-"(((x-5.123)/(7.123+w)))"
-"(((x-5.123)/(7.123/w)))"
-"(((x/3.123)*(z+9.123)))"
-"(((x/3.123)*(z-9.123)))"
-"(((x/3.123)+(z+9.123)))"
-"(((x/3.123)+(z-9.123)))"
-"(((x/3.123)+(z/9.123)))"
-"(((x/3.123)-(z*9.123)))"
-"(((x/3.123)-(z+9.123)))"
-"(((x/3.123)-(z-9.123)))"
-"(((x/3.123)-(z/9.123)))"
-"(((x/3.123)/(z+9.123)))"
-"(((x/3.123)/(z-9.123)))"
-"(((x/5.123)*(7.123+w)))"
-"(((x/5.123)*(7.123-w)))"
-"(((x/5.123)+(7.123+w)))"
-"(((x/5.123)+(7.123-w)))"
-"(((x/5.123)+(7.123/w)))"
-"(((x/5.123)-(7.123*w)))"
-"(((x/5.123)-(7.123+w)))"
-"(((x/5.123)-(7.123-w)))"
-"(((x/5.123)-(7.123/w)))"
-"(((x/5.123)/(7.123+w)))"
-"(((x/5.123)/(7.123-w)))"
-"((3.123*(y+(7.123*w))))"
-"((3.123*(y+(z*9.123))))"
-"((3.123*(y-(7.123*w))))"
-"((3.123*(y-(z*9.123))))"
-"((3.123*y*z+3.123+y/z))"
-"((3.123*y*z-3.123/y*z))"
-"((3.123*y+z*3.123-y*z))"
-"((3.123*y+z*3.123/y*z))"
-"((3.123*y-z/3.123+y*z))"
-"((3.123*y-z/3.123/y+z))"
-"((3.123*y/z+3.123/y-z))"
-"((3.123*y/z-3.123+y+z))"
-"((3.123+((y*7.123)*w)))"
-"((3.123+((y*7.123)/w)))"
-"((3.123+((y*z)*9.123)))"
-"((3.123+((y*z)/9.123)))"
-"((3.123+((y+7.123)*w)))"
-"((3.123+((y+7.123)/w)))"
-"((3.123+((y+z)*9.123)))"
-"((3.123+((y+z)/9.123)))"
-"((3.123+((y-7.123)*w)))"
-"((3.123+((y-7.123)/w)))"
-"((3.123+((y-z)*9.123)))"
-"((3.123+((y-z)/9.123)))"
-"((3.123+((y/7.123)*w)))"
-"((3.123+((y/7.123)+w)))"
-"((3.123+((y/7.123)/w)))"
-"((3.123+((y/z)*9.123)))"
-"((3.123+((y/z)+9.123)))"
-"((3.123+((y/z)/9.123)))"
-"((3.123+(y*(7.123/w))))"
-"((3.123+(y*(z/9.123))))"
-"((3.123+(y/(7.123*w))))"
-"((3.123+(y/(z*9.123))))"
-"((3.123+y*z*3.123+y+z))"
-"((3.123+y*z-3.123*y/z))"
-"((3.123+y+z+3.123-y*z))"
-"((3.123+y+z/3.123/y+z))"
-"((3.123+y-z*3.123*y*z))"
-"((3.123+y-z-3.123*y+z))"
-"((3.123+y/z+3.123*y-z))"
-"((3.123+y/z/3.123-y/z))"
-"((3.123-((y*7.123)*w)))"
-"((3.123-((y*7.123)/w)))"
-"((3.123-((y*z)*9.123)))"
-"((3.123-((y*z)/9.123)))"
-"((3.123-((y+7.123)*w)))"
-"((3.123-((y+7.123)/w)))"
-"((3.123-((y+z)*9.123)))"
-"((3.123-((y+z)/9.123)))"
-"((3.123-((y-7.123)*w)))"
-"((3.123-((y-7.123)/w)))"
-"((3.123-((y-z)*9.123)))"
-"((3.123-((y-z)/9.123)))"
-"((3.123-((y/7.123)*w)))"
-"((3.123-((y/7.123)/w)))"
-"((3.123-((y/z)*9.123)))"
-"((3.123-((y/z)/9.123)))"
-"((3.123-(y*(7.123/w))))"
-"((3.123-(y*(z/9.123))))"
-"((3.123-(y/(7.123*w))))"
-"((3.123-(y/(z*9.123))))"
-"((3.123-y*z-3.123+y-z))"
-"((3.123-y*z-3.123/y/z))"
-"((3.123-y+z*3.123+y-z))"
-"((3.123-y-z/3.123+y/z))"
-"((3.123-y/z+3.123+y*z))"
-"((3.123-y/z+3.123/y-z))"
-"((3.123/(y+(7.123*w))))"
-"((3.123/(y+(z*9.123))))"
-"((3.123/(y-(7.123*w))))"
-"((3.123/(y-(z*9.123))))"
-"((3.123/y*z+3.123-y-z))"
-"((3.123/y*z-3.123*y*z))"
-"((3.123/y+z*3.123*y/z))"
-"((3.123/y+z*3.123/y/z))"
-"((3.123/y-z/3.123*y+z))"
-"((3.123/y-z/3.123-y+z))"
-"((3.123/y/z+3.123*y-z))"
-"((3.123/y/z-3.123-y/z))"
-"((x*(3.123+(z*9.123))))"
-"((x*(3.123-(z*9.123))))"
-"((x*(5.123+(7.123*w))))"
-"((x*(5.123-(7.123*w))))"
-"((x*5.123*z+x+5.123/z))"
-"((x*5.123*z-x/5.123*z))"
-"((x*5.123+z*x-5.123*z))"
-"((x*5.123+z*x/5.123*z))"
-"((x*5.123-z/x+5.123*z))"
-"((x*5.123-z/x/5.123+z))"
-"((x*5.123/z+x/5.123-z))"
-"((x*5.123/z-x+5.123+z))"
-"((x*y*7.123+x+y/7.123))"
-"((x*y*7.123-x/y*7.123))"
-"((x*y+7.123*x-y*7.123))"
-"((x*y+7.123*x/y*7.123))"
-"((x*y-7.123/x+y*7.123))"
-"((x*y-7.123/x/y+7.123))"
-"((x*y/7.123+x/y-7.123))"
-"((x*y/7.123-x+y+7.123))"
-"((x+((3.123*z)*9.123)))"
-"((x+((3.123*z)/9.123)))"
-"((x+((3.123+z)*9.123)))"
-"((x+((3.123+z)/9.123)))"
-"((x+((3.123-z)*9.123)))"
-"((x+((3.123-z)/9.123)))"
-"((x+((3.123/z)*9.123)))"
-"((x+((3.123/z)+9.123)))"
-"((x+((3.123/z)/9.123)))"
-"((x+(3.123*(z/9.123))))"
-"((x+(3.123/(z*9.123))))"
-"((x+(5.123*(7.123/w))))"
-"((x+(5.123/(7.123*w))))"
-"((x+5.123*z*x+5.123+z))"
-"((x+5.123*z-x*5.123/z))"
-"((x+5.123+z+x-5.123*z))"
-"((x+5.123+z/x/5.123+z))"
-"((x+5.123-z*x*5.123*z))"
-"((x+5.123-z-x*5.123+z))"
-"((x+5.123/z+x*5.123-z))"
-"((x+5.123/z/x-5.123/z))"
-"((x+y*7.123*x+y+7.123))"
-"((x+y*7.123-x*y/7.123))"
-"((x+y+7.123+x-y*7.123))"
-"((x+y+7.123/x/y+7.123))"
-"((x+y-7.123*x*y*7.123))"
-"((x+y-7.123-x*y+7.123))"
-"((x+y/7.123+x*y-7.123))"
-"((x+y/7.123/x-y/7.123))"
-"((x-((3.123*z)*9.123)))"
-"((x-((3.123*z)/9.123)))"
-"((x-((3.123+z)*9.123)))"
-"((x-((3.123+z)/9.123)))"
-"((x-((3.123-z)*9.123)))"
-"((x-((3.123-z)/9.123)))"
-"((x-((3.123/z)*9.123)))"
-"((x-((3.123/z)/9.123)))"
-"((x-(3.123*(z/9.123))))"
-"((x-(3.123/(z*9.123))))"
-"((x-(5.123*(7.123/w))))"
-"((x-(5.123/(7.123*w))))"
-"((x-5.123*z-x+5.123-z))"
-"((x-5.123*z-x/5.123/z))"
-"((x-5.123+z*x+5.123-z))"
-"((x-5.123-z/x+5.123/z))"
-"((x-5.123/z+x+5.123*z))"
-"((x-5.123/z+x/5.123-z))"
-"((x-y*7.123-x+y-7.123))"
-"((x-y*7.123-x/y/7.123))"
-"((x-y+7.123*x+y-7.123))"
-"((x-y-7.123/x+y/7.123))"
-"((x-y/7.123+x+y*7.123))"
-"((x-y/7.123+x/y-7.123))"
-"((x/(3.123+(z*9.123))))"
-"((x/(3.123-(z*9.123))))"
-"((x/(5.123+(7.123*w))))"
-"((x/(5.123-(7.123*w))))"
-"((x/5.123*z+x-5.123-z))"
-"((x/5.123*z-x*5.123*z))"
-"((x/5.123+z*x*5.123/z))"
-"((x/5.123+z*x/5.123/z))"
-"((x/5.123-z/x*5.123+z))"
-"((x/5.123-z/x-5.123+z))"
-"((x/5.123/z+x*5.123-z))"
-"((x/5.123/z-x-5.123/z))"
-"((x/y*7.123+x-y-7.123))"
-"((x/y*7.123-x*y*7.123))"
-"((x/y+7.123*x*y/7.123))"
-"((x/y+7.123*x/y/7.123))"
-"((x/y-7.123/x*y+7.123))"
-"((x/y-7.123/x-y+7.123))"
-"((x/y/7.123+x*y-7.123))"
-"((x/y/7.123-x-y/7.123))"
-"(10+sqrt(a))<(sin(8)^2)"
-"(a^2.1/3.3)+(b^2.1/3.3)"
-"(a^2/sin(2*pi/b))-a/2.2"
-"1.1*a^2+2.2*b^3+3.3*c^4"
-"1.1*x^2+2.2*1.1/y^3-2.2"
-"1.1*x^2+2.2+1.1/y^3-2.2"
-"1.1*x^2+2.2-1.1/y^3-2.2"
-"tan(((b/cos((a-b)))+e))"
-"x*y*z-x*y/z*x-y/z*x-y/z"
-"x*y/z-x*y*z*x/y+z*x/y-z"
-"x+y/z+x+y*z+x+y-z-x+y+z"
-"x-y*z+x+y*z+x+y/z-x+y+z"
-"x-y/z*x-y*z-x*y+z+x*y-z"
-"x/y*z*x/y/z-x*y+z+x*y-z"
-"x/y/z+x/y*z+x/y+z-x/y-z"
-"(((((a+a)-1.83)*b)/a)+b)"
-"((((0.50-(b-a))-b)*a)+b)"
-"((((pi/b)*2.66)*0.31)/pi)"
-"((((sin(b)*1.61)/a)/a)*a)"
-"(((tan((3.80/b))+b)+a)+e)"
-"((1.1+a)/2.2)+(b-(3.3*c))"
-"((7.7*(2.2/3.3))-4.4)^2.1"
-"((b+(((1.56+pi)*b)-a))+b)"
-"((cos(cos(tan(pi)))+a)/a)"
-"(cos((((e+e)+3.21)/b))-a)"
-"((((((x))))))((((((x))))))"
-"(((((b-1.19)+a)+pi)+a)-pi)"
-"((sin(sin((b+b)))/1.06)-a)"
-"((tan(((3.70*pi)-a))*b)-b)"
-"[[[[[[x]]]]]][[[[[[x]]]]]]"
-"{{{{{{x}}}}}}{{{{{{x}}}}}}"
-"((2/3)-(3/2))*((3/2)-(2/3))"
-"((3.123*y*z+w+3.123+y/z/w))"
-"((3.123*y*z-w*3.123-y*z/w))"
-"((3.123*y*z-w/3.123+y+z*w))"
-"((3.123*y+z*w*3.123/y-z+w))"
-"((3.123*y+z*w-3.123+y-z-w))"
-"((3.123*y+z+w*3.123/y/z-w))"
-"((3.123*y+z-w+3.123/y*z-w))"
-"((3.123*y+z/w/3.123+y*z-w))"
-"((3.123*y-z*w*3.123+y+z-w))"
-"((3.123*y-z*w/3.123*y+z+w))"
-"((3.123*y-z+w+3.123/y/z+w))"
-"((3.123*y-z-w*3.123-y*z/w))"
-"((3.123*y-z/w+3.123+y/z-w))"
-"((3.123*y/z+w*3.123-y+z/w))"
-"((3.123*y/z-w+3.123-y-z/w))"
-"((3.123*y/z-w/3.123-y-z*w))"
-"((3.123+y*z*w+3.123-y/z*w))"
-"((3.123+y*z*w-3.123/y/z-w))"
-"((3.123+y*z-w*3.123-y/z/w))"
-"((3.123+y*z-w-3.123+y-z*w))"
-"((3.123+y*z/w+3.123*y/z-w))"
-"((3.123+y*z/w+3.123-y/z/w))"
-"((3.123+y*z/w-3.123+y+z/w))"
-"((3.123+y+z*w*3.123/y+z-w))"
-"((3.123+y+z*w-3.123/y*z-w))"
-"((3.123+y+z-w-3.123-y/z*w))"
-"((3.123+y+z/w+3.123*y*z-w))"
-"((3.123+y+z/w/3.123*y-z-w))"
-"((3.123+y-z*w+3.123/y+z+w))"
-"((3.123+y-z*w/3.123-y/z-w))"
-"((3.123+y-z-w+3.123+y/z/w))"
-"((3.123+y-z/w*3.123+y/z-w))"
-"((3.123+y-z/w-3.123*y+z-w))"
-"((3.123+y/z*w*3.123+y*z-w))"
-"((3.123+y/z*w*3.123+y+z*w))"
-"((3.123+y/z*w+3.123*y+z/w))"
-"((3.123+y/z+w*3.123*y+z*w))"
-"((3.123+y/z-w-3.123-y+z*w))"
-"((3.123+y/z-w/3.123-y*z*w))"
-"((3.123+y/z/w/3.123*y-z*w))"
-"((3.123+y/z/w/3.123+y-z/w))"
-"((3.123-y*z*w*3.123+y*z*w))"
-"((3.123-y*z*w*3.123/y-z*w))"
-"((3.123-y*z+w*3.123/y*z+w))"
-"((3.123-y*z-w*3.123+y-z/w))"
-"((3.123-y*z/w-3.123-y/z*w))"
-"((3.123-y*z/w-3.123/y+z*w))"
-"((3.123-y*z/w/3.123+y/z+w))"
-"((3.123-y+z*w*3.123/y+z/w))"
-"((3.123-y+z*w+3.123/y-z-w))"
-"((3.123-y+z+w-3.123*y*z+w))"
-"((3.123-y+z/w-3.123*y-z/w))"
-"((3.123-y+z/w-3.123+y*z*w))"
-"((3.123-y-z*w*3.123+y*z/w))"
-"((3.123-y-z*w+3.123/y-z*w))"
-"((3.123-y-z+w+3.123-y*z/w))"
-"((3.123-y-z/w/3.123+y/z*w))"
-"((3.123-y-z/w/3.123/y-z/w))"
-"((3.123-y/z*w+3.123*y-z*w))"
-"((3.123-y/z*w+3.123+y-z*w))"
-"((3.123-y/z*w/3.123-y*z-w))"
-"((3.123-y/z+w/3.123*y/z+w))"
-"((3.123-y/z-w*3.123-y+z/w))"
-"((3.123-y/z/w-3.123+y*z/w))"
-"((3.123-y/z/w/3.123*y+z*w))"
-"((3.123/y*z+w-3.123+y/z*w))"
-"((3.123/y*z-w+3.123+y+z/w))"
-"((3.123/y*z-w/3.123-y*z*w))"
-"((3.123/y+z*w+3.123-y/z+w))"
-"((3.123/y+z+w/3.123*y*z-w))"
-"((3.123/y+z-w-3.123+y*z/w))"
-"((3.123/y+z/w-3.123-y-z+w))"
-"((3.123/y-z*w-3.123*y-z+w))"
-"((3.123/y-z*w/3.123-y*z+w))"
-"((3.123/y-z+w-3.123*y/z-w))"
-"((3.123/y-z-w/3.123+y/z*w))"
-"((3.123/y-z/w*3.123-y+z+w))"
-"((3.123/y/z+w/3.123-y+z*w))"
-"((3.123/y/z-w+3.123-y-z/w))"
-"((3.123/y/z-w-3.123-y-z*w))"
-"((cos(((1.12+b)+pi))+pi)+b)"
-"((x*5.123*z+w+x+5.123/z/w))"
-"((x*5.123*z-w*x-5.123*z/w))"
-"((x*5.123*z-w/x+5.123+z*w))"
-"((x*5.123+z*w*x/5.123-z+w))"
-"((x*5.123+z*w-x+5.123-z-w))"
-"((x*5.123+z+w*x/5.123/z-w))"
-"((x*5.123+z-w+x/5.123*z-w))"
-"((x*5.123+z/w/x+5.123*z-w))"
-"((x*5.123-z*w*x+5.123+z-w))"
-"((x*5.123-z*w/x*5.123+z+w))"
-"((x*5.123-z+w+x/5.123/z+w))"
-"((x*5.123-z-w*x-5.123*z/w))"
-"((x*5.123-z/w+x+5.123/z-w))"
-"((x*5.123/z+w*x-5.123+z/w))"
-"((x*5.123/z-w+x-5.123-z/w))"
-"((x*5.123/z-w/x-5.123-z*w))"
-"((x*y*7.123+w+x+y/7.123/w))"
-"((x*y*7.123-w*x-y*7.123/w))"
-"((x*y*7.123-w/x+y+7.123*w))"
-"((x*y*z+9.123+x+y/z/9.123))"
-"((x*y*z+x+y/z+x+y+z+x-y*z))"
-"((x*y*z-9.123*x-y*z/9.123))"
-"((x*y*z-9.123/x+y+z*9.123))"
-"((x*y*z-x/y*z-x/y/z-x-y/z))"
-"((x*y+7.123*w*x/y-7.123+w))"
-"((x*y+7.123*w-x+y-7.123-w))"
-"((x*y+7.123+w*x/y/7.123-w))"
-"((x*y+7.123-w+x/y*7.123-w))"
-"((x*y+7.123/w/x+y*7.123-w))"
-"((x*y+z*9.123*x/y-z+9.123))"
-"((x*y+z*9.123-x+y-z-9.123))"
-"((x*y+z*x-y*z*x+y*z*x+y+z))"
-"((x*y+z*x/y*z*x/y+z*x*y/z))"
-"((x*y+z+9.123*x/y/z-9.123))"
-"((x*y+z-9.123+x/y*z-9.123))"
-"((x*y+z/9.123/x+y*z-9.123))"
-"((x*y-7.123*w*x+y+7.123-w))"
-"((x*y-7.123*w/x*y+7.123+w))"
-"((x*y-7.123+w+x/y/7.123+w))"
-"((x*y-7.123-w*x-y*7.123/w))"
-"((x*y-7.123/w+x+y/7.123-w))"
-"((x*y-z*9.123*x+y+z-9.123))"
-"((x*y-z*9.123/x*y+z+9.123))"
-"((x*y-z+9.123+x/y/z+9.123))"
-"((x*y-z-9.123*x-y*z/9.123))"
-"((x*y-z/9.123+x+y/z-9.123))"
-"((x*y-z/x+y*z/x+y/z/x-y/z))"
-"((x*y-z/x/y+z/x/y-z/x-y+z))"
-"((x*y/7.123+w*x-y+7.123/w))"
-"((x*y/7.123-w+x-y-7.123/w))"
-"((x*y/7.123-w/x-y-7.123*w))"
-"((x*y/z+9.123*x-y+z/9.123))"
-"((x*y/z+x/y-z+x/y*z+x-y-z))"
-"((x*y/z-9.123+x-y-z/9.123))"
-"((x*y/z-9.123/x-y-z*9.123))"
-"((x*y/z-x+y+z-x+y-z-x*y+z))"
-"((x+5.123*z*w+x-5.123/z*w))"
-"((x+5.123*z*w-x/5.123/z-w))"
-"((x+5.123*z-w*x-5.123/z/w))"
-"((x+5.123*z-w-x+5.123-z*w))"
-"((x+5.123*z/w+x*5.123/z-w))"
-"((x+5.123*z/w+x-5.123/z/w))"
-"((x+5.123*z/w-x+5.123+z/w))"
-"((x+5.123+z*w*x/5.123+z-w))"
-"((x+5.123+z*w-x/5.123*z-w))"
-"((x+5.123+z-w-x-5.123/z*w))"
-"((x+5.123+z/w+x*5.123*z-w))"
-"((x+5.123+z/w/x*5.123-z-w))"
-"((x+5.123-z*w+x/5.123+z+w))"
-"((x+5.123-z*w/x-5.123/z-w))"
-"((x+5.123-z-w+x+5.123/z/w))"
-"((x+5.123-z/w*x+5.123/z-w))"
-"((x+5.123-z/w-x*5.123+z-w))"
-"((x+5.123/z*w*x+5.123*z-w))"
-"((x+5.123/z*w*x+5.123+z*w))"
-"((x+5.123/z*w+x*5.123+z/w))"
-"((x+5.123/z+w*x*5.123+z*w))"
-"((x+5.123/z-w-x-5.123+z*w))"
-"((x+5.123/z-w/x-5.123*z*w))"
-"((x+5.123/z/w/x*5.123-z*w))"
-"((x+5.123/z/w/x+5.123-z/w))"
-"((x+y*7.123*w+x-y/7.123*w))"
-"((x+y*7.123*w-x/y/7.123-w))"
-"((x+y*7.123-w*x-y/7.123/w))"
-"((x+y*7.123-w-x+y-7.123*w))"
-"((x+y*7.123/w+x*y/7.123-w))"
-"((x+y*7.123/w+x-y/7.123/w))"
-"((x+y*7.123/w-x+y+7.123/w))"
-"((x+y*z*9.123+x-y/z*9.123))"
-"((x+y*z*9.123-x/y/z-9.123))"
-"((x+y*z*x+y+z*x-y/z+x/y-z))"
-"((x+y*z-9.123*x-y/z/9.123))"
-"((x+y*z-9.123-x+y-z*9.123))"
-"((x+y*z-x*y/z-x*y*z-x/y*z))"
-"((x+y*z/9.123+x*y/z-9.123))"
-"((x+y*z/9.123+x-y/z/9.123))"
-"((x+y*z/9.123-x+y+z/9.123))"
-"((x+y+7.123*w*x/y+7.123-w))"
-"((x+y+7.123*w-x/y*7.123-w))"
-"((x+y+7.123-w-x-y/7.123*w))"
-"((x+y+7.123/w+x*y*7.123-w))"
-"((x+y+7.123/w/x*y-7.123-w))"
-"((x+y+z*9.123*x/y+z-9.123))"
-"((x+y+z*9.123-x/y*z-9.123))"
-"((x+y+z+x-y*z+x*y+z*x/y*z))"
-"((x+y+z-9.123-x-y/z*9.123))"
-"((x+y+z/9.123+x*y*z-9.123))"
-"((x+y+z/9.123/x*y-z-9.123))"
-"((x+y+z/x/y+z/x/y-z/x*y+z))"
-"((x+y-7.123*w+x/y+7.123+w))"
-"((x+y-7.123*w/x-y/7.123-w))"
-"((x+y-7.123-w+x+y/7.123/w))"
-"((x+y-7.123/w*x+y/7.123-w))"
-"((x+y-7.123/w-x*y+7.123-w))"
-"((x+y-z*9.123+x/y+z+9.123))"
-"((x+y-z*9.123/x-y/z-9.123))"
-"((x+y-z*x*y*z*x/y+z*x/y/z))"
-"((x+y-z-9.123+x+y/z/9.123))"
-"((x+y-z-x*y+z-x*y-z/x/y+z))"
-"((x+y-z/9.123*x+y/z-9.123))"
-"((x+y-z/9.123-x*y+z-9.123))"
-"((x+y/7.123*w*x+y*7.123-w))"
-"((x+y/7.123*w*x+y+7.123*w))"
-"((x+y/7.123*w+x*y+7.123/w))"
-"((x+y/7.123+w*x*y+7.123*w))"
-"((x+y/7.123-w-x-y+7.123*w))"
-"((x+y/7.123-w/x-y*7.123*w))"
-"((x+y/7.123/w/x*y-7.123*w))"
-"((x+y/7.123/w/x+y-7.123/w))"
-"((x+y/z*9.123*x+y*z-9.123))"
-"((x+y/z*9.123*x+y+z*9.123))"
-"((x+y/z*9.123+x*y+z/9.123))"
-"((x+y/z+9.123*x*y+z*9.123))"
-"((x+y/z+x*y-z+x*y/z+x/y-z))"
-"((x+y/z-9.123-x-y+z*9.123))"
-"((x+y/z-9.123/x-y*z*9.123))"
-"((x+y/z/9.123/x*y-z*9.123))"
-"((x+y/z/9.123/x+y-z/9.123))"
-"((x+y/z/x-y/z/x-y*z-x/y/z))"
-"((x-5.123*z*w*x+5.123*z*w))"
-"((x-5.123*z*w*x/5.123-z*w))"
-"((x-5.123*z+w*x/5.123*z+w))"
-"((x-5.123*z-w*x+5.123-z/w))"
-"((x-5.123*z/w-x-5.123/z*w))"
-"((x-5.123*z/w-x/5.123+z*w))"
-"((x-5.123*z/w/x+5.123/z+w))"
-"((x-5.123+z*w*x/5.123+z/w))"
-"((x-5.123+z*w+x/5.123-z-w))"
-"((x-5.123+z+w-x*5.123*z+w))"
-"((x-5.123+z/w-x*5.123-z/w))"
-"((x-5.123+z/w-x+5.123*z*w))"
-"((x-5.123-z*w*x+5.123*z/w))"
-"((x-5.123-z*w+x/5.123-z*w))"
-"((x-5.123-z+w+x-5.123*z/w))"
-"((x-5.123-z/w/x+5.123/z*w))"
-"((x-5.123-z/w/x/5.123-z/w))"
-"((x-5.123/z*w+x*5.123-z*w))"
-"((x-5.123/z*w+x+5.123-z*w))"
-"((x-5.123/z*w/x-5.123*z-w))"
-"((x-5.123/z+w/x*5.123/z+w))"
-"((x-5.123/z-w*x-5.123+z/w))"
-"((x-5.123/z/w-x+5.123*z/w))"
-"((x-5.123/z/w/x*5.123+z*w))"
-"((x-y*7.123*w*x+y*7.123*w))"
-"((x-y*7.123*w*x/y-7.123*w))"
-"((x-y*7.123+w*x/y*7.123+w))"
-"((x-y*7.123-w*x+y-7.123/w))"
-"((x-y*7.123/w-x-y/7.123*w))"
-"((x-y*7.123/w-x/y+7.123*w))"
-"((x-y*7.123/w/x+y/7.123+w))"
-"((x-y*z*9.123*x+y*z*9.123))"
-"((x-y*z*9.123*x/y-z*9.123))"
-"((x-y*z+9.123*x/y*z+9.123))"
-"((x-y*z-9.123*x+y-z/9.123))"
-"((x-y*z-x+y-z-x+y+z/x/y+z))"
-"((x-y*z-x/y/z-x/y*z-x*y*z))"
-"((x-y*z/9.123-x-y/z*9.123))"
-"((x-y*z/9.123-x/y+z*9.123))"
-"((x-y*z/9.123/x+y/z+9.123))"
-"((x-y+7.123*w*x/y+7.123/w))"
-"((x-y+7.123*w+x/y-7.123-w))"
-"((x-y+7.123+w-x*y*7.123+w))"
-"((x-y+7.123/w-x*y-7.123/w))"
-"((x-y+7.123/w-x+y*7.123*w))"
-"((x-y+z*9.123*x/y+z/9.123))"
-"((x-y+z*9.123+x/y-z-9.123))"
-"((x-y+z*x+y-z*x+y/z+x*y-z))"
-"((x-y+z+9.123-x*y*z+9.123))"
-"((x-y+z/9.123-x*y-z/9.123))"
-"((x-y+z/9.123-x+y*z*9.123))"
-"((x-y-7.123*w*x+y*7.123/w))"
-"((x-y-7.123*w+x/y-7.123*w))"
-"((x-y-7.123+w+x-y*7.123/w))"
-"((x-y-7.123/w/x+y/7.123*w))"
-"((x-y-7.123/w/x/y-7.123/w))"
-"((x-y-z*9.123*x+y*z/9.123))"
-"((x-y-z*9.123+x/y-z*9.123))"
-"((x-y-z+9.123+x-y*z/9.123))"
-"((x-y-z/9.123/x+y/z*9.123))"
-"((x-y-z/9.123/x/y-z/9.123))"
-"((x-y-z/x+y/z/x+y*z-x*y/z))"
-"((x-y/7.123*w+x*y-7.123*w))"
-"((x-y/7.123*w+x+y-7.123*w))"
-"((x-y/7.123*w/x-y*7.123-w))"
-"((x-y/7.123+w/x*y/7.123+w))"
-"((x-y/7.123-w*x-y+7.123/w))"
-"((x-y/7.123/w-x+y*7.123/w))"
-"((x-y/7.123/w/x*y+7.123*w))"
-"((x-y/z*9.123+x*y-z*9.123))"
-"((x-y/z*9.123+x+y-z*9.123))"
-"((x-y/z*9.123/x-y*z-9.123))"
-"((x-y/z+9.123/x*y/z+9.123))"
-"((x-y/z+x+y*z+x+y-z*x*y*z))"
-"((x-y/z+x/y-z+x/y/z+x*y-z))"
-"((x-y/z-9.123*x-y+z/9.123))"
-"((x-y/z/9.123-x+y*z/9.123))"
-"((x-y/z/9.123/x*y+z*9.123))"
-"((x/5.123*z+w-x+5.123/z*w))"
-"((x/5.123*z-w+x+5.123+z/w))"
-"((x/5.123*z-w/x-5.123*z*w))"
-"((x/5.123+z*w+x-5.123/z+w))"
-"((x/5.123+z+w/x*5.123*z-w))"
-"((x/5.123+z-w-x+5.123*z/w))"
-"((x/5.123+z/w-x-5.123-z+w))"
-"((x/5.123-z*w-x*5.123-z+w))"
-"((x/5.123-z*w/x-5.123*z+w))"
-"((x/5.123-z+w-x*5.123/z-w))"
-"((x/5.123-z-w/x+5.123/z*w))"
-"((x/5.123-z/w*x-5.123+z+w))"
-"((x/5.123/z+w/x-5.123+z*w))"
-"((x/5.123/z-w+x-5.123-z/w))"
-"((x/5.123/z-w-x-5.123-z*w))"
-"((x/y*7.123+w-x+y/7.123*w))"
-"((x/y*7.123-w+x+y+7.123/w))"
-"((x/y*7.123-w/x-y*7.123*w))"
-"((x/y*z+9.123-x+y/z*9.123))"
-"((x/y*z+x-y-z+x-y/z+x+y*z))"
-"((x/y*z-9.123+x+y+z/9.123))"
-"((x/y*z-9.123/x-y*z*9.123))"
-"((x/y*z-x*y*z-x*y/z-x+y+z))"
-"((x/y+7.123*w+x-y/7.123+w))"
-"((x/y+7.123+w/x*y*7.123-w))"
-"((x/y+7.123-w-x+y*7.123/w))"
-"((x/y+7.123/w-x-y-7.123+w))"
-"((x/y+z*9.123+x-y/z+9.123))"
-"((x/y+z*x*y/z*x-y+z*x+y-z))"
-"((x/y+z*x/y/z*x*y+z*x-y*z))"
-"((x/y+z+9.123/x*y*z-9.123))"
-"((x/y+z-9.123-x+y*z/9.123))"
-"((x/y+z/9.123-x-y-z+9.123))"
-"((x/y-7.123*w-x*y-7.123+w))"
-"((x/y-7.123*w/x-y*7.123+w))"
-"((x/y-7.123+w-x*y/7.123-w))"
-"((x/y-7.123-w/x+y/7.123*w))"
-"((x/y-7.123/w*x-y+7.123+w))"
-"((x/y-z*9.123-x*y-z+9.123))"
-"((x/y-z*9.123/x-y*z+9.123))"
-"((x/y-z+9.123-x*y/z-9.123))"
-"((x/y-z-9.123/x+y/z*9.123))"
-"((x/y-z/9.123*x-y+z+9.123))"
-"((x/y-z/x*y+z/x*y-z/x+y*z))"
-"((x/y-z/x-y+z/x-y-z/x+y/z))"
-"((x/y/7.123+w/x-y+7.123*w))"
-"((x/y/7.123-w+x-y-7.123/w))"
-"((x/y/7.123-w-x-y-7.123*w))"
-"((x/y/z+9.123/x-y+z*9.123))"
-"((x/y/z+x*y-z+x*y*z+x+y/z))"
-"((x/y/z-9.123+x-y-z/9.123))"
-"((x/y/z-9.123-x-y-z*9.123))"
-"((x/y/z-x-y/z-x-y*z-x+y-z))"
-"(abs((x-y)/z)*exp((x-y)*z))"
-"(abs((x/y)+z)*exp((x/y)-z))"
-"(abs(x-(y/z))*exp(x-(y/z)))"
-"(abs(x/(y*z))*exp(x/(y/z)))"
-"(sin((x*y)+z)+cos((x*y)-z))"
-"(sin((x+y)/z)+cos((x+y)*z))"
-"(sin((x/y)/z)+cos((x/y)*z))"
-"(sin(x*(y+z))+cos(x*(y-z)))"
-"(sin(x-(y*z))+cos(x+(y*z)))"
-"4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"abs(sin(sqrt(a*a+b*b))*255)"
-"abs(sin(sqrt(a^2+b^2))*255)"
-"(((b*(((0.91/b)+b)+a))*b)/b)"
-"(1.123*cos(a)-3.1235)/3.1238"
-"(1.123*sin(a)+2.1234)/3.1237"
-"(1.123*tan(a)+2.1236)/3.1239"
-"sin((1+2/2*3)*4^5)+cos(6*pi)"
-"sqrt(1-sin(2*a)+cos(pi/b)/3)"
-"(((((pi-2.92)/a)/pi)+3.68)*b)"
-"((((x*y)*z)-w)/((x+y)+(z*w)))"
-"((((x*y)/z)-w)/((x-y)-(z*w)))"
-"((((x+y)*z)-w)-((x+y)-(z*w)))"
-"((((x+y)/z)-w)-((x-y)+(z*w)))"
-"((((x-y)*z)-w)*((x+y)-(z/w)))"
-"((((x-y)/z)-w)*((x-y)+(z/w)))"
-"((((x/y)*z)-w)+((x+y)+(z/w)))"
-"((((x/y)/z)-w)+((x-y)-(z/w)))"
-"(((3.123*y)*z)-(3.123/(y*z)))"
-"(((3.123*y)+z)*((3.123/y)*z))"
-"(((3.123*y)-z)/(3.123/(y+z)))"
-"(((3.123*y)/z)+(3.123/(y-z)))"
-"(((3.123+y)*z)-((3.123*y)/z))"
-"(((3.123+y)+z)/((3.123/y)+z))"
-"(((3.123+y)-z)*((3.123*y)*z))"
-"(((3.123+y)/z)+((3.123*y)-z))"
-"(((3.123-y)*z)-((3.123/y)/z))"
-"(((3.123-y)/z)+((3.123/y)-z))"
-"(((3.123/y)*z)-(3.123*(y*z)))"
-"(((3.123/y)+z)*(3.123/(y/z)))"
-"(((3.123/y)-z)/(3.123*(y+z)))"
-"(((3.123/y)/z)+(3.123*(y-z)))"
-"(((x*5.123)*z)-(x/(5.123*z)))"
-"(((x*5.123)+z)*((x/5.123)*z))"
-"(((x*5.123)-z)/(x/(5.123+z)))"
-"(((x*5.123)/z)+(x/(5.123-z)))"
-"(((x*y)*(z+w))+(x+((y/z)/w)))"
-"(((x*y)*(z-w))*(x-((y*z)/w)))"
-"(((x*y)*7.123)-(x/(y*7.123)))"
-"(((x*y)+(z*w))-((x+y)-(z-w)))"
-"(((x*y)+(z+w))*((x/y)/(z-w)))"
-"(((x*y)+(z-w))+((x/y)*(z-w)))"
-"(((x*y)+(z/w))/((x+y)*(z-w)))"
-"(((x*y)+7.123)*((x/y)*7.123))"
-"(((x*y)-(z*w))*((x+y)+(z-w)))"
-"(((x*y)-(z+w))+((x/y)/(z+w)))"
-"(((x*y)-(z-w))*(x-(y*(z/w))))"
-"(((x*y)-(z/w))+((x+y)/(z-w)))"
-"(((x*y)-7.123)/(x/(y+7.123)))"
-"(((x*y)/(z+w))*(x-((y+z)/w)))"
-"(((x*y)/(z-w))+(x-((y-z)/w)))"
-"(((x*y)/7.123)+(x/(y-7.123)))"
-"(((x+5.123)*z)-((x*5.123)/z))"
-"(((x+5.123)+z)/((x/5.123)+z))"
-"(((x+5.123)-z)*((x*5.123)*z))"
-"(((x+5.123)/z)+((x*5.123)-z))"
-"(((x+y)*(z*w))+(x-(y/(z*w))))"
-"(((x+y)*(z-w))*((x-y)/(z/w)))"
-"(((x+y)*(z/w))-(x+((y+z)/w)))"
-"(((x+y)*7.123)-((x*y)/7.123))"
-"(((x+y)+(z*w))*((x/y)+(z-w)))"
-"(((x+y)+(z-w))-((x-y)/(z*w)))"
-"(((x+y)+(z/w))/((x*y)-(z-w)))"
-"(((x+y)+7.123)/((x/y)+7.123))"
-"(((x+y)-(z*w))+((x/y)+(z+w)))"
-"(((x+y)-(z-w))+((x+y)/(z/w)))"
-"(((x+y)-(z/w))-((x*y)+(z-w)))"
-"(((x+y)-7.123)*((x*y)*7.123))"
-"(((x+y)/(z*w))*(x+((y+z)*w)))"
-"(((x+y)/(z-w))/((x-y)*(z*w)))"
-"(((x+y)/(z/w))/(x+((y-z)/w)))"
-"(((x+y)/7.123)+((x*y)-7.123))"
-"(((x-5.123)*z)-((x/5.123)/z))"
-"(((x-5.123)/z)+((x/5.123)-z))"
-"(((x-y)*(z*w))*(x+((y*z)*w)))"
-"(((x-y)*(z+w))*((x/y)*(z+w)))"
-"(((x-y)*(z/w))/(x+((y/z)+w)))"
-"(((x-y)*7.123)-((x/y)/7.123))"
-"(((x-y)+(z*w))+((x/y)-(z-w)))"
-"(((x-y)+(z+w))-((x*y)*(z+w)))"
-"(((x-y)+(z/w))-((x+y)*(z*w)))"
-"(((x-y)-(z*w))*((x+y)*(z/w)))"
-"(((x-y)-(z+w))+((x-y)*(z/w)))"
-"(((x-y)-(z/w))/((x+y)/(z*w)))"
-"(((x-y)/(z*w))+(x+((y-z)*w)))"
-"(((x-y)/(z+w))/((x*y)/(z+w)))"
-"(((x-y)/(z/w))-(x+((y*z)/w)))"
-"(((x-y)/7.123)+((x/y)-7.123))"
-"(((x/5.123)*z)-(x*(5.123*z)))"
-"(((x/5.123)+z)*(x/(5.123/z)))"
-"(((x/5.123)-z)/(x*(5.123+z)))"
-"(((x/5.123)/z)+(x*(5.123-z)))"
-"(((x/y)*(z+w))-(x+((y/z)*w)))"
-"(((x/y)*(z-w))/(x-((y*z)*w)))"
-"(((x/y)*7.123)-(x*(y*7.123)))"
-"(((x/y)+(z+w))/((x*y)*(z-w)))"
-"(((x/y)+(z-w))-(x+(y*(z/w))))"
-"(((x/y)+(z/w))-((x-y)-(z+w)))"
-"(((x/y)+7.123)*(x/(y/7.123)))"
-"(((x/y)-(z*w))/((x-y)*(z+w)))"
-"(((x/y)-(z+w))-((x*y)/(z-w)))"
-"(((x/y)-(z-w))/(x+(y/(z*w))))"
-"(((x/y)-(z/w))*((x-y)+(z+w)))"
-"(((x/y)-7.123)/(x*(y+7.123)))"
-"(((x/y)/(z+w))/(x-((y+z)*w)))"
-"(((x/y)/(z-w))-(x-((y-z)*w)))"
-"(((x/y)/7.123)+(x*(y-7.123)))"
-"((1.1*x^2+2.2)*(1.1/y^3-2.2))"
-"((1.1*x^2+2.2)+(1.1/y^3-2.2))"
-"((1.1*x^2+2.2)-(1.1/y^3-2.2))"
-"((3.123*(y*z))+(3.123+(y/z)))"
-"((3.123*(y+z))*(3.123-(y*z)))"
-"((3.123*(y-z))/(3.123+(y*z)))"
-"((3.123*(y/z))-(3.123+(y+z)))"
-"((3.123+(y*z))*((3.123+y)+z))"
-"((3.123+(y+z))+((3.123-y)*z))"
-"((3.123+(y-z))-((3.123*y)+z))"
-"((3.123+(y/z))/((3.123-y)/z))"
-"((3.123-(y*z))-((3.123+y)-z))"
-"((3.123-(y+z))*(3.123+(y-z)))"
-"((3.123-(y-z))/((3.123+y)/z))"
-"((3.123-(y/z))+((3.123+y)*z))"
-"((3.123/(y*z))+(3.123-(y-z)))"
-"((3.123/(y+z))*(3.123*(y/z)))"
-"((3.123/(y-z))/(3.123-(y+z)))"
-"((3.123/(y/z))-(3.123-(y/z)))"
-"((x*(5.123*z))+(x+(5.123/z)))"
-"((x*(5.123+z))*(x-(5.123*z)))"
-"((x*(5.123-z))/(x+(5.123*z)))"
-"((x*(5.123/z))-(x+(5.123+z)))"
-"((x*(y*7.123))+(x+(y/7.123)))"
-"((x*(y+(z*w)))*((x/y)-(z+w)))"
-"((x*(y+7.123))*(x-(y*7.123)))"
-"((x*(y-(z*w)))/((x*y)+(z+w)))"
-"((x*(y-7.123))/(x+(y*7.123)))"
-"((x*(y/7.123))-(x+(y+7.123)))"
-"((x+((y*z)*w))-(((x/y)/z)-w))"
-"((x+((y*z)/w))+(((x*y)/z)-w))"
-"((x+((y+z)*w))-(((x/y)*z)-w))"
-"((x+((y+z)/w))+(((x*y)*z)-w))"
-"((x+((y-z)*w))/(((x-y)/z)-w))"
-"((x+((y-z)/w))*(((x+y)/z)-w))"
-"((x+((y/z)*w))+((x*y)+(z/w)))"
-"((x+((y/z)+w))*((x*y)+(z*w)))"
-"((x+((y/z)/w))/((x*y)-(z*w)))"
-"((x+(5.123*z))*((x+5.123)+z))"
-"((x+(5.123+z))+((x-5.123)*z))"
-"((x+(5.123-z))-((x*5.123)+z))"
-"((x+(5.123/z))/((x-5.123)/z))"
-"((x+(y*(z/w)))+(x-((y/z)/w)))"
-"((x+(y*7.123))*((x+y)+7.123))"
-"((x+(y+7.123))+((x-y)*7.123))"
-"((x+(y-7.123))-((x*y)+7.123))"
-"((x+(y/(z*w)))*(((x+y)*z)-w))"
-"((x+(y/7.123))/((x-y)/7.123))"
-"((x-((y*z)*w))*(x/(y-(z*w))))"
-"((x-((y*z)/w))-(x/(y+(z*w))))"
-"((x-((y+z)*w))*((x/y)+(z/w)))"
-"((x-((y+z)/w))-((x*y)-(z/w)))"
-"((x-((y-z)*w))+((x/y)-(z*w)))"
-"((x-((y-z)/w))/((x/y)-(z/w)))"
-"((x-((y/z)*w))+(x*(y-(z*w))))"
-"((x-((y/z)/w))/(x*(y+(z*w))))"
-"((x-(5.123*z))-((x+5.123)-z))"
-"((x-(5.123+z))*(x+(5.123-z)))"
-"((x-(5.123-z))/((x+5.123)/z))"
-"((x-(5.123/z))+((x+5.123)*z))"
-"((x-(y*(z/w)))-(x-((y/z)*w)))"
-"((x-(y*7.123))-((x+y)-7.123))"
-"((x-(y+7.123))*(x+(y-7.123)))"
-"((x-(y-7.123))/((x+y)/7.123))"
-"((x-(y/(z*w)))/(((x-y)*z)-w))"
-"((x-(y/7.123))+((x+y)*7.123))"
-"((x/(5.123*z))+(x-(5.123-z)))"
-"((x/(5.123+z))*(x*(5.123/z)))"
-"((x/(5.123-z))/(x-(5.123+z)))"
-"((x/(5.123/z))-(x-(5.123/z)))"
-"((x/(y*7.123))+(x-(y-7.123)))"
-"((x/(y+(z*w)))+((x-y)/(z+w)))"
-"((x/(y+7.123))*(x*(y/7.123)))"
-"((x/(y-(z*w)))-((x*y)-(z+w)))"
-"((x/(y-7.123))/(x-(y+7.123)))"
-"((x/(y/7.123))-(x-(y/7.123)))"
-"(a/cos((sin((2.64+0.17))+b)))"
-"(((((1.98/b)/a)/1.61)*a)*2.12)"
-"((((((3.51+a)/b)+e)-1.31)+a)-a)"
-"((((((a-a)+3.73)+a)*a)/2.50)+e)"
-"((((((b*e)*b)/3.79)+a)/1.87)-a)"
-"((((((b/3.58)+e)-e)*2.90)/b)+a)"
-"(((((e+(a/2.87))+e)+2.73)-b)*b)"
-"(((((pi+1.95)-3.85)-a)*1.80)+b)"
-"((((tan((b/a))*e)+pi)+pi)*3.37)"
-"((b*tan(cos((b/((b*b)+b)))))+a)"
-"((b/tan((b*tan((b*pi)))))+0.42)"
-"(abs((2.2-y)/z)*exp((2.2-y)*z))"
-"(abs((2.2/y)+z)*exp((2.2/y)-z))"
-"(abs((x-3.3)/z)*exp((x-3.3)*z))"
-"(abs((x-y)/4.4)*exp((x-y)*4.4))"
-"(abs((x/3.3)+z)*exp((x/3.3)-z))"
-"(abs((x/y)+4.4)*exp((x/y)-4.4))"
-"(abs(2.2-(y/z))*exp(2.2-(y/z)))"
-"(abs(2.2/(y*z))*exp(2.2/(y/z)))"
-"(abs(x-(3.3/z))*exp(x-(3.3/z)))"
-"(abs(x-(y/4.4))*exp(x-(y/4.4)))"
-"(abs(x/(3.3*z))*exp(x/(3.3/z)))"
-"(abs(x/(y*4.4))*exp(x/(y/4.4)))"
-"(sin((2.2*y)+z)+cos((2.2*y)-z))"
-"(sin((2.2+y)/z)+cos((2.2+y)*z))"
-"(sin((2.2/y)/z)+cos((2.2/y)*z))"
-"(sin((x*3.3)+z)+cos((x*3.3)-z))"
-"(sin((x*y)+4.4)+cos((x*y)-4.4))"
-"(sin((x+3.3)/z)+cos((x+3.3)*z))"
-"(sin((x+y)/4.4)+cos((x+y)*4.4))"
-"(sin((x/3.3)/z)+cos((x/3.3)*z))"
-"(sin((x/y)/4.4)+cos((x/y)*4.4))"
-"(sin(2.2*(y+z))+cos(2.2*(y-z)))"
-"(sin(2.2-(y*z))+cos(2.2+(y*z)))"
-"(sin(x*(3.3+z))+cos(x*(3.3-z)))"
-"(sin(x*(y+4.4))+cos(x*(y-4.4)))"
-"(sin(x-(3.3*z))+cos(x+(3.3*z)))"
-"(sin(x-(y*4.4))+cos(x+(y*4.4)))"
-"1.1*a^2+2.2*b^3+3.3*c^4+3.3*a^5"
-"1.1234567*(2.1234567/3.1234567)"
-"2.2*y*z-2.2*y/z*2.2-y/z*2.2-y/z"
-"2.2*y/z-2.2*y*z*2.2/y+z*2.2/y-z"
-"2.2+y/z+2.2+y*z+2.2+y-z-2.2+y+z"
-"2.2-y*z+2.2+y*z+2.2+y/z-2.2+y+z"
-"2.2-y/z*2.2-y*z-2.2*y+z+2.2*y-z"
-"2.2/y*z*2.2/y/z-2.2*y+z+2.2*y-z"
-"2.2/y/z+2.2/y*z+2.2/y+z-2.2/y-z"
-"a^2.2^3.3-a^13.4894687605338489"
-"abs(sin(sqrt(a^2.1+b^2.1))*255)"
-"x*3.3*z-x*3.3/z*x-3.3/z*x-3.3/z"
-"x*3.3/z-x*3.3*z*x/3.3+z*x/3.3-z"
-"x*y*4.4-x*y/4.4*x-y/4.4*x-y/4.4"
-"x*y*z+w-x/y*z+w*x*y/z+w*x/y/z+w"
-"x*y+z-w-x/y+z-w*x*y-z-w*x/y-z-w"
-"x*y-z+w*x/y-z+w-x*y+z+w+x/y+z+w"
-"x*y-z/w*x/y+z/w-x/y-z/w+x/y-z*w"
-"x*y/4.4-x*y*4.4*x/y+4.4*x/y-4.4"
-"x*y/z-w+x/y/z-w+x*y*z-w-x/y*z-w"
-"x+3.3/z+x+3.3*z+x+3.3-z-x+3.3+z"
-"x+y*z*w+x+y*z/w+x+y/z*w-x+y/z/w"
-"x+y*z/w*x+y*z*w-x+y/z+w+x+y/z/w"
-"x+y+z/w+x+y+z*w+x+y-z/w-x+y-z*w"
-"x+y-z*w+x+y-z/w+x+y+z*w-x+y+z/w"
-"x+y-z-w-x+y-z-w*x+y+z-w*x+y+z-w"
-"x+y/4.4+x+y*4.4+x+y-4.4-x+y+4.4"
-"x+y/z*w-x-y+z/w*x-y+z*w*x-y-z/w"
-"x-3.3*z+x+3.3*z+x+3.3/z-x+3.3+z"
-"x-3.3/z*x-3.3*z-x*3.3+z+x*3.3-z"
-"x-y*4.4+x+y*4.4+x+y/4.4-x+y+4.4"
-"x-y+z*w*x-y+z/w-x-y-z*w+x-y-z/w"
-"x-y-z*w+x-y*z/w+x-y*z*w-x-y/z/w"
-"x-y-z+w+x-y-z+w+x-y+z+w-x-y+z+w"
-"x-y/4.4*x-y*4.4-x*y+4.4+x*y-4.4"
-"x-y/z*w*x+y*z-w-x-y*z-w+x*y*z-w"
-"x-y/z*w*x-y/z/w-x-y*z*w+x-y*z/w"
-"x/3.3*z*x/3.3/z-x*3.3+z+x*3.3-z"
-"x/3.3/z+x/3.3*z+x/3.3+z-x/3.3-z"
-"x/y*4.4*x/y/4.4-x*y+4.4+x*y-4.4"
-"x/y*z-w-x+y/z-w*x-y/z-w*x*y/z-w"
-"x/y+z*w-x/y-z*w*x*y+z*w*x*y-z*w"
-"x/y/4.4+x/y*4.4+x/y+4.4-x/y-4.4"
-"x/y/z-w+x*y+z*w+x*y-z*w-x*y+z/w"
-"(((e*(((b+2.82)+b)*pi))+a)+2.25)"
-"((e/(a*(tan((3.59-2.74))-b)))+b)"
-"1.1*a^2.01+2.2*b^3.01+3.3*c^4.01"
-"cos((pi/((((pi+pi)*b)+a)*0.95)))"
-"sqrt(1-sin(2.2*a)+cos(pi/b)/3.3)"
-"(((cos(((pi+1.46)+b))/b)+2.91)+b)"
-"(b-((((a+((b+3.21)+a))*b)*pi)*a))"
-"(sin((((((e+a)/a)-a)+a)*b))+1.23)"
-"cos((((b-(a*((e*2.28)*a)))-a)*a))"
-"sin((((((2.35/b)*b)*3.80)/b)-pi))"
-"(((((((b+a)+a)-a)+pi)/pi)/0.06)*a)"
-"(((((b-((pi-3.59)-e))-pi)+e)+a)/b)"
-"(((0.30/((pi*tan(b))/3.04))*b)*pi)"
-"(((e*(((a/0.64)/b)+2.61))*2.89)+b)"
-"(((((((b-0.28)+e)+b)+b)*b)/1.12)*e)"
-"((((((3.80/b)-pi)*0.61)-3.21)*b)-b)"
-"((a/(((((b*a)/3.17)-pi)/pi)+pi))+b)"
-"((x*y*z+w+x+y/z/w+x+y/z+w*x*y+z*w))"
-"((x*y*z-w*x-y*z/w*x-y-z*w+x/y-z*w))"
-"((x*y*z-w/x+y+z*w/x+y-z/w-x*y+z-w))"
-"((x*y+z*w*x/y-z+w*x*y-z+w+x/y/z+w))"
-"((x*y+z*w-x+y-z-w-x-y-z/w/x+y/z*w))"
-"((x*y+z+w*x/y/z-w*x*y/z-w+x-y-z/w))"
-"((x*y+z-w+x/y*z-w+x*y*z-w*x-y*z/w))"
-"((x*y+z/w/x+y*z-w/x+y+z-w-x-y/z*w))"
-"((x*y-z*w*x+y+z-w*x+y-z-w+x+y/z/w))"
-"((x*y-z*w/x*y+z+w/x/y-z+w-x*y/z-w))"
-"((x*y-z+w+x/y/z+w+x*y/z+w*x-y+z/w))"
-"((x*y-z-w*x-y*z/w*x+y*z/w+x-y/z/w))"
-"((x*y-z/w+x+y/z-w+x+y*z-w*x-y/z/w))"
-"((x*y/z+w*x-y+z/w*x+y/z*w+x*y+z/w))"
-"((x*y/z-w+x-y-z/w+x-y+z*w*x/y+z/w))"
-"((x*y/z-w/x-y-z*w/x-y+z/w-x+y*z*w))"
-"((x+y*z*w+x-y/z*w+x+y/z*w*x+y*z-w))"
-"((x+y*z*w-x/y/z-w-x*y/z-w/x-y-z*w))"
-"((x+y*z-w*x-y/z/w*x-y/z*w+x+y-z*w))"
-"((x+y*z-w-x+y-z*w-x*y-z*w/x*y+z+w))"
-"((x+y*z/w+x*y/z-w+x-y/z-w*x-y+z/w))"
-"((x+y*z/w+x-y/z/w+x-y*z*w*x/y-z*w))"
-"((x+y*z/w-x+y+z/w-x-y/z*w/x-y*z-w))"
-"((x+y+z*w*x/y+z-w*x*y+z-w+x/y*z-w))"
-"((x+y+z*w-x/y*z-w-x*y*z-w/x+y+z*w))"
-"((x+y+z-w-x-y/z*w-x+y/z/w/x+y-z/w))"
-"((x+y+z/w+x*y*z-w+x-y*z-w*x+y-z/w))"
-"((x+y+z/w/x*y-z-w/x/y+z-w-x+y*z/w))"
-"((x+y-z*w+x/y+z+w+x*y+z+w*x/y/z-w))"
-"((x+y-z*w/x-y/z-w/x+y/z-w-x-y+z*w))"
-"((x+y-z-w+x+y/z/w+x+y/z*w*x+y+z*w))"
-"((x+y-z/w*x+y/z-w*x/y*z-w+x+y+z/w))"
-"((x+y-z/w-x*y+z-w-x/y+z+w/x*y*z-w))"
-"((x+y/z*w*x+y*z-w*x-y/z*w+x*y-z*w))"
-"((x+y/z*w*x+y+z*w*x+y+z/w+x*y*z-w))"
-"((x+y/z*w+x*y+z/w+x*y-z*w*x+y+z-w))"
-"((x+y/z+w*x*y+z*w*x/y/z-w+x-y-z/w))"
-"((x+y/z-w-x-y+z*w-x+y+z/w/x*y-z-w))"
-"((x+y/z-w/x-y*z*w/x-y/z/w-x+y*z/w))"
-"((x+y/z/w/x*y-z*w/x*y+z*w-x+y-z-w))"
-"((x+y/z/w/x+y-z/w/x+y+z*w-x/y*z-w))"
-"((x-y*z*w*x+y*z*w*x+y*z/w+x*y/z-w))"
-"((x-y*z*w*x/y-z*w*x/y+z*w+x-y/z+w))"
-"((x-y*z+w*x/y*z+w*x*y*z+w+x+y/z/w))"
-"((x-y*z-w*x+y-z/w*x+y-z*w+x/y+z+w))"
-"((x-y*z/w-x-y/z*w-x-y/z/w/x*y+z*w))"
-"((x-y*z/w-x/y+z*w-x/y-z*w/x-y*z+w))"
-"((x-y*z/w/x+y/z+w/x+y*z*w-x/y/z-w))"
-"((x-y+z*w*x/y+z/w*x*y-z/w+x+y/z-w))"
-"((x-y+z*w+x/y-z-w+x*y-z-w*x-y*z/w))"
-"((x-y+z+w-x*y*z+w-x-y*z/w/x+y/z+w))"
-"((x-y+z/w-x*y-z/w-x*y+z/w/x+y*z-w))"
-"((x-y+z/w-x+y*z*w-x/y-z-w/x+y/z*w))"
-"((x-y-z*w*x+y*z/w*x+y*z*w+x-y/z*w))"
-"((x-y-z*w+x/y-z*w+x/y-z/w*x-y+z+w))"
-"((x-y-z+w+x-y*z/w+x-y*z*w*x+y*z*w))"
-"((x-y-z/w/x+y/z*w/x+y*z/w-x+y+z/w))"
-"((x-y-z/w/x/y-z/w/x/y+z/w-x-y-z+w))"
-"((x-y/z*w+x*y-z*w+x*y+z*w*x/y-z+w))"
-"((x-y/z*w+x+y-z*w+x+y-z/w*x+y/z-w))"
-"((x-y/z*w/x-y*z-w/x+y*z-w-x+y-z*w))"
-"((x-y/z+w/x*y/z+w/x/y*z+w-x+y/z*w))"
-"((x-y/z-w*x-y+z/w*x-y+z*w+x/y-z-w))"
-"((x-y/z/w-x+y*z/w-x+y-z*w/x-y/z-w))"
-"((x-y/z/w/x*y+z*w/x/y-z*w-x*y-z+w))"
-"((x/y*z+w-x+y/z*w-x+y/z/w/x*y-z*w))"
-"((x/y*z-w+x+y+z/w+x+y+z*w*x/y+z-w))"
-"((x/y*z-w/x-y*z*w/x-y*z/w-x/y+z*w))"
-"((x/y+z*w+x-y/z+w+x-y*z+w*x/y*z+w))"
-"((x/y+z+w/x*y*z-w/x/y/z-w-x-y-z*w))"
-"((x/y+z-w-x+y*z/w-x/y*z-w/x-y*z*w))"
-"((x/y+z/w-x-y-z+w-x+y/z-w/x-y*z*w))"
-"((x/y-z*w-x*y-z+w-x-y/z+w/x*y/z+w))"
-"((x/y-z*w/x-y*z+w/x-y+z+w-x*y*z+w))"
-"((x/y-z+w-x*y/z-w-x/y/z+w/x-y+z*w))"
-"((x/y-z-w/x+y/z*w/x-y*z/w-x-y/z*w))"
-"((x/y-z/w*x-y+z+w*x-y-z+w+x-y*z/w))"
-"((x/y/z+w/x-y+z*w/x-y+z/w-x*y-z/w))"
-"((x/y/z-w+x-y-z/w+x-y-z*w*x+y*z/w))"
-"((x/y/z-w-x-y-z*w-x-y-z/w/x/y-z/w))"
-"(0.1*a+1)*a+1.1-sin(a)-log(a)/a*3/4"
-"(1-2)+(2-3)+(3-4)+(4-5)+(5-6)+(6-7)"
-"(a-((((((pi-(a*pi))*b)/a)*b)+b)/a))"
-"5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"cos(((tan(tan(((b*b)*b)))+b)-0.28))"
-"(((((b/(((a+e)*a)-b))/1.89)-a)-b)+e)"
-"((0.09*((sin((1.11*pi))+1.15)-a))+b)"
-"(sin(sin(sin((3.62+((pi*e)+a)))))+a)"
-"tan(sin(((pi*tan(((a+0.06)-b)))*a)))"
-"((((3.123*y)*z)-w)/((3.123+y)+(z*w)))"
-"((((3.123*y)/z)-w)/((3.123-y)-(z*w)))"
-"((((3.123+y)*z)-w)-((3.123+y)-(z*w)))"
-"((((3.123+y)/z)-w)-((3.123-y)+(z*w)))"
-"((((3.123-y)*z)-w)*((3.123+y)-(z/w)))"
-"((((3.123-y)/z)-w)*((3.123-y)+(z/w)))"
-"((((3.123/y)*z)-w)+((3.123+y)+(z/w)))"
-"((((3.123/y)/z)-w)+((3.123-y)-(z/w)))"
-"((((x*5.123)*z)-w)/((x+5.123)+(z*w)))"
-"((((x*5.123)/z)-w)/((x-5.123)-(z*w)))"
-"((((x*y)*7.123)-w)/((x+y)+(7.123*w)))"
-"((((x*y)*z)-9.123)/((x+y)+(z*9.123)))"
-"((((x*y)/7.123)-w)/((x-y)-(7.123*w)))"
-"((((x*y)/z)-9.123)/((x-y)-(z*9.123)))"
-"((((x+5.123)*z)-w)-((x+5.123)-(z*w)))"
-"((((x+5.123)/z)-w)-((x-5.123)+(z*w)))"
-"((((x+y)*7.123)-w)-((x+y)-(7.123*w)))"
-"((((x+y)*z)-9.123)-((x+y)-(z*9.123)))"
-"((((x+y)/7.123)-w)-((x-y)+(7.123*w)))"
-"((((x+y)/z)-9.123)-((x-y)+(z*9.123)))"
-"((((x-5.123)*z)-w)*((x+5.123)-(z/w)))"
-"((((x-5.123)/z)-w)*((x-5.123)+(z/w)))"
-"((((x-y)*7.123)-w)*((x+y)-(7.123/w)))"
-"((((x-y)*z)-9.123)*((x+y)-(z/9.123)))"
-"((((x-y)/7.123)-w)*((x-y)+(7.123/w)))"
-"((((x-y)/z)-9.123)*((x-y)+(z/9.123)))"
-"((((x/5.123)*z)-w)+((x+5.123)+(z/w)))"
-"((((x/5.123)/z)-w)+((x-5.123)-(z/w)))"
-"((((x/y)*7.123)-w)+((x+y)+(7.123/w)))"
-"((((x/y)*z)-9.123)+((x+y)+(z/9.123)))"
-"((((x/y)/7.123)-w)+((x-y)-(7.123/w)))"
-"((((x/y)/z)-9.123)+((x-y)-(z/9.123)))"
-"(((3.123*y)*(z+w))+(3.123+((y/z)/w)))"
-"(((3.123*y)*(z-w))*(3.123-((y*z)/w)))"
-"(((3.123*y)+(z*w))-((3.123+y)-(z-w)))"
-"(((3.123*y)+(z+w))*((3.123/y)/(z-w)))"
-"(((3.123*y)+(z-w))+((3.123/y)*(z-w)))"
-"(((3.123*y)+(z/w))/((3.123+y)*(z-w)))"
-"(((3.123*y)-(z*w))*((3.123+y)+(z-w)))"
-"(((3.123*y)-(z+w))+((3.123/y)/(z+w)))"
-"(((3.123*y)-(z-w))*(3.123-(y*(z/w))))"
-"(((3.123*y)-(z/w))+((3.123+y)/(z-w)))"
-"(((3.123*y)/(z+w))*(3.123-((y+z)/w)))"
-"(((3.123*y)/(z-w))+(3.123-((y-z)/w)))"
-"(((3.123+y)*(z*w))+(3.123-(y/(z*w))))"
-"(((3.123+y)*(z-w))*((3.123-y)/(z/w)))"
-"(((3.123+y)*(z/w))-(3.123+((y+z)/w)))"
-"(((3.123+y)+(z*w))*((3.123/y)+(z-w)))"
-"(((3.123+y)+(z-w))-((3.123-y)/(z*w)))"
-"(((3.123+y)+(z/w))/((3.123*y)-(z-w)))"
-"(((3.123+y)-(z*w))+((3.123/y)+(z+w)))"
-"(((3.123+y)-(z-w))+((3.123+y)/(z/w)))"
-"(((3.123+y)-(z/w))-((3.123*y)+(z-w)))"
-"(((3.123+y)/(z*w))*(3.123+((y+z)*w)))"
-"(((3.123+y)/(z-w))/((3.123-y)*(z*w)))"
-"(((3.123+y)/(z/w))/(3.123+((y-z)/w)))"
-"(((3.123-y)*(z*w))*(3.123+((y*z)*w)))"
-"(((3.123-y)*(z+w))*((3.123/y)*(z+w)))"
-"(((3.123-y)*(z/w))/(3.123+((y/z)+w)))"
-"(((3.123-y)+(z*w))+((3.123/y)-(z-w)))"
-"(((3.123-y)+(z+w))-((3.123*y)*(z+w)))"
-"(((3.123-y)+(z/w))-((3.123+y)*(z*w)))"
-"(((3.123-y)-(z*w))*((3.123+y)*(z/w)))"
-"(((3.123-y)-(z+w))+((3.123-y)*(z/w)))"
-"(((3.123-y)-(z/w))/((3.123+y)/(z*w)))"
-"(((3.123-y)/(z*w))+(3.123+((y-z)*w)))"
-"(((3.123-y)/(z+w))/((3.123*y)/(z+w)))"
-"(((3.123-y)/(z/w))-(3.123+((y*z)/w)))"
-"(((3.123/y)*(z+w))-(3.123+((y/z)*w)))"
-"(((3.123/y)*(z-w))/(3.123-((y*z)*w)))"
-"(((3.123/y)+(z+w))/((3.123*y)*(z-w)))"
-"(((3.123/y)+(z-w))-(3.123+(y*(z/w))))"
-"(((3.123/y)+(z/w))-((3.123-y)-(z+w)))"
-"(((3.123/y)-(z*w))/((3.123-y)*(z+w)))"
-"(((3.123/y)-(z+w))-((3.123*y)/(z-w)))"
-"(((3.123/y)-(z-w))/(3.123+(y/(z*w))))"
-"(((3.123/y)-(z/w))*((3.123-y)+(z+w)))"
-"(((3.123/y)/(z+w))/(3.123-((y+z)*w)))"
-"(((3.123/y)/(z-w))-(3.123-((y-z)*w)))"
-"(((pi/(b+(((b*0.10)/pi)*b)))*e)+1.97)"
-"(((x*5.123)*(z+w))+(x+((5.123/z)/w)))"
-"(((x*5.123)*(z-w))*(x-((5.123*z)/w)))"
-"(((x*5.123)+(z*w))-((x+5.123)-(z-w)))"
-"(((x*5.123)+(z+w))*((x/5.123)/(z-w)))"
-"(((x*5.123)+(z-w))+((x/5.123)*(z-w)))"
-"(((x*5.123)+(z/w))/((x+5.123)*(z-w)))"
-"(((x*5.123)-(z*w))*((x+5.123)+(z-w)))"
-"(((x*5.123)-(z+w))+((x/5.123)/(z+w)))"
-"(((x*5.123)-(z-w))*(x-(5.123*(z/w))))"
-"(((x*5.123)-(z/w))+((x+5.123)/(z-w)))"
-"(((x*5.123)/(z+w))*(x-((5.123+z)/w)))"
-"(((x*5.123)/(z-w))+(x-((5.123-z)/w)))"
-"(((x*y)*(7.123+w))+(x+((y/7.123)/w)))"
-"(((x*y)*(7.123-w))*(x-((y*7.123)/w)))"
-"(((x*y)*(z+9.123))+(x+((y/z)/9.123)))"
-"(((x*y)*(z-9.123))*(x-((y*z)/9.123)))"
-"(((x*y)+(7.123*w))-((x+y)-(7.123-w)))"
-"(((x*y)+(7.123+w))*((x/y)/(7.123-w)))"
-"(((x*y)+(7.123-w))+((x/y)*(7.123-w)))"
-"(((x*y)+(7.123/w))/((x+y)*(7.123-w)))"
-"(((x*y)+(z*9.123))-((x+y)-(z-9.123)))"
-"(((x*y)+(z+9.123))*((x/y)/(z-9.123)))"
-"(((x*y)+(z-9.123))+((x/y)*(z-9.123)))"
-"(((x*y)+(z/9.123))/((x+y)*(z-9.123)))"
-"(((x*y)-(7.123*w))*((x+y)+(7.123-w)))"
-"(((x*y)-(7.123+w))+((x/y)/(7.123+w)))"
-"(((x*y)-(7.123-w))*(x-(y*(7.123/w))))"
-"(((x*y)-(7.123/w))+((x+y)/(7.123-w)))"
-"(((x*y)-(z*9.123))*((x+y)+(z-9.123)))"
-"(((x*y)-(z+9.123))+((x/y)/(z+9.123)))"
-"(((x*y)-(z-9.123))*(x-(y*(z/9.123))))"
-"(((x*y)-(z/9.123))+((x+y)/(z-9.123)))"
-"(((x*y)/(7.123+w))*(x-((y+7.123)/w)))"
-"(((x*y)/(7.123-w))+(x-((y-7.123)/w)))"
-"(((x*y)/(z+9.123))*(x-((y+z)/9.123)))"
-"(((x*y)/(z-9.123))+(x-((y-z)/9.123)))"
-"(((x+5.123)*(z*w))+(x-(5.123/(z*w))))"
-"(((x+5.123)*(z-w))*((x-5.123)/(z/w)))"
-"(((x+5.123)*(z/w))-(x+((5.123+z)/w)))"
-"(((x+5.123)+(z*w))*((x/5.123)+(z-w)))"
-"(((x+5.123)+(z-w))-((x-5.123)/(z*w)))"
-"(((x+5.123)+(z/w))/((x*5.123)-(z-w)))"
-"(((x+5.123)-(z*w))+((x/5.123)+(z+w)))"
-"(((x+5.123)-(z-w))+((x+5.123)/(z/w)))"
-"(((x+5.123)-(z/w))-((x*5.123)+(z-w)))"
-"(((x+5.123)/(z*w))*(x+((5.123+z)*w)))"
-"(((x+5.123)/(z-w))/((x-5.123)*(z*w)))"
-"(((x+5.123)/(z/w))/(x+((5.123-z)/w)))"
-"(((x+y)*(7.123*w))+(x-(y/(7.123*w))))"
-"(((x+y)*(7.123-w))*((x-y)/(7.123/w)))"
-"(((x+y)*(7.123/w))-(x+((y+7.123)/w)))"
-"(((x+y)*(z*9.123))+(x-(y/(z*9.123))))"
-"(((x+y)*(z-9.123))*((x-y)/(z/9.123)))"
-"(((x+y)*(z/9.123))-(x+((y+z)/9.123)))"
-"(((x+y)+(7.123*w))*((x/y)+(7.123-w)))"
-"(((x+y)+(7.123-w))-((x-y)/(7.123*w)))"
-"(((x+y)+(7.123/w))/((x*y)-(7.123-w)))"
-"(((x+y)+(z*9.123))*((x/y)+(z-9.123)))"
-"(((x+y)+(z-9.123))-((x-y)/(z*9.123)))"
-"(((x+y)+(z/9.123))/((x*y)-(z-9.123)))"
-"(((x+y)-(7.123*w))+((x/y)+(7.123+w)))"
-"(((x+y)-(7.123-w))+((x+y)/(7.123/w)))"
-"(((x+y)-(7.123/w))-((x*y)+(7.123-w)))"
-"(((x+y)-(z*9.123))+((x/y)+(z+9.123)))"
-"(((x+y)-(z-9.123))+((x+y)/(z/9.123)))"
-"(((x+y)-(z/9.123))-((x*y)+(z-9.123)))"
-"(((x+y)/(7.123*w))*(x+((y+7.123)*w)))"
-"(((x+y)/(7.123-w))/((x-y)*(7.123*w)))"
-"(((x+y)/(7.123/w))/(x+((y-7.123)/w)))"
-"(((x+y)/(z*9.123))*(x+((y+z)*9.123)))"
-"(((x+y)/(z-9.123))/((x-y)*(z*9.123)))"
-"(((x+y)/(z/9.123))/(x+((y-z)/9.123)))"
-"(((x-5.123)*(z*w))*(x+((5.123*z)*w)))"
-"(((x-5.123)*(z+w))*((x/5.123)*(z+w)))"
-"(((x-5.123)*(z/w))/(x+((5.123/z)+w)))"
-"(((x-5.123)+(z*w))+((x/5.123)-(z-w)))"
-"(((x-5.123)+(z+w))-((x*5.123)*(z+w)))"
-"(((x-5.123)+(z/w))-((x+5.123)*(z*w)))"
-"(((x-5.123)-(z*w))*((x+5.123)*(z/w)))"
-"(((x-5.123)-(z+w))+((x-5.123)*(z/w)))"
-"(((x-5.123)-(z/w))/((x+5.123)/(z*w)))"
-"(((x-5.123)/(z*w))+(x+((5.123-z)*w)))"
-"(((x-5.123)/(z+w))/((x*5.123)/(z+w)))"
-"(((x-5.123)/(z/w))-(x+((5.123*z)/w)))"
-"(((x-y)*(7.123*w))*(x+((y*7.123)*w)))"
-"(((x-y)*(7.123+w))*((x/y)*(7.123+w)))"
-"(((x-y)*(7.123/w))/(x+((y/7.123)+w)))"
-"(((x-y)*(z*9.123))*(x+((y*z)*9.123)))"
-"(((x-y)*(z+9.123))*((x/y)*(z+9.123)))"
-"(((x-y)*(z/9.123))/(x+((y/z)+9.123)))"
-"(((x-y)+(7.123*w))+((x/y)-(7.123-w)))"
-"(((x-y)+(7.123+w))-((x*y)*(7.123+w)))"
-"(((x-y)+(7.123/w))-((x+y)*(7.123*w)))"
-"(((x-y)+(z*9.123))+((x/y)-(z-9.123)))"
-"(((x-y)+(z+9.123))-((x*y)*(z+9.123)))"
-"(((x-y)+(z/9.123))-((x+y)*(z*9.123)))"
-"(((x-y)-(7.123*w))*((x+y)*(7.123/w)))"
-"(((x-y)-(7.123+w))+((x-y)*(7.123/w)))"
-"(((x-y)-(7.123/w))/((x+y)/(7.123*w)))"
-"(((x-y)-(z*9.123))*((x+y)*(z/9.123)))"
-"(((x-y)-(z+9.123))+((x-y)*(z/9.123)))"
-"(((x-y)-(z/9.123))/((x+y)/(z*9.123)))"
-"(((x-y)/(7.123*w))+(x+((y-7.123)*w)))"
-"(((x-y)/(7.123+w))/((x*y)/(7.123+w)))"
-"(((x-y)/(7.123/w))-(x+((y*7.123)/w)))"
-"(((x-y)/(z*9.123))+(x+((y-z)*9.123)))"
-"(((x-y)/(z+9.123))/((x*y)/(z+9.123)))"
-"(((x-y)/(z/9.123))-(x+((y*z)/9.123)))"
-"(((x/5.123)*(z+w))-(x+((5.123/z)*w)))"
-"(((x/5.123)*(z-w))/(x-((5.123*z)*w)))"
-"(((x/5.123)+(z+w))/((x*5.123)*(z-w)))"
-"(((x/5.123)+(z-w))-(x+(5.123*(z/w))))"
-"(((x/5.123)+(z/w))-((x-5.123)-(z+w)))"
-"(((x/5.123)-(z*w))/((x-5.123)*(z+w)))"
-"(((x/5.123)-(z+w))-((x*5.123)/(z-w)))"
-"(((x/5.123)-(z-w))/(x+(5.123/(z*w))))"
-"(((x/5.123)-(z/w))*((x-5.123)+(z+w)))"
-"(((x/5.123)/(z+w))/(x-((5.123+z)*w)))"
-"(((x/5.123)/(z-w))-(x-((5.123-z)*w)))"
-"(((x/y)*(7.123+w))-(x+((y/7.123)*w)))"
-"(((x/y)*(7.123-w))/(x-((y*7.123)*w)))"
-"(((x/y)*(z+9.123))-(x+((y/z)*9.123)))"
-"(((x/y)*(z-9.123))/(x-((y*z)*9.123)))"
-"(((x/y)+(7.123+w))/((x*y)*(7.123-w)))"
-"(((x/y)+(7.123-w))-(x+(y*(7.123/w))))"
-"(((x/y)+(7.123/w))-((x-y)-(7.123+w)))"
-"(((x/y)+(z+9.123))/((x*y)*(z-9.123)))"
-"(((x/y)+(z-9.123))-(x+(y*(z/9.123))))"
-"(((x/y)+(z/9.123))-((x-y)-(z+9.123)))"
-"(((x/y)-(7.123*w))/((x-y)*(7.123+w)))"
-"(((x/y)-(7.123+w))-((x*y)/(7.123-w)))"
-"(((x/y)-(7.123-w))/(x+(y/(7.123*w))))"
-"(((x/y)-(7.123/w))*((x-y)+(7.123+w)))"
-"(((x/y)-(z*9.123))/((x-y)*(z+9.123)))"
-"(((x/y)-(z+9.123))-((x*y)/(z-9.123)))"
-"(((x/y)-(z-9.123))/(x+(y/(z*9.123))))"
-"(((x/y)-(z/9.123))*((x-y)+(z+9.123)))"
-"(((x/y)/(7.123+w))/(x-((y+7.123)*w)))"
-"(((x/y)/(7.123-w))-(x-((y-7.123)*w)))"
-"(((x/y)/(z+9.123))/(x-((y+z)*9.123)))"
-"(((x/y)/(z-9.123))-(x-((y-z)*9.123)))"
-"((3.123*(y+(z*w)))*((3.123/y)-(z+w)))"
-"((3.123*(y-(z*w)))/((3.123*y)+(z+w)))"
-"((3.123+((y*z)*w))-(((3.123/y)/z)-w))"
-"((3.123+((y*z)/w))+(((3.123*y)/z)-w))"
-"((3.123+((y+z)*w))-(((3.123/y)*z)-w))"
-"((3.123+((y+z)/w))+(((3.123*y)*z)-w))"
-"((3.123+((y-z)*w))/(((3.123-y)/z)-w))"
-"((3.123+((y-z)/w))*(((3.123+y)/z)-w))"
-"((3.123+((y/z)*w))+((3.123*y)+(z/w)))"
-"((3.123+((y/z)+w))*((3.123*y)+(z*w)))"
-"((3.123+((y/z)/w))/((3.123*y)-(z*w)))"
-"((3.123+(y*(z/w)))+(3.123-((y/z)/w)))"
-"((3.123+(y/(z*w)))*(((3.123+y)*z)-w))"
-"((3.123-((y*z)*w))*(3.123/(y-(z*w))))"
-"((3.123-((y*z)/w))-(3.123/(y+(z*w))))"
-"((3.123-((y+z)*w))*((3.123/y)+(z/w)))"
-"((3.123-((y+z)/w))-((3.123*y)-(z/w)))"
-"((3.123-((y-z)*w))+((3.123/y)-(z*w)))"
-"((3.123-((y-z)/w))/((3.123/y)-(z/w)))"
-"((3.123-((y/z)*w))+(3.123*(y-(z*w))))"
-"((3.123-((y/z)/w))/(3.123*(y+(z*w))))"
-"((3.123-(y*(z/w)))-(3.123-((y/z)*w)))"
-"((3.123-(y/(z*w)))/(((3.123-y)*z)-w))"
-"((3.123/(y+(z*w)))+((3.123-y)/(z+w)))"
-"((3.123/(y-(z*w)))-((3.123*y)-(z+w)))"
-"((tan((tan(((0.69-b)/a))*b))+e)*3.51)"
-"((x*(5.123+(z*w)))*((x/5.123)-(z+w)))"
-"((x*(5.123-(z*w)))/((x*5.123)+(z+w)))"
-"((x*(y+(7.123*w)))*((x/y)-(7.123+w)))"
-"((x*(y+(z*9.123)))*((x/y)-(z+9.123)))"
-"((x*(y-(7.123*w)))/((x*y)+(7.123+w)))"
-"((x*(y-(z*9.123)))/((x*y)+(z+9.123)))"
-"((x+((5.123*z)*w))-(((x/5.123)/z)-w))"
-"((x+((5.123*z)/w))+(((x*5.123)/z)-w))"
-"((x+((5.123+z)*w))-(((x/5.123)*z)-w))"
-"((x+((5.123+z)/w))+(((x*5.123)*z)-w))"
-"((x+((5.123-z)*w))/(((x-5.123)/z)-w))"
-"((x+((5.123-z)/w))*(((x+5.123)/z)-w))"
-"((x+((5.123/z)*w))+((x*5.123)+(z/w)))"
-"((x+((5.123/z)+w))*((x*5.123)+(z*w)))"
-"((x+((5.123/z)/w))/((x*5.123)-(z*w)))"
-"((x+((y*7.123)*w))-(((x/y)/7.123)-w))"
-"((x+((y*7.123)/w))+(((x*y)/7.123)-w))"
-"((x+((y*z)*9.123))-(((x/y)/z)-9.123))"
-"((x+((y*z)/9.123))+(((x*y)/z)-9.123))"
-"((x+((y+7.123)*w))-(((x/y)*7.123)-w))"
-"((x+((y+7.123)/w))+(((x*y)*7.123)-w))"
-"((x+((y+z)*9.123))-(((x/y)*z)-9.123))"
-"((x+((y+z)/9.123))+(((x*y)*z)-9.123))"
-"((x+((y-7.123)*w))/(((x-y)/7.123)-w))"
-"((x+((y-7.123)/w))*(((x+y)/7.123)-w))"
-"((x+((y-z)*9.123))/(((x-y)/z)-9.123))"
-"((x+((y-z)/9.123))*(((x+y)/z)-9.123))"
-"((x+((y/7.123)*w))+((x*y)+(7.123/w)))"
-"((x+((y/7.123)+w))*((x*y)+(7.123*w)))"
-"((x+((y/7.123)/w))/((x*y)-(7.123*w)))"
-"((x+((y/z)*9.123))+((x*y)+(z/9.123)))"
-"((x+((y/z)+9.123))*((x*y)+(z*9.123)))"
-"((x+((y/z)/9.123))/((x*y)-(z*9.123)))"
-"((x+(5.123*(z/w)))+(x-((5.123/z)/w)))"
-"((x+(5.123/(z*w)))*(((x+5.123)*z)-w))"
-"((x+(y*(7.123/w)))+(x-((y/7.123)/w)))"
-"((x+(y*(z/9.123)))+(x-((y/z)/9.123)))"
-"((x+(y/(7.123*w)))*(((x+y)*7.123)-w))"
-"((x+(y/(z*9.123)))*(((x+y)*z)-9.123))"
-"((x-((5.123*z)*w))*(x/(5.123-(z*w))))"
-"((x-((5.123*z)/w))-(x/(5.123+(z*w))))"
-"((x-((5.123+z)*w))*((x/5.123)+(z/w)))"
-"((x-((5.123+z)/w))-((x*5.123)-(z/w)))"
-"((x-((5.123-z)*w))+((x/5.123)-(z*w)))"
-"((x-((5.123-z)/w))/((x/5.123)-(z/w)))"
-"((x-((5.123/z)*w))+(x*(5.123-(z*w))))"
-"((x-((5.123/z)/w))/(x*(5.123+(z*w))))"
-"((x-((y*7.123)*w))*(x/(y-(7.123*w))))"
-"((x-((y*7.123)/w))-(x/(y+(7.123*w))))"
-"((x-((y*z)*9.123))*(x/(y-(z*9.123))))"
-"((x-((y*z)/9.123))-(x/(y+(z*9.123))))"
-"((x-((y+7.123)*w))*((x/y)+(7.123/w)))"
-"((x-((y+7.123)/w))-((x*y)-(7.123/w)))"
-"((x-((y+z)*9.123))*((x/y)+(z/9.123)))"
-"((x-((y+z)/9.123))-((x*y)-(z/9.123)))"
-"((x-((y-7.123)*w))+((x/y)-(7.123*w)))"
-"((x-((y-7.123)/w))/((x/y)-(7.123/w)))"
-"((x-((y-z)*9.123))+((x/y)-(z*9.123)))"
-"((x-((y-z)/9.123))/((x/y)-(z/9.123)))"
-"((x-((y/7.123)*w))+(x*(y-(7.123*w))))"
-"((x-((y/7.123)/w))/(x*(y+(7.123*w))))"
-"((x-((y/z)*9.123))+(x*(y-(z*9.123))))"
-"((x-((y/z)/9.123))/(x*(y+(z*9.123))))"
-"((x-(5.123*(z/w)))-(x-((5.123/z)*w)))"
-"((x-(5.123/(z*w)))/(((x-5.123)*z)-w))"
-"((x-(y*(7.123/w)))-(x-((y/7.123)*w)))"
-"((x-(y*(z/9.123)))-(x-((y/z)*9.123)))"
-"((x-(y/(7.123*w)))/(((x-y)*7.123)-w))"
-"((x-(y/(z*9.123)))/(((x-y)*z)-9.123))"
-"((x/(5.123+(z*w)))+((x-5.123)/(z+w)))"
-"((x/(5.123-(z*w)))-((x*5.123)-(z+w)))"
-"((x/(y+(7.123*w)))+((x-y)/(7.123+w)))"
-"((x/(y+(z*9.123)))+((x-y)/(z+9.123)))"
-"((x/(y-(7.123*w)))-((x*y)-(7.123+w)))"
-"((x/(y-(z*9.123)))-((x*y)-(z+9.123)))"
-"(5.5+a)+(2*b-2/3*a)*(b/3+a/4)+(b+7.7)"
-"(a+(a+((tan((b+(b+(b*1.85))))/a)+b)))"
-"1/(a*sqrt(2*pi))*e^(-0.5*((b-a)/a)^2)"
-"(((a*((cos(cos(pi))/a)+2.48))+3.59)/b)"
-"((e-(((((1.59+a)-e)/b)*3.20)+1.99))+a)"
-"(pi/((((((((b-b)+b)-a)+b)-a)*e)/e)+e))"
-"(((((((0.93+b)+e)*0.61)+b)+e)+pi)-0.38)"
-"((7-2)+(2-3)*(3-4))/((4-5)*(5-6)+(6-9))"
-"((b*((((cos(sin(pi))/e)/b)+3.49)+b))*a)"
-"2.2*y*z+w-2.2/y*z+w*2.2*y/z+w*2.2/y/z+w"
-"2.2*y+z-w-2.2/y+z-w*2.2*y-z-w*2.2/y-z-w"
-"2.2*y-z+w*2.2/y-z+w-2.2*y+z+w+2.2/y+z+w"
-"2.2*y-z/w*2.2/y+z/w-2.2/y-z/w+2.2/y-z*w"
-"2.2*y/z-w+2.2/y/z-w+2.2*y*z-w-2.2/y*z-w"
-"2.2+y*z*w+2.2+y*z/w+2.2+y/z*w-2.2+y/z/w"
-"2.2+y*z/w*2.2+y*z*w-2.2+y/z+w+2.2+y/z/w"
-"2.2+y+z/w+2.2+y+z*w+2.2+y-z/w-2.2+y-z*w"
-"2.2+y-z*w+2.2+y-z/w+2.2+y+z*w-2.2+y+z/w"
-"2.2+y-z-w-2.2+y-z-w*2.2+y+z-w*2.2+y+z-w"
-"2.2+y/z*w-2.2-y+z/w*2.2-y+z*w*2.2-y-z/w"
-"2.2-y+z*w*2.2-y+z/w-2.2-y-z*w+2.2-y-z/w"
-"2.2-y-z*w+2.2-y*z/w+2.2-y*z*w-2.2-y/z/w"
-"2.2-y-z+w+2.2-y-z+w+2.2-y+z+w-2.2-y+z+w"
-"2.2-y/z*w*2.2+y*z-w-2.2-y*z-w+2.2*y*z-w"
-"2.2-y/z*w*2.2-y/z/w-2.2-y*z*w+2.2-y*z/w"
-"2.2/y*z-w-2.2+y/z-w*2.2-y/z-w*2.2*y/z-w"
-"2.2/y+z*w-2.2/y-z*w*2.2*y+z*w*2.2*y-z*w"
-"2.2/y/z-w+2.2*y+z*w+2.2*y-z*w-2.2*y+z/w"
-"x*3.3*z+w-x/3.3*z+w*x*3.3/z+w*x/3.3/z+w"
-"x*3.3+z-w-x/3.3+z-w*x*3.3-z-w*x/3.3-z-w"
-"x*3.3-z+w*x/3.3-z+w-x*3.3+z+w+x/3.3+z+w"
-"x*3.3-z/w*x/3.3+z/w-x/3.3-z/w+x/3.3-z*w"
-"x*3.3/z-w+x/3.3/z-w+x*3.3*z-w-x/3.3*z-w"
-"x*y*4.4+w-x/y*4.4+w*x*y/4.4+w*x/y/4.4+w"
-"x*y*z+5.5-x/y*z+5.5*x*y/z+5.5*x/y/z+5.5"
-"x*y+4.4-w-x/y+4.4-w*x*y-4.4-w*x/y-4.4-w"
-"x*y+z-5.5-x/y+z-5.5*x*y-z-5.5*x/y-z-5.5"
-"x*y-4.4+w*x/y-4.4+w-x*y+4.4+w+x/y+4.4+w"
-"x*y-4.4/w*x/y+4.4/w-x/y-4.4/w+x/y-4.4*w"
-"x*y-z+5.5*x/y-z+5.5-x*y+z+5.5+x/y+z+5.5"
-"x*y-z/5.5*x/y+z/5.5-x/y-z/5.5+x/y-z*5.5"
-"x*y/4.4-w+x/y/4.4-w+x*y*4.4-w-x/y*4.4-w"
-"x*y/z-5.5+x/y/z-5.5+x*y*z-5.5-x/y*z-5.5"
-"x+3.3*z*w+x+3.3*z/w+x+3.3/z*w-x+3.3/z/w"
-"x+3.3*z/w*x+3.3*z*w-x+3.3/z+w+x+3.3/z/w"
-"x+3.3+z/w+x+3.3+z*w+x+3.3-z/w-x+3.3-z*w"
-"x+3.3-z*w+x+3.3-z/w+x+3.3+z*w-x+3.3+z/w"
-"x+3.3-z-w-x+3.3-z-w*x+3.3+z-w*x+3.3+z-w"
-"x+3.3/z*w-x-3.3+z/w*x-3.3+z*w*x-3.3-z/w"
-"x+y*4.4*w+x+y*4.4/w+x+y/4.4*w-x+y/4.4/w"
-"x+y*4.4/w*x+y*4.4*w-x+y/4.4+w+x+y/4.4/w"
-"x+y*z*5.5+x+y*z/5.5+x+y/z*5.5-x+y/z/5.5"
-"x+y*z/5.5*x+y*z*5.5-x+y/z+5.5+x+y/z/5.5"
-"x+y+4.4/w+x+y+4.4*w+x+y-4.4/w-x+y-4.4*w"
-"x+y+z/5.5+x+y+z*5.5+x+y-z/5.5-x+y-z*5.5"
-"x+y-4.4*w+x+y-4.4/w+x+y+4.4*w-x+y+4.4/w"
-"x+y-4.4-w-x+y-4.4-w*x+y+4.4-w*x+y+4.4-w"
-"x+y-z*5.5+x+y-z/5.5+x+y+z*5.5-x+y+z/5.5"
-"x+y-z-5.5-x+y-z-5.5*x+y+z-5.5*x+y+z-5.5"
-"x+y/4.4*w-x-y+4.4/w*x-y+4.4*w*x-y-4.4/w"
-"x+y/z*5.5-x-y+z/5.5*x-y+z*5.5*x-y-z/5.5"
-"x-3.3+z*w*x-3.3+z/w-x-3.3-z*w+x-3.3-z/w"
-"x-3.3-z*w+x-3.3*z/w+x-3.3*z*w-x-3.3/z/w"
-"x-3.3-z+w+x-3.3-z+w+x-3.3+z+w-x-3.3+z+w"
-"x-3.3/z*w*x+3.3*z-w-x-3.3*z-w+x*3.3*z-w"
-"x-3.3/z*w*x-3.3/z/w-x-3.3*z*w+x-3.3*z/w"
-"x-y+4.4*w*x-y+4.4/w-x-y-4.4*w+x-y-4.4/w"
-"x-y+z*5.5*x-y+z/5.5-x-y-z*5.5+x-y-z/5.5"
-"x-y-4.4*w+x-y*4.4/w+x-y*4.4*w-x-y/4.4/w"
-"x-y-4.4+w+x-y-4.4+w+x-y+4.4+w-x-y+4.4+w"
-"x-y-z*5.5+x-y*z/5.5+x-y*z*5.5-x-y/z/5.5"
-"x-y-z+5.5+x-y-z+5.5+x-y+z+5.5-x-y+z+5.5"
-"x-y/4.4*w*x+y*4.4-w-x-y*4.4-w+x*y*4.4-w"
-"x-y/4.4*w*x-y/4.4/w-x-y*4.4*w+x-y*4.4/w"
-"x-y/z*5.5*x+y*z-5.5-x-y*z-5.5+x*y*z-5.5"
-"x-y/z*5.5*x-y/z/5.5-x-y*z*5.5+x-y*z/5.5"
-"x/3.3*z-w-x+3.3/z-w*x-3.3/z-w*x*3.3/z-w"
-"x/3.3+z*w-x/3.3-z*w*x*3.3+z*w*x*3.3-z*w"
-"x/3.3/z-w+x*3.3+z*w+x*3.3-z*w-x*3.3+z/w"
-"x/y*4.4-w-x+y/4.4-w*x-y/4.4-w*x*y/4.4-w"
-"x/y*z-5.5-x+y/z-5.5*x-y/z-5.5*x*y/z-5.5"
-"x/y+4.4*w-x/y-4.4*w*x*y+4.4*w*x*y-4.4*w"
-"x/y+z*5.5-x/y-z*5.5*x*y+z*5.5*x*y-z*5.5"
-"x/y/4.4-w+x*y+4.4*w+x*y-4.4*w-x*y+4.4/w"
-"x/y/z-5.5+x*y+z*5.5+x*y-z*5.5-x*y+z/5.5"
-"((((((2.34+1.80)/pi)+pi)-0.54)*0.15)-pi)"
-"((((a*((((b-1.50)+1.82)-a)/pi))/a)*a)+e)"
-"(cos(cos((((cos((b+3.96))-b)+pi)/a)))/e)"
-"((((((cos(1.78)/pi)+pi)*a)-b)*2.50)-3.77)"
-"(((cos(sin((cos((b/tan(b)))+a)))+a)+a)*e)"
-"((b/sin(cos(sin(((cos(pi)+b)+a)))))+2.83)"
-"(e+(((((((b+2.05)+a)-2.99)-e)*b)/pi)/pi))"
-"((((((((e+pi)-2.53)+a)+pi)+b)*1.84)+pi)+a)"
-"(((((((b*(1.69-e))+b)-0.17)+a)-a)+0.20)+e)"
-"((((((b/((b*2.74)+e))*e)*b)*1.85)-1.71)/a)"
-"(((cos(((((0.78+b)+a)+a)+pi))+e)*3.73)+pi)"
-"sin((((tan(sin(((pi/e)+pi)))-2.94)+e)+pi))"
-"sin((1.1+2.2/2.2*3.3)*4.4^5.5)+cos(6.6*pi)"
-"(((((sin(((0.62*pi)-e))/pi)+3.34)+pi)*b)+e)"
-"((((a+((((b-0.68)-pi)/a)+b))+1.47)*e)*1.38)"
-"((3.123*y*z+3.123+y/z+3.123+y+z+3.123-y*z))"
-"((3.123*y*z-3.123/y*z-3.123/y/z-3.123-y/z))"
-"((3.123*y+z*3.123-y*z*3.123+y*z*3.123+y+z))"
-"((3.123*y+z*3.123/y*z*3.123/y+z*3.123*y/z))"
-"((3.123*y-z/3.123+y*z/3.123+y/z/3.123-y/z))"
-"((3.123*y-z/3.123/y+z/3.123/y-z/3.123-y+z))"
-"((3.123*y/z+3.123/y-z+3.123/y*z+3.123-y-z))"
-"((3.123*y/z-3.123+y+z-3.123+y-z-3.123*y+z))"
-"((3.123+y*z*3.123+y+z*3.123-y/z+3.123/y-z))"
-"((3.123+y*z-3.123*y/z-3.123*y*z-3.123/y*z))"
-"((3.123+y+z+3.123-y*z+3.123*y+z*3.123/y*z))"
-"((3.123+y+z/3.123/y+z/3.123/y-z/3.123*y+z))"
-"((3.123+y-z*3.123*y*z*3.123/y+z*3.123/y/z))"
-"((3.123+y-z-3.123*y+z-3.123*y-z/3.123/y+z))"
-"((3.123+y/z+3.123*y-z+3.123*y/z+3.123/y-z))"
-"((3.123+y/z/3.123-y/z/3.123-y*z-3.123/y/z))"
-"((3.123-y*z-3.123+y-z-3.123+y+z/3.123/y+z))"
-"((3.123-y*z-3.123/y/z-3.123/y*z-3.123*y*z))"
-"((3.123-y+z*3.123+y-z*3.123+y/z+3.123*y-z))"
-"((3.123-y-z/3.123+y/z/3.123+y*z-3.123*y/z))"
-"((3.123-y/z+3.123+y*z+3.123+y-z*3.123*y*z))"
-"((3.123-y/z+3.123/y-z+3.123/y/z+3.123*y-z))"
-"((3.123/y*z+3.123-y-z+3.123-y/z+3.123+y*z))"
-"((3.123/y*z-3.123*y*z-3.123*y/z-3.123+y+z))"
-"((3.123/y+z*3.123*y/z*3.123-y+z*3.123+y-z))"
-"((3.123/y+z*3.123/y/z*3.123*y+z*3.123-y*z))"
-"((3.123/y-z/3.123*y+z/3.123*y-z/3.123+y*z))"
-"((3.123/y-z/3.123-y+z/3.123-y-z/3.123+y/z))"
-"((3.123/y/z+3.123*y-z+3.123*y*z+3.123+y/z))"
-"((3.123/y/z-3.123-y/z-3.123-y*z-3.123+y-z))"
-"((b+(b+tan(((a+(tan((a/a))+b))+1.81))))+pi)"
-"((x*5.123*z+x+5.123/z+x+5.123+z+x-5.123*z))"
-"((x*5.123*z-x/5.123*z-x/5.123/z-x-5.123/z))"
-"((x*5.123+z*x-5.123*z*x+5.123*z*x+5.123+z))"
-"((x*5.123+z*x/5.123*z*x/5.123+z*x*5.123/z))"
-"((x*5.123-z/x+5.123*z/x+5.123/z/x-5.123/z))"
-"((x*5.123-z/x/5.123+z/x/5.123-z/x-5.123+z))"
-"((x*5.123/z+x/5.123-z+x/5.123*z+x-5.123-z))"
-"((x*5.123/z-x+5.123+z-x+5.123-z-x*5.123+z))"
-"((x*y*7.123+x+y/7.123+x+y+7.123+x-y*7.123))"
-"((x*y*7.123-x/y*7.123-x/y/7.123-x-y/7.123))"
-"((x*y+7.123*x-y*7.123*x+y*7.123*x+y+7.123))"
-"((x*y+7.123*x/y*7.123*x/y+7.123*x*y/7.123))"
-"((x*y-7.123/x+y*7.123/x+y/7.123/x-y/7.123))"
-"((x*y-7.123/x/y+7.123/x/y-7.123/x-y+7.123))"
-"((x*y/7.123+x/y-7.123+x/y*7.123+x-y-7.123))"
-"((x*y/7.123-x+y+7.123-x+y-7.123-x*y+7.123))"
-"((x+5.123*z*x+5.123+z*x-5.123/z+x/5.123-z))"
-"((x+5.123*z-x*5.123/z-x*5.123*z-x/5.123*z))"
-"((x+5.123+z+x-5.123*z+x*5.123+z*x/5.123*z))"
-"((x+5.123+z/x/5.123+z/x/5.123-z/x*5.123+z))"
-"((x+5.123-z*x*5.123*z*x/5.123+z*x/5.123/z))"
-"((x+5.123-z-x*5.123+z-x*5.123-z/x/5.123+z))"
-"((x+5.123/z+x*5.123-z+x*5.123/z+x/5.123-z))"
-"((x+5.123/z/x-5.123/z/x-5.123*z-x/5.123/z))"
-"((x+y*7.123*x+y+7.123*x-y/7.123+x/y-7.123))"
-"((x+y*7.123-x*y/7.123-x*y*7.123-x/y*7.123))"
-"((x+y+7.123+x-y*7.123+x*y+7.123*x/y*7.123))"
-"((x+y+7.123/x/y+7.123/x/y-7.123/x*y+7.123))"
-"((x+y-7.123*x*y*7.123*x/y+7.123*x/y/7.123))"
-"((x+y-7.123-x*y+7.123-x*y-7.123/x/y+7.123))"
-"((x+y/7.123+x*y-7.123+x*y/7.123+x/y-7.123))"
-"((x+y/7.123/x-y/7.123/x-y*7.123-x/y/7.123))"
-"((x-5.123*z-x+5.123-z-x+5.123+z/x/5.123+z))"
-"((x-5.123*z-x/5.123/z-x/5.123*z-x*5.123*z))"
-"((x-5.123+z*x+5.123-z*x+5.123/z+x*5.123-z))"
-"((x-5.123-z/x+5.123/z/x+5.123*z-x*5.123/z))"
-"((x-5.123/z+x+5.123*z+x+5.123-z*x*5.123*z))"
-"((x-5.123/z+x/5.123-z+x/5.123/z+x*5.123-z))"
-"((x-y*7.123-x+y-7.123-x+y+7.123/x/y+7.123))"
-"((x-y*7.123-x/y/7.123-x/y*7.123-x*y*7.123))"
-"((x-y+7.123*x+y-7.123*x+y/7.123+x*y-7.123))"
-"((x-y-7.123/x+y/7.123/x+y*7.123-x*y/7.123))"
-"((x-y/7.123+x+y*7.123+x+y-7.123*x*y*7.123))"
-"((x-y/7.123+x/y-7.123+x/y/7.123+x*y-7.123))"
-"((x/5.123*z+x-5.123-z+x-5.123/z+x+5.123*z))"
-"((x/5.123*z-x*5.123*z-x*5.123/z-x+5.123+z))"
-"((x/5.123+z*x*5.123/z*x-5.123+z*x+5.123-z))"
-"((x/5.123+z*x/5.123/z*x*5.123+z*x-5.123*z))"
-"((x/5.123-z/x*5.123+z/x*5.123-z/x+5.123*z))"
-"((x/5.123-z/x-5.123+z/x-5.123-z/x+5.123/z))"
-"((x/5.123/z+x*5.123-z+x*5.123*z+x+5.123/z))"
-"((x/5.123/z-x-5.123/z-x-5.123*z-x+5.123-z))"
-"((x/y*7.123+x-y-7.123+x-y/7.123+x+y*7.123))"
-"((x/y*7.123-x*y*7.123-x*y/7.123-x+y+7.123))"
-"((x/y+7.123*x*y/7.123*x-y+7.123*x+y-7.123))"
-"((x/y+7.123*x/y/7.123*x*y+7.123*x-y*7.123))"
-"((x/y-7.123/x*y+7.123/x*y-7.123/x+y*7.123))"
-"((x/y-7.123/x-y+7.123/x-y-7.123/x+y/7.123))"
-"((x/y/7.123+x*y-7.123+x*y*7.123+x+y/7.123))"
-"((x/y/7.123-x-y/7.123-x-y*7.123-x+y-7.123))"
-"1.1*a^2.01+2.2*b^3.01+3.3*c^4.01+4.4*a^5.01"
-"6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"a+(cos(b-sin(2/a*pi))-sin(a-cos(2*b/pi)))-b"
-"(((((((((pi*e)*a)-a)+b)*2.76)+a)+a)/0.96)+b)"
-"(((((((0.36/2.21)+pi)*pi)-pi)*3.05)*3.32)/b)"
-"1.1234567*a^17+2.1234567*b^28+2.1234567*c^38"
-"cos((cos(tan((sin((cos(a)/3.44))+1.08)))+b))"
-"(((((((((b-a)*e)+b)+pi)*b)+pi)+2.31)/a)-0.23)"
-"(((((((((e+1.35)+pi)/pi)-a)+b)-b)+a)/e)+0.81)"
-"(((((((7*a+6)*a+5)*a+4)*a+3)*a+2)*a+1)*a+0.1)"
-"((((x*y)*z)-(x/(y*z)))-((x/(y/z))-(x-(y/z))))"
-"((((x*y)+z)*((x/y)*z))*((x/(y+z))*(x*(y/z))))"
-"((((x*y)-z)/(x/(y+z)))/((x/(y-z))/(x-(y+z))))"
-"((((x*y)/z)+(x/(y-z)))+((x/(y*z))+(x-(y-z))))"
-"((((x+y)*z)-((x*y)/z))-(((x*y)*z)-(x/(y*z))))"
-"((((x+y)+z)/((x/y)+z))/(((x/y)-z)/(x*(y+z))))"
-"((((x+y)-z)*((x*y)*z))*(((x/y)+z)*(x/(y/z))))"
-"((((x+y)/z)+((x*y)-z))+(((x*y)/z)+(x/(y-z))))"
-"((((x-y)*z)-((x/y)/z))-(((x/y)*z)-(x*(y*z))))"
-"((((x-y)/z)+((x/y)-z))+(((x/y)/z)+(x*(y-z))))"
-"((((x/y)*z)-(x*(y*z)))-((x*(y/z))-(x+(y+z))))"
-"((((x/y)+z)*(x/(y/z)))*((x*(y+z))*(x-(y*z))))"
-"((((x/y)-z)/(x*(y+z)))/((x*(y-z))/(x+(y*z))))"
-"((((x/y)/z)+(x*(y-z)))+((x*(y*z))+(x+(y/z))))"
-"(((x*(y*z))+(x+(y/z)))+((x+(y+z))+((x-y)*z)))"
-"(((x*(y+z))*(x-(y*z)))*((x+(y*z))*((x+y)+z)))"
-"(((x*(y-z))/(x+(y*z)))/((x+(y/z))/((x-y)/z)))"
-"(((x*(y/z))-(x+(y+z)))-((x+(y-z))-((x*y)+z)))"
-"(((x+(y*z))*((x+y)+z))*(((x-y)/z)+((x/y)-z)))"
-"(((x+(y+z))+((x-y)*z))+(((x*y)+z)*((x/y)*z)))"
-"(((x+(y-z))-((x*y)+z))-(((x*y)-z)/(x/(y+z))))"
-"(((x+(y/z))/((x-y)/z))/(((x-y)*z)-((x/y)/z)))"
-"(((x-(y*z))-((x+y)-z))-(((x+y)+z)/((x/y)+z)))"
-"(((x-(y+z))*(x+(y-z)))*(((x+y)/z)+((x*y)-z)))"
-"(((x-(y-z))/((x+y)/z))/(((x+y)*z)-((x*y)/z)))"
-"(((x-(y/z))+((x+y)*z))+(((x+y)-z)*((x*y)*z)))"
-"(((x/(y*z))+(x-(y-z)))+((x-(y/z))+((x+y)*z)))"
-"(((x/(y+z))*(x*(y/z)))*((x-(y+z))*(x+(y-z))))"
-"(((x/(y-z))/(x-(y+z)))/((x-(y-z))/((x+y)/z)))"
-"(((x/(y/z))-(x-(y/z)))-((x-(y*z))-((x+y)-z)))"
-"((b+((((((((b/a)+e)+b)+pi)+a)+2.71)+a)+b))*e)"
-"7*a^7+6*a^6+5*a^5+4*a^4+3*a^3+2*a^2+1*a^1+0.1"
-"((((((((((1.36*e)+b)+pi)*pi)/b)+a)-a)+a)+a)+a)"
-"((((((((0.68-1.49)/e)+a)+pi)*b)+0.75)+b)/2.78)"
-"((((tan(tan((e*(cos(3.57)+b))))-a)*a)+a)+0.45)"
-"(b/((((tan((cos(((b+b)/b))+e))-b)+2.15)*e)+b))"
-"(cos((((1.45*(((3.50+1.35)-a)+e))*b)/a))+2.02)"
-"(((((((((a+a)*1.53)+a)-a)+b)/b)*0.18)+0.61)+pi)"
-"((((((((a/b)*1.1)*2.2)*3.3)*4.4)*5.5)*6.6)*7.7)"
-"((((((((a/b)+1.1)+2.2)+3.3)+4.4)+5.5)+6.6)+7.7)"
-"((0.09*((((a-(((a-0.88)*b)+1.92))+pi)+a)-a))*b)"
-"((a/cos((cos(((tan(cos(e))+a)/3.36))/0.05)))*e)"
-"(1.1*(2.2*(3.3*(4.4*(5.5*(6.6*(7.7*(a+b))))))))"
-"(1.1+(2.2+(3.3+(4.4+(5.5+(6.6+(7.7+(a*b))))))))"
-"1.1*x^2+2.2*1.1/y^3-2.2-1.1*x^2+2.2+1.1/y^3-2.2"
-"1.1*x^2+2.2*1.1/y^3-2.2-1.1*x^2+2.2-1.1/y^3-2.2"
-"1.1*x^2+2.2+1.1/y^3-2.2*1.1*x^2+2.2*1.1/y^3-2.2"
-"1.1*x^2+2.2+1.1/y^3-2.2*1.1*x^2+2.2-1.1/y^3-2.2"
-"1.1*x^2+2.2-1.1/y^3-2.2+1.1*x^2+2.2*1.1/y^3-2.2"
-"1.1*x^2+2.2-1.1/y^3-2.2+1.1*x^2+2.2+1.1/y^3-2.2"
-"cos(((1.09+(pi+((cos(((b+e)+pi))+a)+e)))+1.35))"
-"x*y/z-x*y*z*x/y+z*x/y-z*x/y/z+x/y*z+x/y+z-x/y-z"
-"x+y/z+x+y*z+x+y-z-x+y+z+x-y/z*x-y*z-x*y+z+x*y-z"
-"x/y*z*x/y/z-x*y+z+x*y-z-x*y*z-x*y/z*x-y/z*x-y/z"
-"((((((((((b-e)/pi)*a)*b)/a)+a)+e)+b)/1.63)-3.35)"
-"(((((sin(((e*((a+a)/0.23))-b))+a)+b)+a)-3.93)+a)"
-"((((pi*(((pi+(((a-e)*b)+1.99))+a)/b))+pi)+pi)+a)"
-"(3.90-((b+((((((pi+b)+2.55)+b)+pi)+3.80)*a))-e))"
-"(pi+((((((((2.93*1.77)/a)-pi)*e)+e)+e)/a)+2.61))"
-"(pi-tan(((cos((((((a*b)*a)*b)*pi)+1.80))-b)/b)))"
-"(((((((((b-0.79)+2.44)+b)+2.13)/3.71)-b)+a)-a)+a)"
-"(tan(sin(sin((((((pi+pi)*a)+3.56)+b)+pi))))+1.50)"
-"((((tan((a+((((e+3.01)/e)*b)-0.93)))*pi)+pi)/a)-b)"
-"(e+(tan(((((((e+3.54)+2.95)+b)/1.72)+1.01)-e))+b))"
-"cos((((tan(tan(((b+((3.89-b)-a))/3.42)))+a)/a)+b))"
-"cos(tan(((((((a/cos(pi))*e)-e)-2.89)+2.65)-1.24)))"
-"((((((((((e+a)/1.07)*e)*e)/pi)+0.02)+a)/a)*b)+2.61)"
-"((3.123*y*z+w+3.123+y/z/w+3.123+y/z+w*3.123*y+z*w))"
-"((3.123*y*z-w*3.123-y*z/w*3.123-y-z*w+3.123/y-z*w))"
-"((3.123*y*z-w/3.123+y+z*w/3.123+y-z/w-3.123*y+z-w))"
-"((3.123*y+z*w*3.123/y-z+w*3.123*y-z+w+3.123/y/z+w))"
-"((3.123*y+z*w-3.123+y-z-w-3.123-y-z/w/3.123+y/z*w))"
-"((3.123*y+z+w*3.123/y/z-w*3.123*y/z-w+3.123-y-z/w))"
-"((3.123*y+z-w+3.123/y*z-w+3.123*y*z-w*3.123-y*z/w))"
-"((3.123*y+z/w/3.123+y*z-w/3.123+y+z-w-3.123-y/z*w))"
-"((3.123*y-z*w*3.123+y+z-w*3.123+y-z-w+3.123+y/z/w))"
-"((3.123*y-z*w/3.123*y+z+w/3.123/y-z+w-3.123*y/z-w))"
-"((3.123*y-z+w+3.123/y/z+w+3.123*y/z+w*3.123-y+z/w))"
-"((3.123*y-z-w*3.123-y*z/w*3.123+y*z/w+3.123-y/z/w))"
-"((3.123*y-z/w+3.123+y/z-w+3.123+y*z-w*3.123-y/z/w))"
-"((3.123*y/z+w*3.123-y+z/w*3.123+y/z*w+3.123*y+z/w))"
-"((3.123*y/z-w+3.123-y-z/w+3.123-y+z*w*3.123/y+z/w))"
-"((3.123*y/z-w/3.123-y-z*w/3.123-y+z/w-3.123+y*z*w))"
-"((3.123+y*z*w+3.123-y/z*w+3.123+y/z*w*3.123+y*z-w))"
-"((3.123+y*z*w-3.123/y/z-w-3.123*y/z-w/3.123-y-z*w))"
-"((3.123+y*z-w*3.123-y/z/w*3.123-y/z*w+3.123+y-z*w))"
-"((3.123+y*z-w-3.123+y-z*w-3.123*y-z*w/3.123*y+z+w))"
-"((3.123+y*z/w+3.123*y/z-w+3.123-y/z-w*3.123-y+z/w))"
-"((3.123+y*z/w+3.123-y/z/w+3.123-y*z*w*3.123/y-z*w))"
-"((3.123+y*z/w-3.123+y+z/w-3.123-y/z*w/3.123-y*z-w))"
-"((3.123+y+z*w*3.123/y+z-w*3.123*y+z-w+3.123/y*z-w))"
-"((3.123+y+z*w-3.123/y*z-w-3.123*y*z-w/3.123+y+z*w))"
-"((3.123+y+z-w-3.123-y/z*w-3.123+y/z/w/3.123+y-z/w))"
-"((3.123+y+z/w+3.123*y*z-w+3.123-y*z-w*3.123+y-z/w))"
-"((3.123+y+z/w/3.123*y-z-w/3.123/y+z-w-3.123+y*z/w))"
-"((3.123+y-z*w+3.123/y+z+w+3.123*y+z+w*3.123/y/z-w))"
-"((3.123+y-z*w/3.123-y/z-w/3.123+y/z-w-3.123-y+z*w))"
-"((3.123+y-z-w+3.123+y/z/w+3.123+y/z*w*3.123+y+z*w))"
-"((3.123+y-z/w*3.123+y/z-w*3.123/y*z-w+3.123+y+z/w))"
-"((3.123+y-z/w-3.123*y+z-w-3.123/y+z+w/3.123*y*z-w))"
-"((3.123+y/z*w*3.123+y*z-w*3.123-y/z*w+3.123*y-z*w))"
-"((3.123+y/z*w*3.123+y+z*w*3.123+y+z/w+3.123*y*z-w))"
-"((3.123+y/z*w+3.123*y+z/w+3.123*y-z*w*3.123+y+z-w))"
-"((3.123+y/z+w*3.123*y+z*w*3.123/y/z-w+3.123-y-z/w))"
-"((3.123+y/z-w-3.123-y+z*w-3.123+y+z/w/3.123*y-z-w))"
-"((3.123+y/z-w/3.123-y*z*w/3.123-y/z/w-3.123+y*z/w))"
-"((3.123+y/z/w/3.123*y-z*w/3.123*y+z*w-3.123+y-z-w))"
-"((3.123+y/z/w/3.123+y-z/w/3.123+y+z*w-3.123/y*z-w))"
-"((3.123-y*z*w*3.123+y*z*w*3.123+y*z/w+3.123*y/z-w))"
-"((3.123-y*z*w*3.123/y-z*w*3.123/y+z*w+3.123-y/z+w))"
-"((3.123-y*z+w*3.123/y*z+w*3.123*y*z+w+3.123+y/z/w))"
-"((3.123-y*z-w*3.123+y-z/w*3.123+y-z*w+3.123/y+z+w))"
-"((3.123-y*z/w-3.123-y/z*w-3.123-y/z/w/3.123*y+z*w))"
-"((3.123-y*z/w-3.123/y+z*w-3.123/y-z*w/3.123-y*z+w))"
-"((3.123-y*z/w/3.123+y/z+w/3.123+y*z*w-3.123/y/z-w))"
-"((3.123-y+z*w*3.123/y+z/w*3.123*y-z/w+3.123+y/z-w))"
-"((3.123-y+z*w+3.123/y-z-w+3.123*y-z-w*3.123-y*z/w))"
-"((3.123-y+z+w-3.123*y*z+w-3.123-y*z/w/3.123+y/z+w))"
-"((3.123-y+z/w-3.123*y-z/w-3.123*y+z/w/3.123+y*z-w))"
-"((3.123-y+z/w-3.123+y*z*w-3.123/y-z-w/3.123+y/z*w))"
-"((3.123-y-z*w*3.123+y*z/w*3.123+y*z*w+3.123-y/z*w))"
-"((3.123-y-z*w+3.123/y-z*w+3.123/y-z/w*3.123-y+z+w))"
-"((3.123-y-z+w+3.123-y*z/w+3.123-y*z*w*3.123+y*z*w))"
-"((3.123-y-z/w/3.123+y/z*w/3.123+y*z/w-3.123+y+z/w))"
-"((3.123-y-z/w/3.123/y-z/w/3.123/y+z/w-3.123-y-z+w))"
-"((3.123-y/z*w+3.123*y-z*w+3.123*y+z*w*3.123/y-z+w))"
-"((3.123-y/z*w+3.123+y-z*w+3.123+y-z/w*3.123+y/z-w))"
-"((3.123-y/z*w/3.123-y*z-w/3.123+y*z-w-3.123+y-z*w))"
-"((3.123-y/z+w/3.123*y/z+w/3.123/y*z+w-3.123+y/z*w))"
-"((3.123-y/z-w*3.123-y+z/w*3.123-y+z*w+3.123/y-z-w))"
-"((3.123-y/z/w-3.123+y*z/w-3.123+y-z*w/3.123-y/z-w))"
-"((3.123-y/z/w/3.123*y+z*w/3.123/y-z*w-3.123*y-z+w))"
-"((3.123/y*z+w-3.123+y/z*w-3.123+y/z/w/3.123*y-z*w))"
-"((3.123/y*z-w+3.123+y+z/w+3.123+y+z*w*3.123/y+z-w))"
-"((3.123/y*z-w/3.123-y*z*w/3.123-y*z/w-3.123/y+z*w))"
-"((3.123/y+z*w+3.123-y/z+w+3.123-y*z+w*3.123/y*z+w))"
-"((3.123/y+z+w/3.123*y*z-w/3.123/y/z-w-3.123-y-z*w))"
-"((3.123/y+z-w-3.123+y*z/w-3.123/y*z-w/3.123-y*z*w))"
-"((3.123/y+z/w-3.123-y-z+w-3.123+y/z-w/3.123-y*z*w))"
-"((3.123/y-z*w-3.123*y-z+w-3.123-y/z+w/3.123*y/z+w))"
-"((3.123/y-z*w/3.123-y*z+w/3.123-y+z+w-3.123*y*z+w))"
-"((3.123/y-z+w-3.123*y/z-w-3.123/y/z+w/3.123-y+z*w))"
-"((3.123/y-z-w/3.123+y/z*w/3.123-y*z/w-3.123-y/z*w))"
-"((3.123/y-z/w*3.123-y+z+w*3.123-y-z+w+3.123-y*z/w))"
-"((3.123/y/z+w/3.123-y+z*w/3.123-y+z/w-3.123*y-z/w))"
-"((3.123/y/z-w+3.123-y-z/w+3.123-y-z*w*3.123+y*z/w))"
-"((3.123/y/z-w-3.123-y-z*w-3.123-y-z/w/3.123/y-z/w))"
-"((pi+(0.76+(sin((tan(cos((e/0.36)))*1.15))*e)))*pi)"
-"((x*5.123*z+w+x+5.123/z/w+x+5.123/z+w*x*5.123+z*w))"
-"((x*5.123*z-w*x-5.123*z/w*x-5.123-z*w+x/5.123-z*w))"
-"((x*5.123*z-w/x+5.123+z*w/x+5.123-z/w-x*5.123+z-w))"
-"((x*5.123+z*w*x/5.123-z+w*x*5.123-z+w+x/5.123/z+w))"
-"((x*5.123+z*w-x+5.123-z-w-x-5.123-z/w/x+5.123/z*w))"
-"((x*5.123+z+w*x/5.123/z-w*x*5.123/z-w+x-5.123-z/w))"
-"((x*5.123+z-w+x/5.123*z-w+x*5.123*z-w*x-5.123*z/w))"
-"((x*5.123+z/w/x+5.123*z-w/x+5.123+z-w-x-5.123/z*w))"
-"((x*5.123-z*w*x+5.123+z-w*x+5.123-z-w+x+5.123/z/w))"
-"((x*5.123-z*w/x*5.123+z+w/x/5.123-z+w-x*5.123/z-w))"
-"((x*5.123-z+w+x/5.123/z+w+x*5.123/z+w*x-5.123+z/w))"
-"((x*5.123-z-w*x-5.123*z/w*x+5.123*z/w+x-5.123/z/w))"
-"((x*5.123-z/w+x+5.123/z-w+x+5.123*z-w*x-5.123/z/w))"
-"((x*5.123/z+w*x-5.123+z/w*x+5.123/z*w+x*5.123+z/w))"
-"((x*5.123/z-w+x-5.123-z/w+x-5.123+z*w*x/5.123+z/w))"
-"((x*5.123/z-w/x-5.123-z*w/x-5.123+z/w-x+5.123*z*w))"
-"((x*y*7.123+w+x+y/7.123/w+x+y/7.123+w*x*y+7.123*w))"
-"((x*y*7.123-w*x-y*7.123/w*x-y-7.123*w+x/y-7.123*w))"
-"((x*y*7.123-w/x+y+7.123*w/x+y-7.123/w-x*y+7.123-w))"
-"((x*y*z+9.123+x+y/z/9.123+x+y/z+9.123*x*y+z*9.123))"
-"((x*y*z+x+y/z+x+y+z+x-y*z+x+y-z-x*y+z-x*y-z/x/y+z))"
-"((x*y*z-9.123*x-y*z/9.123*x-y-z*9.123+x/y-z*9.123))"
-"((x*y*z-9.123/x+y+z*9.123/x+y-z/9.123-x*y+z-9.123))"
-"((x*y*z-x/y*z-x/y/z-x-y/z-x*y+z*x-y*z*x+y*z*x+y+z))"
-"((x*y+7.123*w*x/y-7.123+w*x*y-7.123+w+x/y/7.123+w))"
-"((x*y+7.123*w-x+y-7.123-w-x-y-7.123/w/x+y/7.123*w))"
-"((x*y+7.123+w*x/y/7.123-w*x*y/7.123-w+x-y-7.123/w))"
-"((x*y+7.123-w+x/y*7.123-w+x*y*7.123-w*x-y*7.123/w))"
-"((x*y+7.123/w/x+y*7.123-w/x+y+7.123-w-x-y/7.123*w))"
-"((x*y+z*9.123*x/y-z+9.123*x*y-z+9.123+x/y/z+9.123))"
-"((x*y+z*9.123-x+y-z-9.123-x-y-z/9.123/x+y/z*9.123))"
-"((x*y+z*x-y*z*x+y*z*x+y+z*x+y/z/x-y/z/x-y*z-x/y/z))"
-"((x*y+z*x/y*z*x/y+z*x*y/z*x/y-z/x-y+z/x-y-z/x+y/z))"
-"((x*y+z+9.123*x/y/z-9.123*x*y/z-9.123+x-y-z/9.123))"
-"((x*y+z-9.123+x/y*z-9.123+x*y*z-9.123*x-y*z/9.123))"
-"((x*y+z/9.123/x+y*z-9.123/x+y+z-9.123-x-y/z*9.123))"
-"((x*y-7.123*w*x+y+7.123-w*x+y-7.123-w+x+y/7.123/w))"
-"((x*y-7.123*w/x*y+7.123+w/x/y-7.123+w-x*y/7.123-w))"
-"((x*y-7.123+w+x/y/7.123+w+x*y/7.123+w*x-y+7.123/w))"
-"((x*y-7.123-w*x-y*7.123/w*x+y*7.123/w+x-y/7.123/w))"
-"((x*y-7.123/w+x+y/7.123-w+x+y*7.123-w*x-y/7.123/w))"
-"((x*y-z*9.123*x+y+z-9.123*x+y-z-9.123+x+y/z/9.123))"
-"((x*y-z*9.123/x*y+z+9.123/x/y-z+9.123-x*y/z-9.123))"
-"((x*y-z+9.123+x/y/z+9.123+x*y/z+9.123*x-y+z/9.123))"
-"((x*y-z-9.123*x-y*z/9.123*x+y*z/9.123+x-y/z/9.123))"
-"((x*y-z/9.123+x+y/z-9.123+x+y*z-9.123*x-y/z/9.123))"
-"((x*y-z/x+y*z/x+y/z/x-y/z/x+y+z+x-y*z+x*y+z*x/y*z))"
-"((x*y-z/x/y+z/x/y-z/x-y+z/x/y*z+x-y-z+x-y/z+x+y*z))"
-"((x*y/7.123+w*x-y+7.123/w*x+y/7.123*w+x*y+7.123/w))"
-"((x*y/7.123-w+x-y-7.123/w+x-y+7.123*w*x/y+7.123/w))"
-"((x*y/7.123-w/x-y-7.123*w/x-y+7.123/w-x+y*7.123*w))"
-"((x*y/z+9.123*x-y+z/9.123*x+y/z*9.123+x*y+z/9.123))"
-"((x*y/z+x/y-z+x/y*z+x-y-z+x/y/z-x-y/z-x-y*z-x+y-z))"
-"((x*y/z-9.123+x-y-z/9.123+x-y+z*9.123*x/y+z/9.123))"
-"((x*y/z-9.123/x-y-z*9.123/x-y+z/9.123-x+y*z*9.123))"
-"((x*y/z-x+y+z-x+y-z-x*y+z-x+y/z+x*y-z+x*y/z+x/y-z))"
-"((x+5.123*z*w+x-5.123/z*w+x+5.123/z*w*x+5.123*z-w))"
-"((x+5.123*z*w-x/5.123/z-w-x*5.123/z-w/x-5.123-z*w))"
-"((x+5.123*z-w*x-5.123/z/w*x-5.123/z*w+x+5.123-z*w))"
-"((x+5.123*z-w-x+5.123-z*w-x*5.123-z*w/x*5.123+z+w))"
-"((x+5.123*z/w+x*5.123/z-w+x-5.123/z-w*x-5.123+z/w))"
-"((x+5.123*z/w+x-5.123/z/w+x-5.123*z*w*x/5.123-z*w))"
-"((x+5.123*z/w-x+5.123+z/w-x-5.123/z*w/x-5.123*z-w))"
-"((x+5.123+z*w*x/5.123+z-w*x*5.123+z-w+x/5.123*z-w))"
-"((x+5.123+z*w-x/5.123*z-w-x*5.123*z-w/x+5.123+z*w))"
-"((x+5.123+z-w-x-5.123/z*w-x+5.123/z/w/x+5.123-z/w))"
-"((x+5.123+z/w+x*5.123*z-w+x-5.123*z-w*x+5.123-z/w))"
-"((x+5.123+z/w/x*5.123-z-w/x/5.123+z-w-x+5.123*z/w))"
-"((x+5.123-z*w+x/5.123+z+w+x*5.123+z+w*x/5.123/z-w))"
-"((x+5.123-z*w/x-5.123/z-w/x+5.123/z-w-x-5.123+z*w))"
-"((x+5.123-z-w+x+5.123/z/w+x+5.123/z*w*x+5.123+z*w))"
-"((x+5.123-z/w*x+5.123/z-w*x/5.123*z-w+x+5.123+z/w))"
-"((x+5.123-z/w-x*5.123+z-w-x/5.123+z+w/x*5.123*z-w))"
-"((x+5.123/z*w*x+5.123*z-w*x-5.123/z*w+x*5.123-z*w))"
-"((x+5.123/z*w*x+5.123+z*w*x+5.123+z/w+x*5.123*z-w))"
-"((x+5.123/z*w+x*5.123+z/w+x*5.123-z*w*x+5.123+z-w))"
-"((x+5.123/z+w*x*5.123+z*w*x/5.123/z-w+x-5.123-z/w))"
-"((x+5.123/z-w-x-5.123+z*w-x+5.123+z/w/x*5.123-z-w))"
-"((x+5.123/z-w/x-5.123*z*w/x-5.123/z/w-x+5.123*z/w))"
-"((x+5.123/z/w/x*5.123-z*w/x*5.123+z*w-x+5.123-z-w))"
-"((x+5.123/z/w/x+5.123-z/w/x+5.123+z*w-x/5.123*z-w))"
-"((x+y*7.123*w+x-y/7.123*w+x+y/7.123*w*x+y*7.123-w))"
-"((x+y*7.123*w-x/y/7.123-w-x*y/7.123-w/x-y-7.123*w))"
-"((x+y*7.123-w*x-y/7.123/w*x-y/7.123*w+x+y-7.123*w))"
-"((x+y*7.123-w-x+y-7.123*w-x*y-7.123*w/x*y+7.123+w))"
-"((x+y*7.123/w+x*y/7.123-w+x-y/7.123-w*x-y+7.123/w))"
-"((x+y*7.123/w+x-y/7.123/w+x-y*7.123*w*x/y-7.123*w))"
-"((x+y*7.123/w-x+y+7.123/w-x-y/7.123*w/x-y*7.123-w))"
-"((x+y*z*9.123+x-y/z*9.123+x+y/z*9.123*x+y*z-9.123))"
-"((x+y*z*9.123-x/y/z-9.123-x*y/z-9.123/x-y-z*9.123))"
-"((x+y*z*x+y+z*x-y/z+x/y-z*x-y*z-x/y/z-x/y*z-x*y*z))"
-"((x+y*z-9.123*x-y/z/9.123*x-y/z*9.123+x+y-z*9.123))"
-"((x+y*z-9.123-x+y-z*9.123-x*y-z*9.123/x*y+z+9.123))"
-"((x+y*z-x*y/z-x*y*z-x/y*z-x/y+z*x/y/z*x*y+z*x-y*z))"
-"((x+y*z/9.123+x*y/z-9.123+x-y/z-9.123*x-y+z/9.123))"
-"((x+y*z/9.123+x-y/z/9.123+x-y*z*9.123*x/y-z*9.123))"
-"((x+y*z/9.123-x+y+z/9.123-x-y/z*9.123/x-y*z-9.123))"
-"((x+y+7.123*w*x/y+7.123-w*x*y+7.123-w+x/y*7.123-w))"
-"((x+y+7.123*w-x/y*7.123-w-x*y*7.123-w/x+y+7.123*w))"
-"((x+y+7.123-w-x-y/7.123*w-x+y/7.123/w/x+y-7.123/w))"
-"((x+y+7.123/w+x*y*7.123-w+x-y*7.123-w*x+y-7.123/w))"
-"((x+y+7.123/w/x*y-7.123-w/x/y+7.123-w-x+y*7.123/w))"
-"((x+y+z*9.123*x/y+z-9.123*x*y+z-9.123+x/y*z-9.123))"
-"((x+y+z*9.123-x/y*z-9.123-x*y*z-9.123/x+y+z*9.123))"
-"((x+y+z+x-y*z+x*y+z*x/y*z+x*y-z/x/y+z/x/y-z/x-y+z))"
-"((x+y+z-9.123-x-y/z*9.123-x+y/z/9.123/x+y-z/9.123))"
-"((x+y+z/9.123+x*y*z-9.123+x-y*z-9.123*x+y-z/9.123))"
-"((x+y+z/9.123/x*y-z-9.123/x/y+z-9.123-x+y*z/9.123))"
-"((x+y+z/x/y+z/x/y-z/x*y+z/x/y/z+x*y-z+x*y*z+x+y/z))"
-"((x+y-7.123*w+x/y+7.123+w+x*y+7.123+w*x/y/7.123-w))"
-"((x+y-7.123*w/x-y/7.123-w/x+y/7.123-w-x-y+7.123*w))"
-"((x+y-7.123-w+x+y/7.123/w+x+y/7.123*w*x+y+7.123*w))"
-"((x+y-7.123/w*x+y/7.123-w*x/y*7.123-w+x+y+7.123/w))"
-"((x+y-7.123/w-x*y+7.123-w-x/y+7.123+w/x*y*7.123-w))"
-"((x+y-z*9.123+x/y+z+9.123+x*y+z+9.123*x/y/z-9.123))"
-"((x+y-z*9.123/x-y/z-9.123/x+y/z-9.123-x-y+z*9.123))"
-"((x+y-z*x*y*z*x/y+z*x/y/z*x/y-z/x*y+z/x*y-z/x+y*z))"
-"((x+y-z-9.123+x+y/z/9.123+x+y/z*9.123*x+y+z*9.123))"
-"((x+y-z-x*y+z-x*y-z/x/y+z-x*y/z+x/y-z+x/y*z+x-y-z))"
-"((x+y-z/9.123*x+y/z-9.123*x/y*z-9.123+x+y+z/9.123))"
-"((x+y-z/9.123-x*y+z-9.123-x/y+z+9.123/x*y*z-9.123))"
-"((x+y/7.123*w*x+y*7.123-w*x-y/7.123*w+x*y-7.123*w))"
-"((x+y/7.123*w*x+y+7.123*w*x+y+7.123/w+x*y*7.123-w))"
-"((x+y/7.123*w+x*y+7.123/w+x*y-7.123*w*x+y+7.123-w))"
-"((x+y/7.123+w*x*y+7.123*w*x/y/7.123-w+x-y-7.123/w))"
-"((x+y/7.123-w-x-y+7.123*w-x+y+7.123/w/x*y-7.123-w))"
-"((x+y/7.123-w/x-y*7.123*w/x-y/7.123/w-x+y*7.123/w))"
-"((x+y/7.123/w/x*y-7.123*w/x*y+7.123*w-x+y-7.123-w))"
-"((x+y/7.123/w/x+y-7.123/w/x+y+7.123*w-x/y*7.123-w))"
-"((x+y/z*9.123*x+y*z-9.123*x-y/z*9.123+x*y-z*9.123))"
-"((x+y/z*9.123*x+y+z*9.123*x+y+z/9.123+x*y*z-9.123))"
-"((x+y/z*9.123+x*y+z/9.123+x*y-z*9.123*x+y+z-9.123))"
-"((x+y/z+9.123*x*y+z*9.123*x/y/z-9.123+x-y-z/9.123))"
-"((x+y/z+x*y-z+x*y/z+x/y-z+x*y*z-x/y*z-x/y/z-x-y/z))"
-"((x+y/z-9.123-x-y+z*9.123-x+y+z/9.123/x*y-z-9.123))"
-"((x+y/z-9.123/x-y*z*9.123/x-y/z/9.123-x+y*z/9.123))"
-"((x+y/z/9.123/x*y-z*9.123/x*y+z*9.123-x+y-z-9.123))"
-"((x+y/z/9.123/x+y-z/9.123/x+y+z*9.123-x/y*z-9.123))"
-"((x+y/z/x-y/z/x-y*z-x/y/z/x*y+z*x/y*z*x/y+z*x*y/z))"
-"((x-5.123*z*w*x+5.123*z*w*x+5.123*z/w+x*5.123/z-w))"
-"((x-5.123*z*w*x/5.123-z*w*x/5.123+z*w+x-5.123/z+w))"
-"((x-5.123*z+w*x/5.123*z+w*x*5.123*z+w+x+5.123/z/w))"
-"((x-5.123*z-w*x+5.123-z/w*x+5.123-z*w+x/5.123+z+w))"
-"((x-5.123*z/w-x-5.123/z*w-x-5.123/z/w/x*5.123+z*w))"
-"((x-5.123*z/w-x/5.123+z*w-x/5.123-z*w/x-5.123*z+w))"
-"((x-5.123*z/w/x+5.123/z+w/x+5.123*z*w-x/5.123/z-w))"
-"((x-5.123+z*w*x/5.123+z/w*x*5.123-z/w+x+5.123/z-w))"
-"((x-5.123+z*w+x/5.123-z-w+x*5.123-z-w*x-5.123*z/w))"
-"((x-5.123+z+w-x*5.123*z+w-x-5.123*z/w/x+5.123/z+w))"
-"((x-5.123+z/w-x*5.123-z/w-x*5.123+z/w/x+5.123*z-w))"
-"((x-5.123+z/w-x+5.123*z*w-x/5.123-z-w/x+5.123/z*w))"
-"((x-5.123-z*w*x+5.123*z/w*x+5.123*z*w+x-5.123/z*w))"
-"((x-5.123-z*w+x/5.123-z*w+x/5.123-z/w*x-5.123+z+w))"
-"((x-5.123-z+w+x-5.123*z/w+x-5.123*z*w*x+5.123*z*w))"
-"((x-5.123-z/w/x+5.123/z*w/x+5.123*z/w-x+5.123+z/w))"
-"((x-5.123-z/w/x/5.123-z/w/x/5.123+z/w-x-5.123-z+w))"
-"((x-5.123/z*w+x*5.123-z*w+x*5.123+z*w*x/5.123-z+w))"
-"((x-5.123/z*w+x+5.123-z*w+x+5.123-z/w*x+5.123/z-w))"
-"((x-5.123/z*w/x-5.123*z-w/x+5.123*z-w-x+5.123-z*w))"
-"((x-5.123/z+w/x*5.123/z+w/x/5.123*z+w-x+5.123/z*w))"
-"((x-5.123/z-w*x-5.123+z/w*x-5.123+z*w+x/5.123-z-w))"
-"((x-5.123/z/w-x+5.123*z/w-x+5.123-z*w/x-5.123/z-w))"
-"((x-5.123/z/w/x*5.123+z*w/x/5.123-z*w-x*5.123-z+w))"
-"((x-y*7.123*w*x+y*7.123*w*x+y*7.123/w+x*y/7.123-w))"
-"((x-y*7.123*w*x/y-7.123*w*x/y+7.123*w+x-y/7.123+w))"
-"((x-y*7.123+w*x/y*7.123+w*x*y*7.123+w+x+y/7.123/w))"
-"((x-y*7.123-w*x+y-7.123/w*x+y-7.123*w+x/y+7.123+w))"
-"((x-y*7.123/w-x-y/7.123*w-x-y/7.123/w/x*y+7.123*w))"
-"((x-y*7.123/w-x/y+7.123*w-x/y-7.123*w/x-y*7.123+w))"
-"((x-y*7.123/w/x+y/7.123+w/x+y*7.123*w-x/y/7.123-w))"
-"((x-y*z*9.123*x+y*z*9.123*x+y*z/9.123+x*y/z-9.123))"
-"((x-y*z*9.123*x/y-z*9.123*x/y+z*9.123+x-y/z+9.123))"
-"((x-y*z+9.123*x/y*z+9.123*x*y*z+9.123+x+y/z/9.123))"
-"((x-y*z-9.123*x+y-z/9.123*x+y-z*9.123+x/y+z+9.123))"
-"((x-y*z-x+y-z-x+y+z/x/y+z-x-y/z+x/y-z+x/y/z+x*y-z))"
-"((x-y*z-x/y/z-x/y*z-x*y*z-x/y+z*x*y/z*x-y+z*x+y-z))"
-"((x-y*z/9.123-x-y/z*9.123-x-y/z/9.123/x*y+z*9.123))"
-"((x-y*z/9.123-x/y+z*9.123-x/y-z*9.123/x-y*z+9.123))"
-"((x-y*z/9.123/x+y/z+9.123/x+y*z*9.123-x/y/z-9.123))"
-"((x-y+7.123*w*x/y+7.123/w*x*y-7.123/w+x+y/7.123-w))"
-"((x-y+7.123*w+x/y-7.123-w+x*y-7.123-w*x-y*7.123/w))"
-"((x-y+7.123+w-x*y*7.123+w-x-y*7.123/w/x+y/7.123+w))"
-"((x-y+7.123/w-x*y-7.123/w-x*y+7.123/w/x+y*7.123-w))"
-"((x-y+7.123/w-x+y*7.123*w-x/y-7.123-w/x+y/7.123*w))"
-"((x-y+z*9.123*x/y+z/9.123*x*y-z/9.123+x+y/z-9.123))"
-"((x-y+z*9.123+x/y-z-9.123+x*y-z-9.123*x-y*z/9.123))"
-"((x-y+z*x+y-z*x+y/z+x*y-z*x+y*z-x*y/z-x*y*z-x/y*z))"
-"((x-y+z+9.123-x*y*z+9.123-x-y*z/9.123/x+y/z+9.123))"
-"((x-y+z/9.123-x*y-z/9.123-x*y+z/9.123/x+y*z-9.123))"
-"((x-y+z/9.123-x+y*z*9.123-x/y-z-9.123/x+y/z*9.123))"
-"((x-y-7.123*w*x+y*7.123/w*x+y*7.123*w+x-y/7.123*w))"
-"((x-y-7.123*w+x/y-7.123*w+x/y-7.123/w*x-y+7.123+w))"
-"((x-y-7.123+w+x-y*7.123/w+x-y*7.123*w*x+y*7.123*w))"
-"((x-y-7.123/w/x+y/7.123*w/x+y*7.123/w-x+y+7.123/w))"
-"((x-y-7.123/w/x/y-7.123/w/x/y+7.123/w-x-y-7.123+w))"
-"((x-y-z*9.123*x+y*z/9.123*x+y*z*9.123+x-y/z*9.123))"
-"((x-y-z*9.123+x/y-z*9.123+x/y-z/9.123*x-y+z+9.123))"
-"((x-y-z+9.123+x-y*z/9.123+x-y*z*9.123*x+y*z*9.123))"
-"((x-y-z/9.123/x+y/z*9.123/x+y*z/9.123-x+y+z/9.123))"
-"((x-y-z/9.123/x/y-z/9.123/x/y+z/9.123-x-y-z+9.123))"
-"((x-y-z/x+y/z/x+y*z-x*y/z/x+y-z*x*y*z*x/y+z*x/y/z))"
-"((x-y/7.123*w+x*y-7.123*w+x*y+7.123*w*x/y-7.123+w))"
-"((x-y/7.123*w+x+y-7.123*w+x+y-7.123/w*x+y/7.123-w))"
-"((x-y/7.123*w/x-y*7.123-w/x+y*7.123-w-x+y-7.123*w))"
-"((x-y/7.123+w/x*y/7.123+w/x/y*7.123+w-x+y/7.123*w))"
-"((x-y/7.123-w*x-y+7.123/w*x-y+7.123*w+x/y-7.123-w))"
-"((x-y/7.123/w-x+y*7.123/w-x+y-7.123*w/x-y/7.123-w))"
-"((x-y/7.123/w/x*y+7.123*w/x/y-7.123*w-x*y-7.123+w))"
-"((x-y/z*9.123+x*y-z*9.123+x*y+z*9.123*x/y-z+9.123))"
-"((x-y/z*9.123+x+y-z*9.123+x+y-z/9.123*x+y/z-9.123))"
-"((x-y/z*9.123/x-y*z-9.123/x+y*z-9.123-x+y-z*9.123))"
-"((x-y/z+9.123/x*y/z+9.123/x/y*z+9.123-x+y/z*9.123))"
-"((x-y/z+x+y*z+x+y-z*x*y*z+x+y+z/x/y+z/x/y-z/x*y+z))"
-"((x-y/z+x/y-z+x/y/z+x*y-z+x/y*z-x*y*z-x*y/z-x+y+z))"
-"((x-y/z-9.123*x-y+z/9.123*x-y+z*9.123+x/y-z-9.123))"
-"((x-y/z/9.123-x+y*z/9.123-x+y-z*9.123/x-y/z-9.123))"
-"((x-y/z/9.123/x*y+z*9.123/x/y-z*9.123-x*y-z+9.123))"
-"((x/5.123*z+w-x+5.123/z*w-x+5.123/z/w/x*5.123-z*w))"
-"((x/5.123*z-w+x+5.123+z/w+x+5.123+z*w*x/5.123+z-w))"
-"((x/5.123*z-w/x-5.123*z*w/x-5.123*z/w-x/5.123+z*w))"
-"((x/5.123+z*w+x-5.123/z+w+x-5.123*z+w*x/5.123*z+w))"
-"((x/5.123+z+w/x*5.123*z-w/x/5.123/z-w-x-5.123-z*w))"
-"((x/5.123+z-w-x+5.123*z/w-x/5.123*z-w/x-5.123*z*w))"
-"((x/5.123+z/w-x-5.123-z+w-x+5.123/z-w/x-5.123*z*w))"
-"((x/5.123-z*w-x*5.123-z+w-x-5.123/z+w/x*5.123/z+w))"
-"((x/5.123-z*w/x-5.123*z+w/x-5.123+z+w-x*5.123*z+w))"
-"((x/5.123-z+w-x*5.123/z-w-x/5.123/z+w/x-5.123+z*w))"
-"((x/5.123-z-w/x+5.123/z*w/x-5.123*z/w-x-5.123/z*w))"
-"((x/5.123-z/w*x-5.123+z+w*x-5.123-z+w+x-5.123*z/w))"
-"((x/5.123/z+w/x-5.123+z*w/x-5.123+z/w-x*5.123-z/w))"
-"((x/5.123/z-w+x-5.123-z/w+x-5.123-z*w*x+5.123*z/w))"
-"((x/5.123/z-w-x-5.123-z*w-x-5.123-z/w/x/5.123-z/w))"
-"((x/y*7.123+w-x+y/7.123*w-x+y/7.123/w/x*y-7.123*w))"
-"((x/y*7.123-w+x+y+7.123/w+x+y+7.123*w*x/y+7.123-w))"
-"((x/y*7.123-w/x-y*7.123*w/x-y*7.123/w-x/y+7.123*w))"
-"((x/y*z+9.123-x+y/z*9.123-x+y/z/9.123/x*y-z*9.123))"
-"((x/y*z+x-y-z+x-y/z+x+y*z+x-y*z-x+y-z-x+y+z/x/y+z))"
-"((x/y*z-9.123+x+y+z/9.123+x+y+z*9.123*x/y+z-9.123))"
-"((x/y*z-9.123/x-y*z*9.123/x-y*z/9.123-x/y+z*9.123))"
-"((x/y*z-x*y*z-x*y/z-x+y+z-x-y+z*x+y-z*x+y/z+x*y-z))"
-"((x/y+7.123*w+x-y/7.123+w+x-y*7.123+w*x/y*7.123+w))"
-"((x/y+7.123+w/x*y*7.123-w/x/y/7.123-w-x-y-7.123*w))"
-"((x/y+7.123-w-x+y*7.123/w-x/y*7.123-w/x-y*7.123*w))"
-"((x/y+7.123/w-x-y-7.123+w-x+y/7.123-w/x-y*7.123*w))"
-"((x/y+z*9.123+x-y/z+9.123+x-y*z+9.123*x/y*z+9.123))"
-"((x/y+z*x*y/z*x-y+z*x+y-z*x-y-z/x+y/z/x+y*z-x*y/z))"
-"((x/y+z*x/y/z*x*y+z*x-y*z*x*y-z/x+y*z/x+y/z/x-y/z))"
-"((x/y+z+9.123/x*y*z-9.123/x/y/z-9.123-x-y-z*9.123))"
-"((x/y+z-9.123-x+y*z/9.123-x/y*z-9.123/x-y*z*9.123))"
-"((x/y+z/9.123-x-y-z+9.123-x+y/z-9.123/x-y*z*9.123))"
-"((x/y-7.123*w-x*y-7.123+w-x-y/7.123+w/x*y/7.123+w))"
-"((x/y-7.123*w/x-y*7.123+w/x-y+7.123+w-x*y*7.123+w))"
-"((x/y-7.123+w-x*y/7.123-w-x/y/7.123+w/x-y+7.123*w))"
-"((x/y-7.123-w/x+y/7.123*w/x-y*7.123/w-x-y/7.123*w))"
-"((x/y-7.123/w*x-y+7.123+w*x-y-7.123+w+x-y*7.123/w))"
-"((x/y-z*9.123-x*y-z+9.123-x-y/z+9.123/x*y/z+9.123))"
-"((x/y-z*9.123/x-y*z+9.123/x-y+z+9.123-x*y*z+9.123))"
-"((x/y-z+9.123-x*y/z-9.123-x/y/z+9.123/x-y+z*9.123))"
-"((x/y-z-9.123/x+y/z*9.123/x-y*z/9.123-x-y/z*9.123))"
-"((x/y-z/9.123*x-y+z+9.123*x-y-z+9.123+x-y*z/9.123))"
-"((x/y-z/x*y+z/x*y-z/x+y*z/x*y*z+x+y/z+x+y+z+x-y*z))"
-"((x/y-z/x-y+z/x-y-z/x+y/z/x-y/z+x+y*z+x+y-z*x*y*z))"
-"((x/y/7.123+w/x-y+7.123*w/x-y+7.123/w-x*y-7.123/w))"
-"((x/y/7.123-w+x-y-7.123/w+x-y-7.123*w*x+y*7.123/w))"
-"((x/y/7.123-w-x-y-7.123*w-x-y-7.123/w/x/y-7.123/w))"
-"((x/y/z+9.123/x-y+z*9.123/x-y+z/9.123-x*y-z/9.123))"
-"((x/y/z+x*y-z+x*y*z+x+y/z+x*y/z-x+y+z-x+y-z-x*y+z))"
-"((x/y/z-9.123+x-y-z/9.123+x-y-z*9.123*x+y*z/9.123))"
-"((x/y/z-9.123-x-y-z*9.123-x-y-z/9.123/x/y-z/9.123))"
-"((x/y/z-x-y/z-x-y*z-x+y-z-x+y*z*x+y+z*x-y/z+x/y-z))"
-"7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"cos(((((a+(((a-((sin(e)+3.14)+a))*b)-pi))/b)-b)/e))"
-"(((3.79-((tan((((sin(a)+0.12)-a)*0.94))+b)+b))*b)+b)"
-"((0.96*(((((tan(sin((b*b)))*b)+e)*3.49)+0.03)/a))-b)"
-"((e*((((2.17-(1.53-(((b+a)+pi)/pi)))-e)+b)-b))-2.58)"
-"((((((a/(((((a*a)*e)+a)/3.36)/0.05))*e)-pi)-pi)+a)*a)"
-"(2.2*(3.3*(4.4*(5.5*(((((a-b)+9.9)+8.8)+7.7)+6.6)))))"
-"(2.2+(3.3+(4.4+(5.5+(((((a*b)*9.9)*8.8)*7.7)*6.6)))))"
-"(sin((((((((tan(pi)+0.98)/e)+e)-2.32)/1.46)*a)*e))-a)"
-"(((e+((((((((b/b)-0.99)+b)+b)+b)+a)+b)+2.24))/a)/3.99)"
-"(((((((2.27/(((e/(a/a))*b)+b))/b)+3.73)*a)*3.17)*b)*pi)"
-"((((x+y)-(x+y)*(x+z)-(x-w))/((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((x+y)/(x+y)+(x+z)/(x-w))-((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((x-y)+(x+y)-(x+z)+(x+w))*((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((x-y)/(x+y)+(x+z)/(x-w))-((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((y+x)-(y+z)*(y+w)-(y-w))/((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((y+x)/(y+z)+(y+w)/(y+y))-((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((y-x)*(y+z)/(y+w)*(y+x))+((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y-x)+(y+z)-(y+w)+(y+z))*((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y-x)+(y+z)-(y+w)+(y-z))*((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y-x)/(y+z)+(y+w)/(y+y))-((x-y)-(x-y)-(x-z)+(x-w))))"
-"(2.88*((((((((((e*pi)+1.02)-b)*pi)-b)/b)-a)+b)-b)+0.31))"
-"(b-(a/((((sin((b-((a+(pi-2.29))+a)))*1.39)/b)-b)+3.83)))"
-"(cos((((sin(((cos(((e-b)+pi))*pi)/a))-b)+2.66)-0.06))/a)"
-"(tan((sin((a*(tan(((b+(e-(2.97+a)))-2.81))-b)))/pi))/pi)"
-"cos((((((((((2.29+3.99)+a)/1.50)/a)/pi)-b)+1.90)+pi)/a))"
-"tan((((tan((((b*((cos(2.39)/b)/pi))-b)*a))+pi)*1.98)+e))"
-"(((((((((((((a-a)+a)+b)+pi)+e)*b)+e)/b)-a)*b)+1.25)-a)+a)"
-"((((((((((e+3.06)/2.16)/a)+pi)*b)-3.32)+3.38)-a)+b)+2.89)"
-"((((((a-(b-(2.95+(((e+b)-a)+e))))*1.32)+0.87)-1.54)-b)-a)"
-"(((((a+sin(((((((a+b)+b)+a)+e)-b)*pi)))+1.97)/a)-a)+2.98)"
-"((abs((x-y)/z)*exp((x-y)*z))-(sin((x*y)+z)+cos((x*y)-z)))"
-"((abs(x/(y*z))*exp(x/(y/z)))-(sin(x*(y+z))+cos(x*(y-z))))"
-"tan(tan((((((e*sin((b/(e-cos((b+b))))))-b)-1.36)+a)+pi)))"
-"((((((((((((a+pi)+a)-2.96)/b)-a)+pi)-b)+pi)+0.21)/a)+e)-a)"
-"((((((((((((e+a)*pi)/a)/pi)*a)*0.81)+1.42)+pi)+b)+b)+b)/e)"
-"(((((((((((a/2.01)*a)-b)+b)/0.59)+3.04)+b)+b)-1.51)+pi)*a)"
-"(((((sin((e-(((sin(pi)+pi)+a)+e)))+b)-2.65)*3.08)*1.91)+a)"
-"(((tan(sin(((sin(sin(sin(cos((b+a)))))*a)/a)))/b)+3.74)/b)"
-"((cos((a/((sin(((0.58+(cos(b)/b))-a))+1.23)+a)))+2.78)+pi)"
-"((e+((((a+((((((e+e)-b)/a)-3.17)*2.75)*e))+e)/a)/1.52))/e)"
-"(pi/(pi-((((((((((e-pi)+pi)*a)+a)-0.45)+a)*pi)/e)-b)*pi)))"
-"cos((b/((a+(((cos(tan(tan((tan(e)-3.84))))*e)+e)+pi))/a)))"
-"((((((((123.456/654.321)*1.1)*2.2)*3.3)*4.4)*5.5)*6.6)*7.7)"
-"((((((((123.456/654.321)+1.1)+2.2)+3.3)+4.4)+5.5)+6.6)+7.7)"
-"((0.93*((((((((0.71+3.99)+e)*a)+0.91)/0.81)/pi)*pi)+b))/pi)"
-"(1.1*(2.2*(3.3*(4.4*(5.5*(6.6*(7.7*(123.456+654.321))))))))"
-"(1.1*2.2*3.3*4.4*5.5*6.6*7.7)/(1.1*2.2*3.3*4.4*5.5*6.6*7.7)"
-"7.7*a^7+6.6*a^6+5.6*a^5+4.4*a^4+3.3*a^3+2.2*a^2+1.1*a^1+0.1"
-"8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"(((((((((((3.05*e)-b)+3.99)+pi)+pi)/0.99)+a)*pi)-b)-1.16)-b)"
-"(((((((((((e-3.40)+a)+e)+b)-a)*3.40)*b)-0.67)+e)+3.61)*0.23)"
-"(((1.50*((b*((((((a+((a+b)/a))+b)+b)+a)+e)-b))*pi))+1.97)/a)"
-"((1.59*(((0.52+(((((0.36+1.11)-e)+1.53)+a)-0.30))+b)/e))+pi)"
-"cos(((a+((tan((b+(3.78-((b*(cos(a)*a))-pi))))+a)-1.50))+pi))"
-"tan(((sin(((sin(sin(((a-(sin(a)+2.20))/e)))/0.31)/b))-b)+a))"
-"((((((((((((b*b)*pi)*b)*pi)/a)+pi)+b)+2.17)+e)-3.87)/e)*0.92)"
-"((((((((((0.32/(pi+b))+b)/b)+2.28)-a)+b)+0.32)+e)*1.64)-2.00)"
-"(((((x*y)*z)-w)/((x+y)+(z*w)))/(((x+y)-(z/w))-((x*y)+(z-w))))"
-"(((((x*y)/z)-w)/((x-y)-(z*w)))/(((x-y)+(z/w))-((x+y)*(z*w))))"
-"(((((x+y)*z)-w)-((x+y)-(z*w)))-((x*(y-(z*w)))/((x*y)+(z+w))))"
-"(((((x+y)/z)-w)-((x-y)+(z*w)))-(((x+y)+(z/w))/((x*y)-(z-w))))"
-"(((((x-y)*z)-w)*((x+y)-(z/w)))*(((x+y)-(z*w))+((x/y)+(z+w))))"
-"(((((x-y)/z)-w)*((x-y)+(z/w)))*(((x-y)+(z*w))+((x/y)-(z-w))))"
-"(((((x/y)*z)-w)+((x+y)+(z/w)))+(((x+y)+(z*w))*((x/y)+(z-w))))"
-"(((((x/y)/z)-w)+((x-y)-(z/w)))+(((x-y)-(z*w))*((x+y)*(z/w))))"
-"((((3.123*y)*z)-(3.123/(y*z)))-((3.123/(y/z))-(3.123-(y/z))))"
-"((((3.123*y)+z)*((3.123/y)*z))*((3.123/(y+z))*(3.123*(y/z))))"
-"((((3.123*y)-z)/(3.123/(y+z)))/((3.123/(y-z))/(3.123-(y+z))))"
-"((((3.123*y)/z)+(3.123/(y-z)))+((3.123/(y*z))+(3.123-(y-z))))"
-"((((3.123+y)*z)-((3.123*y)/z))-(((3.123*y)*z)-(3.123/(y*z))))"
-"((((3.123+y)+z)/((3.123/y)+z))/(((3.123/y)-z)/(3.123*(y+z))))"
-"((((3.123+y)-z)*((3.123*y)*z))*(((3.123/y)+z)*(3.123/(y/z))))"
-"((((3.123+y)/z)+((3.123*y)-z))+(((3.123*y)/z)+(3.123/(y-z))))"
-"((((3.123-y)*z)-((3.123/y)/z))-(((3.123/y)*z)-(3.123*(y*z))))"
-"((((3.123-y)/z)+((3.123/y)-z))+(((3.123/y)/z)+(3.123*(y-z))))"
-"((((3.123/y)*z)-(3.123*(y*z)))-((3.123*(y/z))-(3.123+(y+z))))"
-"((((3.123/y)+z)*(3.123/(y/z)))*((3.123*(y+z))*(3.123-(y*z))))"
-"((((3.123/y)-z)/(3.123*(y+z)))/((3.123*(y-z))/(3.123+(y*z))))"
-"((((3.123/y)/z)+(3.123*(y-z)))+((3.123*(y*z))+(3.123+(y/z))))"
-"((((x*5.123)*z)-(x/(5.123*z)))-((x/(5.123/z))-(x-(5.123/z))))"
-"((((x*5.123)+z)*((x/5.123)*z))*((x/(5.123+z))*(x*(5.123/z))))"
-"((((x*5.123)-z)/(x/(5.123+z)))/((x/(5.123-z))/(x-(5.123+z))))"
-"((((x*5.123)/z)+(x/(5.123-z)))+((x/(5.123*z))+(x-(5.123-z))))"
-"((((x*y)*(z+w))+(x+((y/z)/w)))+((x+((y/z)+w))*((x*y)+(z*w))))"
-"((((x*y)*(z-w))*(x-((y*z)/w)))*((x-((y-z)*w))+((x/y)-(z*w))))"
-"((((x*y)*7.123)-(x/(y*7.123)))-((x/(y/7.123))-(x-(y/7.123))))"
-"((((x*y)+(z*w))-((x+y)-(z-w)))-(((x-y)-(z/w))/((x+y)/(z*w))))"
-"((((x*y)+(z+w))*((x/y)/(z-w)))*(((x*y)/(z-w))+(x-((y-z)/w))))"
-"((((x*y)+(z-w))+((x/y)*(z-w)))+(((x*y)*(z-w))*(x-((y*z)/w))))"
-"((((x*y)+(z/w))/((x+y)*(z-w)))/(((x+y)+(z-w))-((x-y)/(z*w))))"
-"((((x*y)+7.123)*((x/y)*7.123))*((x/(y+7.123))*(x*(y/7.123))))"
-"((((x*y)-(z*w))*((x+y)+(z-w)))*(((x+y)-(z-w))+((x+y)/(z/w))))"
-"((((x*y)-(z+w))+((x/y)/(z+w)))+(((x*y)/(z+w))*(x-((y+z)/w))))"
-"((((x*y)-(z-w))*(x-(y*(z/w))))*((x+(y*(z/w)))+(x-((y/z)/w))))"
-"((((x*y)-(z/w))+((x+y)/(z-w)))+(((x+y)*(z-w))*((x-y)/(z/w))))"
-"((((x*y)-7.123)/(x/(y+7.123)))/((x/(y-7.123))/(x-(y+7.123))))"
-"((((x*y)/(z+w))*(x-((y+z)/w)))*((x+((y/z)*w))+((x*y)+(z/w))))"
-"((((x*y)/(z-w))+(x-((y-z)/w)))+((x-((y+z)*w))*((x/y)+(z/w))))"
-"((((x*y)/7.123)+(x/(y-7.123)))+((x/(y*7.123))+(x-(y-7.123))))"
-"((((x+5.123)*z)-((x*5.123)/z))-(((x*5.123)*z)-(x/(5.123*z))))"
-"((((x+5.123)+z)/((x/5.123)+z))/(((x/5.123)-z)/(x*(5.123+z))))"
-"((((x+5.123)-z)*((x*5.123)*z))*(((x/5.123)+z)*(x/(5.123/z))))"
-"((((x+5.123)/z)+((x*5.123)-z))+(((x*5.123)/z)+(x/(5.123-z))))"
-"((((x+y)*(z*w))+(x-(y/(z*w))))+((x+(y/(z*w)))*(((x+y)*z)-w)))"
-"((((x+y)*(z-w))*((x-y)/(z/w)))*(((x-y)/(z*w))+(x+((y-z)*w))))"
-"((((x+y)*(z/w))-(x+((y+z)/w)))-((x-(y/(z*w)))/(((x-y)*z)-w)))"
-"((((x+y)*7.123)-((x*y)/7.123))-(((x*y)*7.123)-(x/(y*7.123))))"
-"((((x+y)+(z*w))*((x/y)+(z-w)))*(((x*y)+(z-w))+((x/y)*(z-w))))"
-"((((x+y)+(z-w))-((x-y)/(z*w)))-(((x+y)/(z/w))/(x+((y-z)/w))))"
-"((((x+y)+(z/w))/((x*y)-(z-w)))/(((x/y)+(z-w))-(x+(y*(z/w)))))"
-"((((x+y)+7.123)/((x/y)+7.123))/(((x/y)-7.123)/(x*(y+7.123))))"
-"((((x+y)-(z*w))+((x/y)+(z+w)))+(((x*y)+(z+w))*((x/y)/(z-w))))"
-"((((x+y)-(z-w))+((x+y)/(z/w)))+(((x+y)/(z*w))*(x+((y+z)*w))))"
-"((((x+y)-(z/w))-((x*y)+(z-w)))-(((x/y)+(z+w))/((x*y)*(z-w))))"
-"((((x+y)-7.123)*((x*y)*7.123))*(((x/y)+7.123)*(x/(y/7.123))))"
-"((((x+y)/(z*w))*(x+((y+z)*w)))*((x+((y+z)/w))+(((x*y)*z)-w)))"
-"((((x+y)/(z-w))/((x-y)*(z*w)))/(((x-y)/(z/w))-(x+((y*z)/w))))"
-"((((x+y)/(z/w))/(x+((y-z)/w)))/((x+((y+z)*w))-(((x/y)*z)-w)))"
-"((((x+y)/7.123)+((x*y)-7.123))+(((x*y)/7.123)+(x/(y-7.123))))"
-"((((x-5.123)*z)-((x/5.123)/z))-(((x/5.123)*z)-(x*(5.123*z))))"
-"((((x-5.123)/z)+((x/5.123)-z))+(((x/5.123)/z)+(x*(5.123-z))))"
-"((((x-y)*(z*w))*(x+((y*z)*w)))*((x+((y*z)/w))+(((x*y)/z)-w)))"
-"((((x-y)*(z+w))*((x/y)*(z+w)))*(((x*y)*(z+w))+(x+((y/z)/w))))"
-"((((x-y)*(z/w))/(x+((y/z)+w)))/((x+((y*z)*w))-(((x/y)/z)-w)))"
-"((((x-y)*7.123)-((x/y)/7.123))-(((x/y)*7.123)-(x*(y*7.123))))"
-"((((x-y)+(z*w))+((x/y)-(z-w)))+(((x*y)-(z-w))*(x-(y*(z/w)))))"
-"((((x-y)+(z+w))-((x*y)*(z+w)))-(((x-y)*(z/w))/(x+((y/z)+w))))"
-"((((x-y)+(z/w))-((x+y)*(z*w)))-(((x/y)-(z-w))/(x+(y/(z*w)))))"
-"((((x-y)-(z*w))*((x+y)*(z/w)))*(((x+y)*(z*w))+(x-(y/(z*w)))))"
-"((((x-y)-(z+w))+((x-y)*(z/w)))+(((x-y)*(z*w))*(x+((y*z)*w))))"
-"((((x-y)-(z/w))/((x+y)/(z*w)))/(((x+y)*(z/w))-(x+((y+z)/w))))"
-"((((x-y)/(z*w))+(x+((y-z)*w)))+((x+((y-z)/w))*(((x+y)/z)-w)))"
-"((((x-y)/(z+w))/((x*y)/(z+w)))/(((x/y)*(z+w))-(x+((y/z)*w))))"
-"((((x-y)/(z/w))-(x+((y*z)/w)))-((x+((y-z)*w))/(((x-y)/z)-w)))"
-"((((x-y)/7.123)+((x/y)-7.123))+(((x/y)/7.123)+(x*(y-7.123))))"
-"((((x/5.123)*z)-(x*(5.123*z)))-((x*(5.123/z))-(x+(5.123+z))))"
-"((((x/5.123)+z)*(x/(5.123/z)))*((x*(5.123+z))*(x-(5.123*z))))"
-"((((x/5.123)-z)/(x*(5.123+z)))/((x*(5.123-z))/(x+(5.123*z))))"
-"((((x/5.123)/z)+(x*(5.123-z)))+((x*(5.123*z))+(x+(5.123/z))))"
-"((((x/y)*(z+w))-(x+((y/z)*w)))-((x+((y/z)/w))/((x*y)-(z*w))))"
-"((((x/y)*(z-w))/(x-((y*z)*w)))/((x-((y*z)/w))-(x/(y+(z*w)))))"
-"((((x/y)*7.123)-(x*(y*7.123)))-((x*(y/7.123))-(x+(y+7.123))))"
-"((((x/y)+(z+w))/((x*y)*(z-w)))/(((x/y)/(z-w))-(x-((y-z)*w))))"
-"((((x/y)+(z-w))-(x+(y*(z/w))))-(((x/y)*(z-w))/(x-((y*z)*w))))"
-"((((x/y)+(z/w))-((x-y)-(z+w)))-(((x+y)/(z-w))/((x-y)*(z*w))))"
-"((((x/y)+7.123)*(x/(y/7.123)))*((x*(y+7.123))*(x-(y*7.123))))"
-"((((x/y)-(z*w))/((x-y)*(z+w)))/(((x-y)+(z+w))-((x*y)*(z+w))))"
-"((((x/y)-(z+w))-((x*y)/(z-w)))-(((x/y)/(z+w))/(x-((y+z)*w))))"
-"((((x/y)-(z-w))/(x+(y/(z*w))))/((x-(y*(z/w)))-(x-((y/z)*w))))"
-"((((x/y)-(z/w))*((x-y)+(z+w)))*(((x-y)-(z+w))+((x-y)*(z/w))))"
-"((((x/y)-7.123)/(x*(y+7.123)))/((x*(y-7.123))/(x+(y*7.123))))"
-"((((x/y)/(z+w))/(x-((y+z)*w)))/((x-((y+z)/w))-((x*y)-(z/w))))"
-"((((x/y)/(z-w))-(x-((y-z)*w)))-((x-((y-z)/w))/((x/y)-(z/w))))"
-"((((x/y)/7.123)+(x*(y-7.123)))+((x*(y*7.123))+(x+(y/7.123))))"
-"(((1.1*x^2+2.2)*(1.1/y^3-2.2))-((1.1*x^2+2.2)+(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)*(1.1/y^3-2.2))-((1.1*x^2+2.2)-(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)+(1.1/y^3-2.2))*((1.1*x^2+2.2)*(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)+(1.1/y^3-2.2))*((1.1*x^2+2.2)-(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)-(1.1/y^3-2.2))+((1.1*x^2+2.2)*(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)-(1.1/y^3-2.2))+((1.1*x^2+2.2)+(1.1/y^3-2.2)))"
-"(((3.123*(y*z))+(3.123+(y/z)))+((3.123+(y+z))+((3.123-y)*z)))"
-"(((3.123*(y+z))*(3.123-(y*z)))*((3.123+(y*z))*((3.123+y)+z)))"
-"(((3.123*(y-z))/(3.123+(y*z)))/((3.123+(y/z))/((3.123-y)/z)))"
-"(((3.123*(y/z))-(3.123+(y+z)))-((3.123+(y-z))-((3.123*y)+z)))"
-"(((3.123+(y*z))*((3.123+y)+z))*(((3.123-y)/z)+((3.123/y)-z)))"
-"(((3.123+(y+z))+((3.123-y)*z))+(((3.123*y)+z)*((3.123/y)*z)))"
-"(((3.123+(y-z))-((3.123*y)+z))-(((3.123*y)-z)/(3.123/(y+z))))"
-"(((3.123+(y/z))/((3.123-y)/z))/(((3.123-y)*z)-((3.123/y)/z)))"
-"(((3.123-(y*z))-((3.123+y)-z))-(((3.123+y)+z)/((3.123/y)+z)))"
-"(((3.123-(y+z))*(3.123+(y-z)))*(((3.123+y)/z)+((3.123*y)-z)))"
-"(((3.123-(y-z))/((3.123+y)/z))/(((3.123+y)*z)-((3.123*y)/z)))"
-"(((3.123-(y/z))+((3.123+y)*z))+(((3.123+y)-z)*((3.123*y)*z)))"
-"(((3.123/(y*z))+(3.123-(y-z)))+((3.123-(y/z))+((3.123+y)*z)))"
-"(((3.123/(y+z))*(3.123*(y/z)))*((3.123-(y+z))*(3.123+(y-z))))"
-"(((3.123/(y-z))/(3.123-(y+z)))/((3.123-(y-z))/((3.123+y)/z)))"
-"(((3.123/(y/z))-(3.123-(y/z)))-((3.123-(y*z))-((3.123+y)-z)))"
-"(((x*(5.123*z))+(x+(5.123/z)))+((x+(5.123+z))+((x-5.123)*z)))"
-"(((x*(5.123+z))*(x-(5.123*z)))*((x+(5.123*z))*((x+5.123)+z)))"
-"(((x*(5.123-z))/(x+(5.123*z)))/((x+(5.123/z))/((x-5.123)/z)))"
-"(((x*(5.123/z))-(x+(5.123+z)))-((x+(5.123-z))-((x*5.123)+z)))"
-"(((x*(y*7.123))+(x+(y/7.123)))+((x+(y+7.123))+((x-y)*7.123)))"
-"(((x*(y+(z*w)))*((x/y)-(z+w)))*(((x*y)-(z+w))+((x/y)/(z+w))))"
-"(((x*(y+7.123))*(x-(y*7.123)))*((x+(y*7.123))*((x+y)+7.123)))"
-"(((x*(y-(z*w)))/((x*y)+(z+w)))/(((x/y)-(z+w))-((x*y)/(z-w))))"
-"(((x*(y-7.123))/(x+(y*7.123)))/((x+(y/7.123))/((x-y)/7.123)))"
-"(((x*(y/7.123))-(x+(y+7.123)))-((x+(y-7.123))-((x*y)+7.123)))"
-"(((x+((y*z)*w))-(((x/y)/z)-w))-((((x*y)/z)-w)/((x-y)-(z*w))))"
-"(((x+((y*z)/w))+(((x*y)/z)-w))+((((x-y)/z)-w)*((x-y)+(z/w))))"
-"(((x+((y+z)*w))-(((x/y)*z)-w))-((((x*y)*z)-w)/((x+y)+(z*w))))"
-"(((x+((y+z)/w))+(((x*y)*z)-w))+((((x-y)*z)-w)*((x+y)-(z/w))))"
-"(((x+((y-z)*w))/(((x-y)/z)-w))/((((x+y)/z)-w)-((x-y)+(z*w))))"
-"(((x+((y-z)/w))*(((x+y)/z)-w))*((((x/y)*z)-w)+((x+y)+(z/w))))"
-"(((x+((y/z)*w))+((x*y)+(z/w)))+(((x*y)-(z*w))*((x+y)+(z-w))))"
-"(((x+((y/z)+w))*((x*y)+(z*w)))*((((x/y)/z)-w)+((x-y)-(z/w))))"
-"(((x+((y/z)/w))/((x*y)-(z*w)))/(((x*y)+(z*w))-((x+y)-(z-w))))"
-"(((x+(5.123*z))*((x+5.123)+z))*(((x-5.123)/z)+((x/5.123)-z)))"
-"(((x+(5.123+z))+((x-5.123)*z))+(((x*5.123)+z)*((x/5.123)*z)))"
-"(((x+(5.123-z))-((x*5.123)+z))-(((x*5.123)-z)/(x/(5.123+z))))"
-"(((x+(5.123/z))/((x-5.123)/z))/(((x-5.123)*z)-((x/5.123)/z)))"
-"(((x+(y*(z/w)))+(x-((y/z)/w)))+((x-((y*z)*w))*(x/(y-(z*w)))))"
-"(((x+(y*7.123))*((x+y)+7.123))*(((x-y)/7.123)+((x/y)-7.123)))"
-"(((x+(y+7.123))+((x-y)*7.123))+(((x*y)+7.123)*((x/y)*7.123)))"
-"(((x+(y-7.123))-((x*y)+7.123))-(((x*y)-7.123)/(x/(y+7.123))))"
-"(((x+(y/(z*w)))*(((x+y)*z)-w))*((x-((y/z)*w))+(x*(y-(z*w)))))"
-"(((x+(y/7.123))/((x-y)/7.123))/(((x-y)*7.123)-((x/y)/7.123)))"
-"(((x-((y*z)*w))*(x/(y-(z*w))))*((x/(y+(z*w)))+((x-y)/(z+w))))"
-"(((x-((y*z)/w))-(x/(y+(z*w))))-(((x/y)-(z*w))/((x-y)*(z+w))))"
-"(((x-((y+z)*w))*((x/y)+(z/w)))*(((x*y)-(z/w))+((x+y)/(z-w))))"
-"(((x-((y+z)/w))-((x*y)-(z/w)))-(((x*y)+(z/w))/((x+y)*(z-w))))"
-"(((x-((y-z)*w))+((x/y)-(z*w)))+(((x/y)-(z/w))*((x-y)+(z+w))))"
-"(((x-((y-z)/w))/((x/y)-(z/w)))/(((x/y)+(z/w))-((x-y)-(z+w))))"
-"(((x-((y/z)*w))+(x*(y-(z*w))))+((x*(y+(z*w)))*((x/y)-(z+w))))"
-"(((x-((y/z)/w))/(x*(y+(z*w))))/((x/(y-(z*w)))-((x*y)-(z+w))))"
-"(((x-(5.123*z))-((x+5.123)-z))-(((x+5.123)+z)/((x/5.123)+z)))"
-"(((x-(5.123+z))*(x+(5.123-z)))*(((x+5.123)/z)+((x*5.123)-z)))"
-"(((x-(5.123-z))/((x+5.123)/z))/(((x+5.123)*z)-((x*5.123)/z)))"
-"(((x-(5.123/z))+((x+5.123)*z))+(((x+5.123)-z)*((x*5.123)*z)))"
-"(((x-(y*(z/w)))-(x-((y/z)*w)))-((x-((y/z)/w))/(x*(y+(z*w)))))"
-"(((x-(y*7.123))-((x+y)-7.123))-(((x+y)+7.123)/((x/y)+7.123)))"
-"(((x-(y+7.123))*(x+(y-7.123)))*(((x+y)/7.123)+((x*y)-7.123)))"
-"(((x-(y-7.123))/((x+y)/7.123))/(((x+y)*7.123)-((x*y)/7.123)))"
-"(((x-(y/(z*w)))/(((x-y)*z)-w))/((((x+y)*z)-w)-((x+y)-(z*w))))"
-"(((x-(y/7.123))+((x+y)*7.123))+(((x+y)-7.123)*((x*y)*7.123)))"
-"(((x/(5.123*z))+(x-(5.123-z)))+((x-(5.123/z))+((x+5.123)*z)))"
-"(((x/(5.123+z))*(x*(5.123/z)))*((x-(5.123+z))*(x+(5.123-z))))"
-"(((x/(5.123-z))/(x-(5.123+z)))/((x-(5.123-z))/((x+5.123)/z)))"
-"(((x/(5.123/z))-(x-(5.123/z)))-((x-(5.123*z))-((x+5.123)-z)))"
-"(((x/(y*7.123))+(x-(y-7.123)))+((x-(y/7.123))+((x+y)*7.123)))"
-"(((x/(y+(z*w)))+((x-y)/(z+w)))+(((x-y)*(z+w))*((x/y)*(z+w))))"
-"(((x/(y+7.123))*(x*(y/7.123)))*((x-(y+7.123))*(x+(y-7.123))))"
-"(((x/(y-(z*w)))-((x*y)-(z+w)))-(((x-y)/(z+w))/((x*y)/(z+w))))"
-"(((x/(y-7.123))/(x-(y+7.123)))/((x-(y-7.123))/((x+y)/7.123)))"
-"(((x/(y/7.123))-(x-(y/7.123)))-((x-(y*7.123))-((x+y)-7.123)))"
-"sin(tan(sin((3.49*(pi*((cos((b-(cos(a)-2.26)))+3.01)+pi))))))"
-"((((((((((((pi-a)+a)*b)-e)+3.72)+2.27)/b)+3.35)+a)*a)+1.60)*a)"
-"((((((((((pi/((((0.78+b)/b)+a)*a))/b)+a)/e)/a)/b)/pi)+b)-e)/b)"
-"((((b-(((b-((((((a*e)+3.89)+1.22)/b)*b)+a))*e)+a))-2.31)+b)-e)"
-"((((b+(((b+((((((b/a)+e)-2.64)+b)/b)+pi))-b)+2.29))-e)-b)+3.15)"
-"(((0.71*((2.59+((0.98*((((b+3.89)+a)-b)*a))+b))-a))/2.37)+3.17)"
-"((sin(((tan((sin((cos(((cos(b)+e)*0.15))+pi))*b))/pi)/e))+b)+b)"
-"(cos((((((b-(b/(cos(tan(cos((pi-b))))+pi)))*pi)-b)-b)+0.53))/b)"
-"2.2*y/z-2.2*y*z*2.2/y+z*2.2/y-z*2.2/y/z+2.2/y*z+2.2/y+z-2.2/y-z"
-"2.2+y/z+2.2+y*z+2.2+y-z-2.2+y+z+2.2-y/z*2.2-y*z-2.2*y+z+2.2*y-z"
-"2.2/y*z*2.2/y/z-2.2*y+z+2.2*y-z-2.2*y*z-2.2*y/z*2.2-y/z*2.2-y/z"
-"x*3.3/z-x*3.3*z*x/3.3+z*x/3.3-z*x/3.3/z+x/3.3*z+x/3.3+z-x/3.3-z"
-"x*y+z-w-x/y+z-w*x*y-z-w*x/y-z-w-x+y*z*w+x+y*z/w+x+y/z*w-x+y/z/w"
-"x*y/4.4-x*y*4.4*x/y+4.4*x/y-4.4*x/y/4.4+x/y*4.4+x/y+4.4-x/y-4.4"
-"x+3.3/z+x+3.3*z+x+3.3-z-x+3.3+z+x-3.3/z*x-3.3*z-x*3.3+z+x*3.3-z"
-"x+y+z/w+x+y+z*w+x+y-z/w-x+y-z*w+x+y*z/w*x+y*z*w-x+y/z+w+x+y/z/w"
-"x+y/4.4+x+y*4.4+x+y-4.4-x+y+4.4+x-y/4.4*x-y*4.4-x*y+4.4+x*y-4.4"
-"x+y/z*w-x-y+z/w*x-y+z*w*x-y-z/w-x-y-z*w+x-y*z/w+x-y*z*w-x-y/z/w"
-"x-y+z*w*x-y+z/w-x-y-z*w+x-y-z/w*x+y-z-w-x+y-z-w*x+y+z-w*x+y+z-w"
-"x-y-z+w+x-y-z+w+x-y+z+w-x-y+z+w+x*y-z+w*x/y-z+w-x*y+z+w+x/y+z+w"
-"x-y/z*w*x+y*z-w-x-y*z-w+x*y*z-w*x/y*z-w-x+y/z-w*x-y/z-w*x*y/z-w"
-"x-y/z*w*x-y/z/w-x-y*z*w+x-y*z/w*x*y*z+w-x/y*z+w*x*y/z+w*x/y/z+w"
-"x/3.3*z*x/3.3/z-x*3.3+z+x*3.3-z-x*3.3*z-x*3.3/z*x-3.3/z*x-3.3/z"
-"x/y*4.4*x/y/4.4-x*y+4.4+x*y-4.4-x*y*4.4-x*y/4.4*x-y/4.4*x-y/4.4"
-"x/y+z*w-x/y-z*w*x*y+z*w*x*y-z*w-x+y-z*w+x+y-z/w+x+y+z*w-x+y+z/w"
-"x/y/z-w+x*y+z*w+x*y-z*w-x*y+z/w+x*y-z/w*x/y+z/w-x/y-z/w+x/y-z*w"
-"((((((((((((((((+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)"
-"(((((((((((((((b/b)+a)+b)-a)/a)-e)+a)+a)+b)-0.02)/a)-a)-a)+e)+b)"
-"((((0.76-(((((((a+((pi-a)+b))*b)-e)+e)/e)+pi)*2.44))+3.19)+a)+b)"
-"(((e/((tan((tan(cos(tan(cos(cos(0.02)))))/a))+3.33)*b))/b)-3.49)"
-"(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+))))))))))))))))"
-"(cos(cos(sin((((sin(sin(((tan((0.64+b))/b)/b)))+pi)-pi)*e))))+a)"
-"((((((((((((a+(2.26-(b/pi)))*b)*b)/b)*pi)+a)/b)+e)+b)*a)/1.55)/a)"
-"(((0.03+((((((a+(((a+e)+b)+b))+e)+pi)-e)+2.79)/0.91))*1.22)/2.23)"
-"((abs((2.2-y)/z)*exp((2.2-y)*z))-(sin((2.2*y)+z)+cos((2.2*y)-z)))"
-"((abs((x-3.3)/z)*exp((x-3.3)*z))-(sin((x*3.3)+z)+cos((x*3.3)-z)))"
-"((abs((x-y)/4.4)*exp((x-y)*4.4))-(sin((x*y)+4.4)+cos((x*y)-4.4)))"
-"((abs(2.2/(y*z))*exp(2.2/(y/z)))-(sin(2.2*(y+z))+cos(2.2*(y-z))))"
-"((abs(x/(3.3*z))*exp(x/(3.3/z)))-(sin(x*(3.3+z))+cos(x*(3.3-z))))"
-"((abs(x/(y*4.4))*exp(x/(y/4.4)))-(sin(x*(y+4.4))+cos(x*(y-4.4))))"
-"((b+(a+((((((((((((a-e)-e)+a)+b)+b)/1.00)+e)+e)*pi)+b)+a)/a)))/b)"
-"(2.2*(3.3*(4.4*(5.5*(((((123.456-654.321)+9.9)+8.8)+7.7)+6.6)))))"
-"(2.2+(3.3+(4.4+(5.5+(((((123.456*654.321)*9.9)*8.8)*7.7)*6.6)))))"
-"tan(((tan((tan(((((e+((b+0.32)+e))*1.64)-2.00)+2.95))-b))+pi)+a))"
-"tan(tan((a-sin(((((((tan((b+a))-b)-a)-0.99)/1.20)/1.45)/2.44)))))"
-"(((((((((((((0.92+pi)+a)/b)-b)+3.58)+a)+b)/b)*3.17)/3.22)+b)+a)+e)"
-"((((((((((((b*pi)+1.80)-b)/b)*b)+pi)-3.49)*2.35)+0.19)+1.42)-b)-b)"
-"(((((pi-(((0.79*((((pi/a)/b)+3.48)-2.92))-b)/2.74))+e)/1.40)*a)*b)"
-"(((sin((((((a-(2.69/((sin(sin(b))+a)-a)))+b)*a)+b)+b))/b)+3.90)+b)"
-"((cos(((tan((cos(tan(sin(((cos(3.47)/a)-3.40))))-pi))+e)-e))+a)-e)"
-"(((((((((((a/b)*1.1)*2.2)*3.3)+4.4)+5.5)+6.6)*7.7)*8.8)+9.9)+10.10)"
-"(((((a-((((((((b+1.03)*e)*0.91)-pi)+a)*pi)*a)+a))-a)+3.80)/e)+0.00)"
-"(((((b-((b*(((((((e-a)-a)-pi)*e)*a)+1.60)+pi))+b))/3.81)*b)+pi)+pi)"
-"((x*y*z+w+x+y/z/w+x+y/z+w*x*y+z*w+x+y/z/w/x*y-z*w/x*y+z*w-x+y-z-w))"
-"((x*y*z-w*x-y*z/w*x-y-z*w+x/y-z*w*x-y*z/w-x/y+z*w-x/y-z*w/x-y*z+w))"
-"((x*y*z-w/x+y+z*w/x+y-z/w-x*y+z-w/x+y+z*w*x/y+z-w*x*y+z-w+x/y*z-w))"
-"((x*y+z*w*x/y-z+w*x*y-z+w+x/y/z+w*x/y-z+w-x*y/z-w-x/y/z+w/x-y+z*w))"
-"((x*y+z*w-x+y-z-w-x-y-z/w/x+y/z*w-x+y-z-w+x+y/z/w+x+y/z*w*x+y+z*w))"
-"((x*y+z+w*x/y/z-w*x*y/z-w+x-y-z/w*x/y/z-w-x-y-z*w-x-y-z/w/x/y-z/w))"
-"((x*y+z-w+x/y*z-w+x*y*z-w*x-y*z/w+x/y*z-w/x-y*z*w/x-y*z/w-x/y+z*w))"
-"((x*y+z/w/x+y*z-w/x+y+z-w-x-y/z*w/x+y*z-w*x-y/z/w*x-y/z*w+x+y-z*w))"
-"((x*y-z*w*x+y+z-w*x+y-z-w+x+y/z/w*x+y+z-w-x-y/z*w-x+y/z/w/x+y-z/w))"
-"((x*y-z*w/x*y+z+w/x/y-z+w-x*y/z-w/x*y+z+w*x/y/z-w*x*y/z-w+x-y-z/w))"
-"((x*y-z+w+x/y/z+w+x*y/z+w*x-y+z/w+x/y/z+w/x-y+z*w/x-y+z/w-x*y-z/w))"
-"((x*y-z-w*x-y*z/w*x+y*z/w+x-y/z/w*x-y*z/w-x-y/z*w-x-y/z/w/x*y+z*w))"
-"((x*y-z/w+x+y/z-w+x+y*z-w*x-y/z/w+x+y/z-w/x-y*z*w/x-y/z/w-x+y*z/w))"
-"((x*y/z+w*x-y+z/w*x+y/z*w+x*y+z/w*x-y+z/w-x*y-z/w-x*y+z/w/x+y*z-w))"
-"((x*y/z-w+x-y-z/w+x-y+z*w*x/y+z/w+x-y-z/w/x/y-z/w/x/y+z/w-x-y-z+w))"
-"((x*y/z-w/x-y-z*w/x-y+z/w-x+y*z*w/x-y-z*w*x+y*z/w*x+y*z*w+x-y/z*w))"
-"((x+y*z*w+x-y/z*w+x+y/z*w*x+y*z-w+x-y/z*w/x-y*z-w/x+y*z-w-x+y-z*w))"
-"((x+y*z*w-x/y/z-w-x*y/z-w/x-y-z*w-x/y/z-w+x-y-z/w+x-y-z*w*x+y*z/w))"
-"((x+y*z-w*x-y/z/w*x-y/z*w+x+y-z*w*x-y/z/w-x+y*z/w-x+y-z*w/x-y/z-w))"
-"((x+y*z-w-x+y-z*w-x*y-z*w/x*y+z+w-x+y-z*w+x/y+z+w+x*y+z+w*x/y/z-w))"
-"((x+y*z/w+x*y/z-w+x-y/z-w*x-y+z/w+x*y/z-w/x-y-z*w/x-y+z/w-x+y*z*w))"
-"((x+y*z/w+x-y/z/w+x-y*z*w*x/y-z*w+x-y/z/w/x*y+z*w/x/y-z*w-x*y-z+w))"
-"((x+y*z/w-x+y+z/w-x-y/z*w/x-y*z-w-x+y+z/w+x*y*z-w+x-y*z-w*x+y-z/w))"
-"((x+y+z*w*x/y+z-w*x*y+z-w+x/y*z-w*x/y+z-w-x+y*z/w-x/y*z-w/x-y*z*w))"
-"((x+y+z*w-x/y*z-w-x*y*z-w/x+y+z*w-x/y*z-w+x+y+z/w+x+y+z*w*x/y+z-w))"
-"((x+y+z-w-x-y/z*w-x+y/z/w/x+y-z/w-x-y/z*w+x+y-z*w+x+y-z/w*x+y/z-w))"
-"((x+y+z/w+x*y*z-w+x-y*z-w*x+y-z/w+x*y*z-w/x+y+z*w/x+y-z/w-x*y+z-w))"
-"((x+y+z/w/x*y-z-w/x/y+z-w-x+y*z/w/x*y-z-w*x-y*z/w*x+y*z/w+x-y/z/w))"
-"((x+y-z*w+x/y+z+w+x*y+z+w*x/y/z-w+x/y+z+w/x*y*z-w/x/y/z-w-x-y-z*w))"
-"((x+y-z*w/x-y/z-w/x+y/z-w-x-y+z*w/x-y/z-w*x-y+z/w*x-y+z*w+x/y-z-w))"
-"((x+y-z-w+x+y/z/w+x+y/z*w*x+y+z*w+x+y/z/w/x+y-z/w/x+y+z*w-x/y*z-w))"
-"((x+y-z/w*x+y/z-w*x/y*z-w+x+y+z/w*x+y/z-w-x-y+z*w-x+y+z/w/x*y-z-w))"
-"((x+y-z/w-x*y+z-w-x/y+z+w/x*y*z-w-x*y+z-w+x/y*z-w+x*y*z-w*x-y*z/w))"
-"((x+y/z*w*x+y*z-w*x-y/z*w+x*y-z*w*x+y*z-w-x+y-z*w-x*y-z*w/x*y+z+w))"
-"((x+y/z*w*x+y+z*w*x+y+z/w+x*y*z-w*x+y+z*w-x/y*z-w-x*y*z-w/x+y+z*w))"
-"((x+y/z*w+x*y+z/w+x*y-z*w*x+y+z-w+x*y+z/w/x+y*z-w/x+y+z-w-x-y/z*w))"
-"((x+y/z+w*x*y+z*w*x/y/z-w+x-y-z/w*x*y+z*w-x+y-z-w-x-y-z/w/x+y/z*w))"
-"((x+y/z-w-x-y+z*w-x+y+z/w/x*y-z-w-x-y+z*w+x/y-z-w+x*y-z-w*x-y*z/w))"
-"((x+y/z-w/x-y*z*w/x-y/z/w-x+y*z/w/x-y*z*w*x+y*z*w*x+y*z/w+x*y/z-w))"
-"((x+y/z/w/x*y-z*w/x*y+z*w-x+y-z-w/x*y-z*w*x+y+z-w*x+y-z-w+x+y/z/w))"
-"((x+y/z/w/x+y-z/w/x+y+z*w-x/y*z-w/x+y-z/w*x+y/z-w*x/y*z-w+x+y+z/w))"
-"((x-y*z*w*x+y*z*w*x+y*z/w+x*y/z-w*x+y*z*w-x/y/z-w-x*y/z-w/x-y-z*w))"
-"((x-y*z*w*x/y-z*w*x/y+z*w+x-y/z+w*x/y-z*w-x*y-z+w-x-y/z+w/x*y/z+w))"
-"((x-y*z+w*x/y*z+w*x*y*z+w+x+y/z/w*x/y*z+w-x+y/z*w-x+y/z/w/x*y-z*w))"
-"((x-y*z-w*x+y-z/w*x+y-z*w+x/y+z+w*x+y-z/w-x*y+z-w-x/y+z+w/x*y*z-w))"
-"((x-y*z/w-x-y/z*w-x-y/z/w/x*y+z*w-x-y/z*w+x*y-z*w+x*y+z*w*x/y-z+w))"
-"((x-y*z/w-x/y+z*w-x/y-z*w/x-y*z+w-x/y+z*w+x-y/z+w+x-y*z+w*x/y*z+w))"
-"((x-y*z/w/x+y/z+w/x+y*z*w-x/y/z-w/x+y/z+w*x*y+z*w*x/y/z-w+x-y-z/w))"
-"((x-y+z*w*x/y+z/w*x*y-z/w+x+y/z-w*x/y+z/w-x-y-z+w-x+y/z-w/x-y*z*w))"
-"((x-y+z*w+x/y-z-w+x*y-z-w*x-y*z/w+x/y-z-w/x+y/z*w/x-y*z/w-x-y/z*w))"
-"((x-y+z+w-x*y*z+w-x-y*z/w/x+y/z+w-x*y*z+w+x+y/z/w+x+y/z+w*x*y+z*w))"
-"((x-y+z/w-x*y-z/w-x*y+z/w/x+y*z-w-x*y-z/w+x+y/z-w+x+y*z-w*x-y/z/w))"
-"((x-y+z/w-x+y*z*w-x/y-z-w/x+y/z*w-x+y*z*w+x-y/z*w+x+y/z*w*x+y*z-w))"
-"((x-y-z*w*x+y*z/w*x+y*z*w+x-y/z*w*x+y*z/w-x+y+z/w-x-y/z*w/x-y*z-w))"
-"((x-y-z*w+x/y-z*w+x/y-z/w*x-y+z+w+x/y-z*w/x-y*z+w/x-y+z+w-x*y*z+w))"
-"((x-y-z+w+x-y*z/w+x-y*z*w*x+y*z*w+x-y*z/w/x+y/z+w/x+y*z*w-x/y/z-w))"
-"((x-y-z/w/x+y/z*w/x+y*z/w-x+y+z/w/x+y/z*w*x+y+z*w*x+y+z/w+x*y*z-w))"
-"((x-y-z/w/x/y-z/w/x/y+z/w-x-y-z+w/x/y-z/w*x-y+z+w*x-y-z+w+x-y*z/w))"
-"((x-y/z*w+x*y-z*w+x*y+z*w*x/y-z+w+x*y-z*w/x*y+z+w/x/y-z+w-x*y/z-w))"
-"((x-y/z*w+x+y-z*w+x+y-z/w*x+y/z-w+x+y-z*w/x-y/z-w/x+y/z-w-x-y+z*w))"
-"((x-y/z*w/x-y*z-w/x+y*z-w-x+y-z*w/x-y*z-w*x+y-z/w*x+y-z*w+x/y+z+w))"
-"((x-y/z+w/x*y/z+w/x/y*z+w-x+y/z*w/x*y/z+w*x-y+z/w*x+y/z*w+x*y+z/w))"
-"((x-y/z-w*x-y+z/w*x-y+z*w+x/y-z-w*x-y+z/w-x+y*z*w-x/y-z-w/x+y/z*w))"
-"((x-y/z/w-x+y*z/w-x+y-z*w/x-y/z-w-x+y*z/w+x*y/z-w+x-y/z-w*x-y+z/w))"
-"((x-y/z/w/x*y+z*w/x/y-z*w-x*y-z+w/x*y+z*w*x/y-z+w*x*y-z+w+x/y/z+w))"
-"((x/y*z+w-x+y/z*w-x+y/z/w/x*y-z*w-x+y/z*w+x*y+z/w+x*y-z*w*x+y+z-w))"
-"((x/y*z-w+x+y+z/w+x+y+z*w*x/y+z-w+x+y+z/w/x*y-z-w/x/y+z-w-x+y*z/w))"
-"((x/y*z-w/x-y*z*w/x-y*z/w-x/y+z*w/x-y*z*w*x/y-z*w*x/y+z*w+x-y/z+w))"
-"((x/y+z*w+x-y/z+w+x-y*z+w*x/y*z+w+x-y/z+w/x*y/z+w/x/y*z+w-x+y/z*w))"
-"((x/y+z+w/x*y*z-w/x/y/z-w-x-y-z*w/x*y*z-w*x-y*z/w*x-y-z*w+x/y-z*w))"
-"((x/y+z-w-x+y*z/w-x/y*z-w/x-y*z*w-x+y*z/w+x-y/z/w+x-y*z*w*x/y-z*w))"
-"((x/y+z/w-x-y-z+w-x+y/z-w/x-y*z*w-x-y-z+w+x-y*z/w+x-y*z*w*x+y*z*w))"
-"((x/y-z*w-x*y-z+w-x-y/z+w/x*y/z+w-x*y-z+w+x/y/z+w+x*y/z+w*x-y+z/w))"
-"((x/y-z*w/x-y*z+w/x-y+z+w-x*y*z+w/x-y*z+w*x/y*z+w*x*y*z+w+x+y/z/w))"
-"((x/y-z+w-x*y/z-w-x/y/z+w/x-y+z*w-x*y/z-w+x-y-z/w+x-y+z*w*x/y+z/w))"
-"((x/y-z-w/x+y/z*w/x-y*z/w-x-y/z*w/x+y/z*w*x+y*z-w*x-y/z*w+x*y-z*w))"
-"((x/y-z/w*x-y+z+w*x-y-z+w+x-y*z/w*x-y+z+w-x*y*z+w-x-y*z/w/x+y/z+w))"
-"((x/y/z+w/x-y+z*w/x-y+z/w-x*y-z/w/x-y+z*w*x/y+z/w*x*y-z/w+x+y/z-w))"
-"((x/y/z-w+x-y-z/w+x-y-z*w*x+y*z/w+x-y-z/w/x+y/z*w/x+y*z/w-x+y+z/w))"
-"((x/y/z-w-x-y-z*w-x-y-z/w/x/y-z/w-x-y-z*w+x/y-z*w+x/y-z/w*x-y+z+w))"
-"(1.1*(2.2*(3.3*(4.4+(5.5+(6.6+(7.7*(8.8*(9.9*(10.10*(a+b)))))))))))"
-"9.9*a^8+8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"cos(((cos(cos((e+cos(((sin(((((b+e)/b)*pi)-3.28))/e)-a)))))+e)*pi))"
-"(((((a+((((((((a/e)-0.51)+0.57)/a)+e)/b)*2.85)+a))/3.94)+a)*b)-0.23)"
-"((((3.58/(((((((((1.91*b)-e)-b)+a)*1.19)/a)+a)-2.06)+e))*e)*e)*0.72)"
-"((cos(tan((cos((((((tan((cos(a)/b))+0.95)/0.89)-b)*b)*b))+a)))*e)*e)"
-"(pi/((((((((((((((a+a)/e)/a)*0.56)+a)/b)-b)+1.71)+b)+a)+b)*b)/b)+b))"
-"cos(sin(tan(cos(tan((b*(b+(cos(tan((a*(((pi*b)/pi)+pi))))*pi))))))))"
-"((((((((3.26+(((((((3.74+a)/a)*e)*e)-pi)-e)*e))+pi)+b)+b)-a)/a)+e)+a)"
-"(((b/((((((1.94+(pi+((tan(cos(3.91))-b)+a)))/b)*a)+b)*3.43)-b))-b)+b)"
-"((pi+(((1.15/((cos((cos(((b/sin(a))+pi))*a))+pi)+3.05))+2.22)+pi))+b)"
-"((sin(((a-sin(cos(cos(((((pi*(pi-a))/3.15)+a)+2.54)))))+0.21))*a)*pi)"
-"(((a+((((((((pi+(((b+(b-a))+b)+a))*a)/pi)/b)+a)*b)+pi)/2.19))*3.22)+e)"
-"((pi*(b+((((((((((((b+b)/2.01)+a)*b)*3.74)/a)-a)+b)-pi)-b)+pi)+e)))-b)"
-"(pi-(3.49-(((e*(((((tan(sin(((a+a)/e)))+e)-3.39)/0.03)*e)-pi))+e)-e)))"
-"(tan((b+(((sin((((sin((((((e-b)+pi)*b)/b)+e))+a)*pi)-b))*a)+a)+a)))+e)"
-"(tan(tan((b/(((b/((a+((((b/((e+0.23)*e))*a)*b)+pi))*b))/3.44)-b))))+a)"
-"(((((((((1.16+(((((2.07*pi)*1.33)*a)+b)-a))/b)*b)+b)/b)-a)-0.23)+a)*pi)"
-"(((((e+(cos(sin(((((tan((sin(pi)+b))+pi)*a)+2.45)/e)))-e))+e)*e)+e)-pi)"
-"(((((pi+(b+((((a/(2.47*((e/(pi/1.01))*2.12)))/b)-b)/pi)))-pi)+pi)+a)*b)"
-"((cos((3.99/((pi/(cos((e+(1.94*(((2.07+0.79)+b)+e))))+a))+2.07)))/b)/a)"
-"((tan((((((((((tan(((b/(a/a))-e))+a)+a)+b)-0.02)/a)-a)-a)+e)+b))/pi)*b)"
-"((((((((a-((((((pi/0.73)+e)*a)+1.95)-pi)*pi))+a)-2.27)*b)+e)*3.87)+b)*b)"
-"(((((a+(((((((((3.57-a)+a)+3.66)-3.78)+e)/1.04)+pi)-b)-pi))*a)+pi)*a)-a)"
-"(((((b/((a*((((((((b+(pi+b))*a)+b)-b)-e)*b)/1.51)*pi))+a))*a)*pi)+pi)*b)"
-"((2.57*(cos(tan((((((tan(((tan(pi)*b)+b))/a)+a)+pi)-b)*0.35)))+b))-0.76)"
-"((((((((((((((a-3.00)+e)-pi)+a)-a)-1.99)/3.68)*e)+a)+b)+2.49)-0.21)*e)+b)"
-"((((((((b+tan((e*((((((a+a)+a)/a)/a)-b)+2.35))))-1.32)+b)+a)+e)/b)+pi)/a)"
-"(((((((tan(((cos(((2.34+3.44)/0.44))/b)+b))/1.35)+b)+e)*a)-a)/0.36)-2.06)"
-"((b+((tan(((((sin(((cos((2.64+b))/b)+pi))-b)+2.29)-e)-b))+3.15)+b))/3.43)"
-"(sin((((((tan((tan((cos((b*((1.03+pi)*pi)))-b))+b))-b)-b)/2.71)+b)/a))+a)"
-"((((((((((pi+(((pi+((e+b)-3.15))-e)+2.58))*pi)+a)/b)+e)/0.20)+pi)*b)+b)-b)"
-"((((((((1.94+(pi+((((((3.91-b)+a)/b)*a)+b)*3.43)))-b)-b)+b)/a)*1.21)+a)/b)"
-"(((b-sin(tan((sin(((((3.22-((0.02/e)*3.49))+pi)*b)/pi))-3.60))))+pi)-3.41)"
-"((((tan(((cos(((a+(((((3.66-3.78)+e)/1.04)+pi)-b))-pi))*a)+pi))*a)-a)+e)+b)"
-"1.1*a^9+9.9*a^8+8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"(((cos((a*(((cos((cos(tan((e+((3.11*b)+b))))+2.76))+b)-1.39)/b)))+pi)+a)*pi)"
-"((tan(((((cos((cos((((((cos((a/b))+a)/a)*a)+b)-3.91))*a))+b)/a)+e)-e))/e)+b)"
-"(1.78+((tan(cos((sin(sin(((((sin((1.07-1.16))*a)-b)-pi)*a)))*pi)))*1.92)-b))"
-"((((((((((((((((a-a)*e)/0.87)+a)-e)/b)/b)-2.98)*b)-e)+1.75)+e)+a)/0.84)/b)*e)"
-"((((((((((((((1.88-(((b-1.96)/pi)+e))/e)/b)-b)+a)+a)/pi)*a)/e)*b)-a)+b)/e)*b)"
-"((((((((e+(((b+(((((2.76+b)-1.39)/b)+pi)+a))*pi)+pi))-b)+e)+0.86)-b)*b)+b)/e)"
-"(((((3.123*y)*z)-w)/((3.123+y)+(z*w)))/(((3.123+y)-(z/w))-((3.123*y)+(z-w))))"
-"(((((3.123*y)/z)-w)/((3.123-y)-(z*w)))/(((3.123-y)+(z/w))-((3.123+y)*(z*w))))"
-"(((((3.123+y)*z)-w)-((3.123+y)-(z*w)))-((3.123*(y-(z*w)))/((3.123*y)+(z+w))))"
-"(((((3.123+y)/z)-w)-((3.123-y)+(z*w)))-(((3.123+y)+(z/w))/((3.123*y)-(z-w))))"
-"(((((3.123-y)*z)-w)*((3.123+y)-(z/w)))*(((3.123+y)-(z*w))+((3.123/y)+(z+w))))"
-"(((((3.123-y)/z)-w)*((3.123-y)+(z/w)))*(((3.123-y)+(z*w))+((3.123/y)-(z-w))))"
-"(((((3.123/y)*z)-w)+((3.123+y)+(z/w)))+(((3.123+y)+(z*w))*((3.123/y)+(z-w))))"
-"(((((3.123/y)/z)-w)+((3.123-y)-(z/w)))+(((3.123-y)-(z*w))*((3.123+y)*(z/w))))"
-"(((((x*5.123)*z)-w)/((x+5.123)+(z*w)))/(((x+5.123)-(z/w))-((x*5.123)+(z-w))))"
-"(((((x*5.123)/z)-w)/((x-5.123)-(z*w)))/(((x-5.123)+(z/w))-((x+5.123)*(z*w))))"
-"(((((x*y)*7.123)-w)/((x+y)+(7.123*w)))/(((x+y)-(7.123/w))-((x*y)+(7.123-w))))"
-"(((((x*y)*z)-9.123)/((x+y)+(z*9.123)))/(((x+y)-(z/9.123))-((x*y)+(z-9.123))))"
-"(((((x*y)/7.123)-w)/((x-y)-(7.123*w)))/(((x-y)+(7.123/w))-((x+y)*(7.123*w))))"
-"(((((x*y)/z)-9.123)/((x-y)-(z*9.123)))/(((x-y)+(z/9.123))-((x+y)*(z*9.123))))"
-"(((((x+5.123)*z)-w)-((x+5.123)-(z*w)))-((x*(5.123-(z*w)))/((x*5.123)+(z+w))))"
-"(((((x+5.123)/z)-w)-((x-5.123)+(z*w)))-(((x+5.123)+(z/w))/((x*5.123)-(z-w))))"
-"(((((x+y)*7.123)-w)-((x+y)-(7.123*w)))-((x*(y-(7.123*w)))/((x*y)+(7.123+w))))"
-"(((((x+y)*z)-9.123)-((x+y)-(z*9.123)))-((x*(y-(z*9.123)))/((x*y)+(z+9.123))))"
-"(((((x+y)/7.123)-w)-((x-y)+(7.123*w)))-(((x+y)+(7.123/w))/((x*y)-(7.123-w))))"
-"(((((x+y)/z)-9.123)-((x-y)+(z*9.123)))-(((x+y)+(z/9.123))/((x*y)-(z-9.123))))"
-"(((((x-5.123)*z)-w)*((x+5.123)-(z/w)))*(((x+5.123)-(z*w))+((x/5.123)+(z+w))))"
-"(((((x-5.123)/z)-w)*((x-5.123)+(z/w)))*(((x-5.123)+(z*w))+((x/5.123)-(z-w))))"
-"(((((x-y)*7.123)-w)*((x+y)-(7.123/w)))*(((x+y)-(7.123*w))+((x/y)+(7.123+w))))"
-"(((((x-y)*z)-9.123)*((x+y)-(z/9.123)))*(((x+y)-(z*9.123))+((x/y)+(z+9.123))))"
-"(((((x-y)/7.123)-w)*((x-y)+(7.123/w)))*(((x-y)+(7.123*w))+((x/y)-(7.123-w))))"
-"(((((x-y)/z)-9.123)*((x-y)+(z/9.123)))*(((x-y)+(z*9.123))+((x/y)-(z-9.123))))"
-"(((((x/5.123)*z)-w)+((x+5.123)+(z/w)))+(((x+5.123)+(z*w))*((x/5.123)+(z-w))))"
-"(((((x/5.123)/z)-w)+((x-5.123)-(z/w)))+(((x-5.123)-(z*w))*((x+5.123)*(z/w))))"
-"(((((x/y)*7.123)-w)+((x+y)+(7.123/w)))+(((x+y)+(7.123*w))*((x/y)+(7.123-w))))"
-"(((((x/y)*z)-9.123)+((x+y)+(z/9.123)))+(((x+y)+(z*9.123))*((x/y)+(z-9.123))))"
-"(((((x/y)/7.123)-w)+((x-y)-(7.123/w)))+(((x-y)-(7.123*w))*((x+y)*(7.123/w))))"
-"(((((x/y)/z)-9.123)+((x-y)-(z/9.123)))+(((x-y)-(z*9.123))*((x+y)*(z/9.123))))"
-"((((3.123*y)*(z+w))+(3.123+((y/z)/w)))+((3.123+((y/z)+w))*((3.123*y)+(z*w))))"
-"((((3.123*y)*(z-w))*(3.123-((y*z)/w)))*((3.123-((y-z)*w))+((3.123/y)-(z*w))))"
-"((((3.123*y)+(z*w))-((3.123+y)-(z-w)))-(((3.123-y)-(z/w))/((3.123+y)/(z*w))))"
-"((((3.123*y)+(z+w))*((3.123/y)/(z-w)))*(((3.123*y)/(z-w))+(3.123-((y-z)/w))))"
-"((((3.123*y)+(z-w))+((3.123/y)*(z-w)))+(((3.123*y)*(z-w))*(3.123-((y*z)/w))))"
-"((((3.123*y)+(z/w))/((3.123+y)*(z-w)))/(((3.123+y)+(z-w))-((3.123-y)/(z*w))))"
-"((((3.123*y)-(z*w))*((3.123+y)+(z-w)))*(((3.123+y)-(z-w))+((3.123+y)/(z/w))))"
-"((((3.123*y)-(z+w))+((3.123/y)/(z+w)))+(((3.123*y)/(z+w))*(3.123-((y+z)/w))))"
-"((((3.123*y)-(z-w))*(3.123-(y*(z/w))))*((3.123+(y*(z/w)))+(3.123-((y/z)/w))))"
-"((((3.123*y)-(z/w))+((3.123+y)/(z-w)))+(((3.123+y)*(z-w))*((3.123-y)/(z/w))))"
-"((((3.123*y)/(z+w))*(3.123-((y+z)/w)))*((3.123+((y/z)*w))+((3.123*y)+(z/w))))"
-"((((3.123*y)/(z-w))+(3.123-((y-z)/w)))+((3.123-((y+z)*w))*((3.123/y)+(z/w))))"
-"((((3.123+y)*(z*w))+(3.123-(y/(z*w))))+((3.123+(y/(z*w)))*(((3.123+y)*z)-w)))"
-"((((3.123+y)*(z-w))*((3.123-y)/(z/w)))*(((3.123-y)/(z*w))+(3.123+((y-z)*w))))"
-"((((3.123+y)*(z/w))-(3.123+((y+z)/w)))-((3.123-(y/(z*w)))/(((3.123-y)*z)-w)))"
-"((((3.123+y)+(z*w))*((3.123/y)+(z-w)))*(((3.123*y)+(z-w))+((3.123/y)*(z-w))))"
-"((((3.123+y)+(z-w))-((3.123-y)/(z*w)))-(((3.123+y)/(z/w))/(3.123+((y-z)/w))))"
-"((((3.123+y)+(z/w))/((3.123*y)-(z-w)))/(((3.123/y)+(z-w))-(3.123+(y*(z/w)))))"
-"((((3.123+y)-(z*w))+((3.123/y)+(z+w)))+(((3.123*y)+(z+w))*((3.123/y)/(z-w))))"
-"((((3.123+y)-(z-w))+((3.123+y)/(z/w)))+(((3.123+y)/(z*w))*(3.123+((y+z)*w))))"
-"((((3.123+y)-(z/w))-((3.123*y)+(z-w)))-(((3.123/y)+(z+w))/((3.123*y)*(z-w))))"
-"((((3.123+y)/(z*w))*(3.123+((y+z)*w)))*((3.123+((y+z)/w))+(((3.123*y)*z)-w)))"
-"((((3.123+y)/(z-w))/((3.123-y)*(z*w)))/(((3.123-y)/(z/w))-(3.123+((y*z)/w))))"
-"((((3.123+y)/(z/w))/(3.123+((y-z)/w)))/((3.123+((y+z)*w))-(((3.123/y)*z)-w)))"
-"((((3.123-y)*(z*w))*(3.123+((y*z)*w)))*((3.123+((y*z)/w))+(((3.123*y)/z)-w)))"
-"((((3.123-y)*(z+w))*((3.123/y)*(z+w)))*(((3.123*y)*(z+w))+(3.123+((y/z)/w))))"
-"((((3.123-y)*(z/w))/(3.123+((y/z)+w)))/((3.123+((y*z)*w))-(((3.123/y)/z)-w)))"
-"((((3.123-y)+(z*w))+((3.123/y)-(z-w)))+(((3.123*y)-(z-w))*(3.123-(y*(z/w)))))"
-"((((3.123-y)+(z+w))-((3.123*y)*(z+w)))-(((3.123-y)*(z/w))/(3.123+((y/z)+w))))"
-"((((3.123-y)+(z/w))-((3.123+y)*(z*w)))-(((3.123/y)-(z-w))/(3.123+(y/(z*w)))))"
-"((((3.123-y)-(z*w))*((3.123+y)*(z/w)))*(((3.123+y)*(z*w))+(3.123-(y/(z*w)))))"
-"((((3.123-y)-(z+w))+((3.123-y)*(z/w)))+(((3.123-y)*(z*w))*(3.123+((y*z)*w))))"
-"((((3.123-y)-(z/w))/((3.123+y)/(z*w)))/(((3.123+y)*(z/w))-(3.123+((y+z)/w))))"
-"((((3.123-y)/(z*w))+(3.123+((y-z)*w)))+((3.123+((y-z)/w))*(((3.123+y)/z)-w)))"
-"((((3.123-y)/(z+w))/((3.123*y)/(z+w)))/(((3.123/y)*(z+w))-(3.123+((y/z)*w))))"
-"((((3.123-y)/(z/w))-(3.123+((y*z)/w)))-((3.123+((y-z)*w))/(((3.123-y)/z)-w)))"
-"((((3.123/y)*(z+w))-(3.123+((y/z)*w)))-((3.123+((y/z)/w))/((3.123*y)-(z*w))))"
-"((((3.123/y)*(z-w))/(3.123-((y*z)*w)))/((3.123-((y*z)/w))-(3.123/(y+(z*w)))))"
-"((((3.123/y)+(z+w))/((3.123*y)*(z-w)))/(((3.123/y)/(z-w))-(3.123-((y-z)*w))))"
-"((((3.123/y)+(z-w))-(3.123+(y*(z/w))))-(((3.123/y)*(z-w))/(3.123-((y*z)*w))))"
-"((((3.123/y)+(z/w))-((3.123-y)-(z+w)))-(((3.123+y)/(z-w))/((3.123-y)*(z*w))))"
-"((((3.123/y)-(z*w))/((3.123-y)*(z+w)))/(((3.123-y)+(z+w))-((3.123*y)*(z+w))))"
-"((((3.123/y)-(z+w))-((3.123*y)/(z-w)))-(((3.123/y)/(z+w))/(3.123-((y+z)*w))))"
-"((((3.123/y)-(z-w))/(3.123+(y/(z*w))))/((3.123-(y*(z/w)))-(3.123-((y/z)*w))))"
-"((((3.123/y)-(z/w))*((3.123-y)+(z+w)))*(((3.123-y)-(z+w))+((3.123-y)*(z/w))))"
-"((((3.123/y)/(z+w))/(3.123-((y+z)*w)))/((3.123-((y+z)/w))-((3.123*y)-(z/w))))"
-"((((3.123/y)/(z-w))-(3.123-((y-z)*w)))-((3.123-((y-z)/w))/((3.123/y)-(z/w))))"
-"((((x*5.123)*(z+w))+(x+((5.123/z)/w)))+((x+((5.123/z)+w))*((x*5.123)+(z*w))))"
-"((((x*5.123)*(z-w))*(x-((5.123*z)/w)))*((x-((5.123-z)*w))+((x/5.123)-(z*w))))"
-"((((x*5.123)+(z*w))-((x+5.123)-(z-w)))-(((x-5.123)-(z/w))/((x+5.123)/(z*w))))"
-"((((x*5.123)+(z+w))*((x/5.123)/(z-w)))*(((x*5.123)/(z-w))+(x-((5.123-z)/w))))"
-"((((x*5.123)+(z-w))+((x/5.123)*(z-w)))+(((x*5.123)*(z-w))*(x-((5.123*z)/w))))"
-"((((x*5.123)+(z/w))/((x+5.123)*(z-w)))/(((x+5.123)+(z-w))-((x-5.123)/(z*w))))"
-"((((x*5.123)-(z*w))*((x+5.123)+(z-w)))*(((x+5.123)-(z-w))+((x+5.123)/(z/w))))"
-"((((x*5.123)-(z+w))+((x/5.123)/(z+w)))+(((x*5.123)/(z+w))*(x-((5.123+z)/w))))"
-"((((x*5.123)-(z-w))*(x-(5.123*(z/w))))*((x+(5.123*(z/w)))+(x-((5.123/z)/w))))"
-"((((x*5.123)-(z/w))+((x+5.123)/(z-w)))+(((x+5.123)*(z-w))*((x-5.123)/(z/w))))"
-"((((x*5.123)/(z+w))*(x-((5.123+z)/w)))*((x+((5.123/z)*w))+((x*5.123)+(z/w))))"
-"((((x*5.123)/(z-w))+(x-((5.123-z)/w)))+((x-((5.123+z)*w))*((x/5.123)+(z/w))))"
-"((((x*y)*(7.123+w))+(x+((y/7.123)/w)))+((x+((y/7.123)+w))*((x*y)+(7.123*w))))"
-"((((x*y)*(7.123-w))*(x-((y*7.123)/w)))*((x-((y-7.123)*w))+((x/y)-(7.123*w))))"
-"((((x*y)*(z+9.123))+(x+((y/z)/9.123)))+((x+((y/z)+9.123))*((x*y)+(z*9.123))))"
-"((((x*y)*(z-9.123))*(x-((y*z)/9.123)))*((x-((y-z)*9.123))+((x/y)-(z*9.123))))"
-"((((x*y)+(7.123*w))-((x+y)-(7.123-w)))-(((x-y)-(7.123/w))/((x+y)/(7.123*w))))"
-"((((x*y)+(7.123+w))*((x/y)/(7.123-w)))*(((x*y)/(7.123-w))+(x-((y-7.123)/w))))"
-"((((x*y)+(7.123-w))+((x/y)*(7.123-w)))+(((x*y)*(7.123-w))*(x-((y*7.123)/w))))"
-"((((x*y)+(7.123/w))/((x+y)*(7.123-w)))/(((x+y)+(7.123-w))-((x-y)/(7.123*w))))"
-"((((x*y)+(z*9.123))-((x+y)-(z-9.123)))-(((x-y)-(z/9.123))/((x+y)/(z*9.123))))"
-"((((x*y)+(z+9.123))*((x/y)/(z-9.123)))*(((x*y)/(z-9.123))+(x-((y-z)/9.123))))"
-"((((x*y)+(z-9.123))+((x/y)*(z-9.123)))+(((x*y)*(z-9.123))*(x-((y*z)/9.123))))"
-"((((x*y)+(z/9.123))/((x+y)*(z-9.123)))/(((x+y)+(z-9.123))-((x-y)/(z*9.123))))"
-"((((x*y)-(7.123*w))*((x+y)+(7.123-w)))*(((x+y)-(7.123-w))+((x+y)/(7.123/w))))"
-"((((x*y)-(7.123+w))+((x/y)/(7.123+w)))+(((x*y)/(7.123+w))*(x-((y+7.123)/w))))"
-"((((x*y)-(7.123-w))*(x-(y*(7.123/w))))*((x+(y*(7.123/w)))+(x-((y/7.123)/w))))"
-"((((x*y)-(7.123/w))+((x+y)/(7.123-w)))+(((x+y)*(7.123-w))*((x-y)/(7.123/w))))"
-"((((x*y)-(z*9.123))*((x+y)+(z-9.123)))*(((x+y)-(z-9.123))+((x+y)/(z/9.123))))"
-"((((x*y)-(z+9.123))+((x/y)/(z+9.123)))+(((x*y)/(z+9.123))*(x-((y+z)/9.123))))"
-"((((x*y)-(z-9.123))*(x-(y*(z/9.123))))*((x+(y*(z/9.123)))+(x-((y/z)/9.123))))"
-"((((x*y)-(z/9.123))+((x+y)/(z-9.123)))+(((x+y)*(z-9.123))*((x-y)/(z/9.123))))"
-"((((x*y)/(7.123+w))*(x-((y+7.123)/w)))*((x+((y/7.123)*w))+((x*y)+(7.123/w))))"
-"((((x*y)/(7.123-w))+(x-((y-7.123)/w)))+((x-((y+7.123)*w))*((x/y)+(7.123/w))))"
-"((((x*y)/(z+9.123))*(x-((y+z)/9.123)))*((x+((y/z)*9.123))+((x*y)+(z/9.123))))"
-"((((x*y)/(z-9.123))+(x-((y-z)/9.123)))+((x-((y+z)*9.123))*((x/y)+(z/9.123))))"
-"((((x+5.123)*(z*w))+(x-(5.123/(z*w))))+((x+(5.123/(z*w)))*(((x+5.123)*z)-w)))"
-"((((x+5.123)*(z-w))*((x-5.123)/(z/w)))*(((x-5.123)/(z*w))+(x+((5.123-z)*w))))"
-"((((x+5.123)*(z/w))-(x+((5.123+z)/w)))-((x-(5.123/(z*w)))/(((x-5.123)*z)-w)))"
-"((((x+5.123)+(z*w))*((x/5.123)+(z-w)))*(((x*5.123)+(z-w))+((x/5.123)*(z-w))))"
-"((((x+5.123)+(z-w))-((x-5.123)/(z*w)))-(((x+5.123)/(z/w))/(x+((5.123-z)/w))))"
-"((((x+5.123)+(z/w))/((x*5.123)-(z-w)))/(((x/5.123)+(z-w))-(x+(5.123*(z/w)))))"
-"((((x+5.123)-(z*w))+((x/5.123)+(z+w)))+(((x*5.123)+(z+w))*((x/5.123)/(z-w))))"
-"((((x+5.123)-(z-w))+((x+5.123)/(z/w)))+(((x+5.123)/(z*w))*(x+((5.123+z)*w))))"
-"((((x+5.123)-(z/w))-((x*5.123)+(z-w)))-(((x/5.123)+(z+w))/((x*5.123)*(z-w))))"
-"((((x+5.123)/(z*w))*(x+((5.123+z)*w)))*((x+((5.123+z)/w))+(((x*5.123)*z)-w)))"
-"((((x+5.123)/(z-w))/((x-5.123)*(z*w)))/(((x-5.123)/(z/w))-(x+((5.123*z)/w))))"
-"((((x+5.123)/(z/w))/(x+((5.123-z)/w)))/((x+((5.123+z)*w))-(((x/5.123)*z)-w)))"
-"((((x+y)*(7.123*w))+(x-(y/(7.123*w))))+((x+(y/(7.123*w)))*(((x+y)*7.123)-w)))"
-"((((x+y)*(7.123-w))*((x-y)/(7.123/w)))*(((x-y)/(7.123*w))+(x+((y-7.123)*w))))"
-"((((x+y)*(7.123/w))-(x+((y+7.123)/w)))-((x-(y/(7.123*w)))/(((x-y)*7.123)-w)))"
-"((((x+y)*(z*9.123))+(x-(y/(z*9.123))))+((x+(y/(z*9.123)))*(((x+y)*z)-9.123)))"
-"((((x+y)*(z-9.123))*((x-y)/(z/9.123)))*(((x-y)/(z*9.123))+(x+((y-z)*9.123))))"
-"((((x+y)*(z/9.123))-(x+((y+z)/9.123)))-((x-(y/(z*9.123)))/(((x-y)*z)-9.123)))"
-"((((x+y)+(7.123*w))*((x/y)+(7.123-w)))*(((x*y)+(7.123-w))+((x/y)*(7.123-w))))"
-"((((x+y)+(7.123-w))-((x-y)/(7.123*w)))-(((x+y)/(7.123/w))/(x+((y-7.123)/w))))"
-"((((x+y)+(7.123/w))/((x*y)-(7.123-w)))/(((x/y)+(7.123-w))-(x+(y*(7.123/w)))))"
-"((((x+y)+(z*9.123))*((x/y)+(z-9.123)))*(((x*y)+(z-9.123))+((x/y)*(z-9.123))))"
-"((((x+y)+(z-9.123))-((x-y)/(z*9.123)))-(((x+y)/(z/9.123))/(x+((y-z)/9.123))))"
-"((((x+y)+(z/9.123))/((x*y)-(z-9.123)))/(((x/y)+(z-9.123))-(x+(y*(z/9.123)))))"
-"((((x+y)-(7.123*w))+((x/y)+(7.123+w)))+(((x*y)+(7.123+w))*((x/y)/(7.123-w))))"
-"((((x+y)-(7.123-w))+((x+y)/(7.123/w)))+(((x+y)/(7.123*w))*(x+((y+7.123)*w))))"
-"((((x+y)-(7.123/w))-((x*y)+(7.123-w)))-(((x/y)+(7.123+w))/((x*y)*(7.123-w))))"
-"((((x+y)-(z*9.123))+((x/y)+(z+9.123)))+(((x*y)+(z+9.123))*((x/y)/(z-9.123))))"
-"((((x+y)-(z-9.123))+((x+y)/(z/9.123)))+(((x+y)/(z*9.123))*(x+((y+z)*9.123))))"
-"((((x+y)-(z/9.123))-((x*y)+(z-9.123)))-(((x/y)+(z+9.123))/((x*y)*(z-9.123))))"
-"((((x+y)/(7.123*w))*(x+((y+7.123)*w)))*((x+((y+7.123)/w))+(((x*y)*7.123)-w)))"
-"((((x+y)/(7.123-w))/((x-y)*(7.123*w)))/(((x-y)/(7.123/w))-(x+((y*7.123)/w))))"
-"((((x+y)/(7.123/w))/(x+((y-7.123)/w)))/((x+((y+7.123)*w))-(((x/y)*7.123)-w)))"
-"((((x+y)/(z*9.123))*(x+((y+z)*9.123)))*((x+((y+z)/9.123))+(((x*y)*z)-9.123)))"
-"((((x+y)/(z-9.123))/((x-y)*(z*9.123)))/(((x-y)/(z/9.123))-(x+((y*z)/9.123))))"
-"((((x+y)/(z/9.123))/(x+((y-z)/9.123)))/((x+((y+z)*9.123))-(((x/y)*z)-9.123)))"
-"((((x-5.123)*(z*w))*(x+((5.123*z)*w)))*((x+((5.123*z)/w))+(((x*5.123)/z)-w)))"
-"((((x-5.123)*(z+w))*((x/5.123)*(z+w)))*(((x*5.123)*(z+w))+(x+((5.123/z)/w))))"
-"((((x-5.123)*(z/w))/(x+((5.123/z)+w)))/((x+((5.123*z)*w))-(((x/5.123)/z)-w)))"
-"((((x-5.123)+(z*w))+((x/5.123)-(z-w)))+(((x*5.123)-(z-w))*(x-(5.123*(z/w)))))"
-"((((x-5.123)+(z+w))-((x*5.123)*(z+w)))-(((x-5.123)*(z/w))/(x+((5.123/z)+w))))"
-"((((x-5.123)+(z/w))-((x+5.123)*(z*w)))-(((x/5.123)-(z-w))/(x+(5.123/(z*w)))))"
-"((((x-5.123)-(z*w))*((x+5.123)*(z/w)))*(((x+5.123)*(z*w))+(x-(5.123/(z*w)))))"
-"((((x-5.123)-(z+w))+((x-5.123)*(z/w)))+(((x-5.123)*(z*w))*(x+((5.123*z)*w))))"
-"((((x-5.123)-(z/w))/((x+5.123)/(z*w)))/(((x+5.123)*(z/w))-(x+((5.123+z)/w))))"
-"((((x-5.123)/(z*w))+(x+((5.123-z)*w)))+((x+((5.123-z)/w))*(((x+5.123)/z)-w)))"
-"((((x-5.123)/(z+w))/((x*5.123)/(z+w)))/(((x/5.123)*(z+w))-(x+((5.123/z)*w))))"
-"((((x-5.123)/(z/w))-(x+((5.123*z)/w)))-((x+((5.123-z)*w))/(((x-5.123)/z)-w)))"
-"((((x-y)*(7.123*w))*(x+((y*7.123)*w)))*((x+((y*7.123)/w))+(((x*y)/7.123)-w)))"
-"((((x-y)*(7.123+w))*((x/y)*(7.123+w)))*(((x*y)*(7.123+w))+(x+((y/7.123)/w))))"
-"((((x-y)*(7.123/w))/(x+((y/7.123)+w)))/((x+((y*7.123)*w))-(((x/y)/7.123)-w)))"
-"((((x-y)*(z*9.123))*(x+((y*z)*9.123)))*((x+((y*z)/9.123))+(((x*y)/z)-9.123)))"
-"((((x-y)*(z+9.123))*((x/y)*(z+9.123)))*(((x*y)*(z+9.123))+(x+((y/z)/9.123))))"
-"((((x-y)*(z/9.123))/(x+((y/z)+9.123)))/((x+((y*z)*9.123))-(((x/y)/z)-9.123)))"
-"((((x-y)+(7.123*w))+((x/y)-(7.123-w)))+(((x*y)-(7.123-w))*(x-(y*(7.123/w)))))"
-"((((x-y)+(7.123+w))-((x*y)*(7.123+w)))-(((x-y)*(7.123/w))/(x+((y/7.123)+w))))"
-"((((x-y)+(7.123/w))-((x+y)*(7.123*w)))-(((x/y)-(7.123-w))/(x+(y/(7.123*w)))))"
-"((((x-y)+(z*9.123))+((x/y)-(z-9.123)))+(((x*y)-(z-9.123))*(x-(y*(z/9.123)))))"
-"((((x-y)+(z+9.123))-((x*y)*(z+9.123)))-(((x-y)*(z/9.123))/(x+((y/z)+9.123))))"
-"((((x-y)+(z/9.123))-((x+y)*(z*9.123)))-(((x/y)-(z-9.123))/(x+(y/(z*9.123)))))"
-"((((x-y)-(7.123*w))*((x+y)*(7.123/w)))*(((x+y)*(7.123*w))+(x-(y/(7.123*w)))))"
-"((((x-y)-(7.123+w))+((x-y)*(7.123/w)))+(((x-y)*(7.123*w))*(x+((y*7.123)*w))))"
-"((((x-y)-(7.123/w))/((x+y)/(7.123*w)))/(((x+y)*(7.123/w))-(x+((y+7.123)/w))))"
-"((((x-y)-(z*9.123))*((x+y)*(z/9.123)))*(((x+y)*(z*9.123))+(x-(y/(z*9.123)))))"
-"((((x-y)-(z+9.123))+((x-y)*(z/9.123)))+(((x-y)*(z*9.123))*(x+((y*z)*9.123))))"
-"((((x-y)-(z/9.123))/((x+y)/(z*9.123)))/(((x+y)*(z/9.123))-(x+((y+z)/9.123))))"
-"((((x-y)/(7.123*w))+(x+((y-7.123)*w)))+((x+((y-7.123)/w))*(((x+y)/7.123)-w)))"
-"((((x-y)/(7.123+w))/((x*y)/(7.123+w)))/(((x/y)*(7.123+w))-(x+((y/7.123)*w))))"
-"((((x-y)/(7.123/w))-(x+((y*7.123)/w)))-((x+((y-7.123)*w))/(((x-y)/7.123)-w)))"
-"((((x-y)/(z*9.123))+(x+((y-z)*9.123)))+((x+((y-z)/9.123))*(((x+y)/z)-9.123)))"
-"((((x-y)/(z+9.123))/((x*y)/(z+9.123)))/(((x/y)*(z+9.123))-(x+((y/z)*9.123))))"
-"((((x-y)/(z/9.123))-(x+((y*z)/9.123)))-((x+((y-z)*9.123))/(((x-y)/z)-9.123)))"
-"((((x/5.123)*(z+w))-(x+((5.123/z)*w)))-((x+((5.123/z)/w))/((x*5.123)-(z*w))))"
-"((((x/5.123)*(z-w))/(x-((5.123*z)*w)))/((x-((5.123*z)/w))-(x/(5.123+(z*w)))))"
-"((((x/5.123)+(z+w))/((x*5.123)*(z-w)))/(((x/5.123)/(z-w))-(x-((5.123-z)*w))))"
-"((((x/5.123)+(z-w))-(x+(5.123*(z/w))))-(((x/5.123)*(z-w))/(x-((5.123*z)*w))))"
-"((((x/5.123)+(z/w))-((x-5.123)-(z+w)))-(((x+5.123)/(z-w))/((x-5.123)*(z*w))))"
-"((((x/5.123)-(z*w))/((x-5.123)*(z+w)))/(((x-5.123)+(z+w))-((x*5.123)*(z+w))))"
-"((((x/5.123)-(z+w))-((x*5.123)/(z-w)))-(((x/5.123)/(z+w))/(x-((5.123+z)*w))))"
-"((((x/5.123)-(z-w))/(x+(5.123/(z*w))))/((x-(5.123*(z/w)))-(x-((5.123/z)*w))))"
-"((((x/5.123)-(z/w))*((x-5.123)+(z+w)))*(((x-5.123)-(z+w))+((x-5.123)*(z/w))))"
-"((((x/5.123)/(z+w))/(x-((5.123+z)*w)))/((x-((5.123+z)/w))-((x*5.123)-(z/w))))"
-"((((x/5.123)/(z-w))-(x-((5.123-z)*w)))-((x-((5.123-z)/w))/((x/5.123)-(z/w))))"
-"((((x/y)*(7.123+w))-(x+((y/7.123)*w)))-((x+((y/7.123)/w))/((x*y)-(7.123*w))))"
-"((((x/y)*(7.123-w))/(x-((y*7.123)*w)))/((x-((y*7.123)/w))-(x/(y+(7.123*w)))))"
-"((((x/y)*(z+9.123))-(x+((y/z)*9.123)))-((x+((y/z)/9.123))/((x*y)-(z*9.123))))"
-"((((x/y)*(z-9.123))/(x-((y*z)*9.123)))/((x-((y*z)/9.123))-(x/(y+(z*9.123)))))"
-"((((x/y)+(7.123+w))/((x*y)*(7.123-w)))/(((x/y)/(7.123-w))-(x-((y-7.123)*w))))"
-"((((x/y)+(7.123-w))-(x+(y*(7.123/w))))-(((x/y)*(7.123-w))/(x-((y*7.123)*w))))"
-"((((x/y)+(7.123/w))-((x-y)-(7.123+w)))-(((x+y)/(7.123-w))/((x-y)*(7.123*w))))"
-"((((x/y)+(z+9.123))/((x*y)*(z-9.123)))/(((x/y)/(z-9.123))-(x-((y-z)*9.123))))"
-"((((x/y)+(z-9.123))-(x+(y*(z/9.123))))-(((x/y)*(z-9.123))/(x-((y*z)*9.123))))"
-"((((x/y)+(z/9.123))-((x-y)-(z+9.123)))-(((x+y)/(z-9.123))/((x-y)*(z*9.123))))"
-"((((x/y)-(7.123*w))/((x-y)*(7.123+w)))/(((x-y)+(7.123+w))-((x*y)*(7.123+w))))"
-"((((x/y)-(7.123+w))-((x*y)/(7.123-w)))-(((x/y)/(7.123+w))/(x-((y+7.123)*w))))"
-"((((x/y)-(7.123-w))/(x+(y/(7.123*w))))/((x-(y*(7.123/w)))-(x-((y/7.123)*w))))"
-"((((x/y)-(7.123/w))*((x-y)+(7.123+w)))*(((x-y)-(7.123+w))+((x-y)*(7.123/w))))"
-"((((x/y)-(z*9.123))/((x-y)*(z+9.123)))/(((x-y)+(z+9.123))-((x*y)*(z+9.123))))"
-"((((x/y)-(z+9.123))-((x*y)/(z-9.123)))-(((x/y)/(z+9.123))/(x-((y+z)*9.123))))"
-"((((x/y)-(z-9.123))/(x+(y/(z*9.123))))/((x-(y*(z/9.123)))-(x-((y/z)*9.123))))"
-"((((x/y)-(z/9.123))*((x-y)+(z+9.123)))*(((x-y)-(z+9.123))+((x-y)*(z/9.123))))"
-"((((x/y)/(7.123+w))/(x-((y+7.123)*w)))/((x-((y+7.123)/w))-((x*y)-(7.123/w))))"
-"((((x/y)/(7.123-w))-(x-((y-7.123)*w)))-((x-((y-7.123)/w))/((x/y)-(7.123/w))))"
-"((((x/y)/(z+9.123))/(x-((y+z)*9.123)))/((x-((y+z)/9.123))-((x*y)-(z/9.123))))"
-"((((x/y)/(z-9.123))-(x-((y-z)*9.123)))-((x-((y-z)/9.123))/((x/y)-(z/9.123))))"
-"(((3.123*(y+(z*w)))*((3.123/y)-(z+w)))*(((3.123*y)-(z+w))+((3.123/y)/(z+w))))"
-"(((3.123*(y-(z*w)))/((3.123*y)+(z+w)))/(((3.123/y)-(z+w))-((3.123*y)/(z-w))))"
-"(((3.123+((y*z)*w))-(((3.123/y)/z)-w))-((((3.123*y)/z)-w)/((3.123-y)-(z*w))))"
-"(((3.123+((y*z)/w))+(((3.123*y)/z)-w))+((((3.123-y)/z)-w)*((3.123-y)+(z/w))))"
-"(((3.123+((y+z)*w))-(((3.123/y)*z)-w))-((((3.123*y)*z)-w)/((3.123+y)+(z*w))))"
-"(((3.123+((y+z)/w))+(((3.123*y)*z)-w))+((((3.123-y)*z)-w)*((3.123+y)-(z/w))))"
-"(((3.123+((y-z)*w))/(((3.123-y)/z)-w))/((((3.123+y)/z)-w)-((3.123-y)+(z*w))))"
-"(((3.123+((y-z)/w))*(((3.123+y)/z)-w))*((((3.123/y)*z)-w)+((3.123+y)+(z/w))))"
-"(((3.123+((y/z)*w))+((3.123*y)+(z/w)))+(((3.123*y)-(z*w))*((3.123+y)+(z-w))))"
-"(((3.123+((y/z)+w))*((3.123*y)+(z*w)))*((((3.123/y)/z)-w)+((3.123-y)-(z/w))))"
-"(((3.123+((y/z)/w))/((3.123*y)-(z*w)))/(((3.123*y)+(z*w))-((3.123+y)-(z-w))))"
-"(((3.123+(y*(z/w)))+(3.123-((y/z)/w)))+((3.123-((y*z)*w))*(3.123/(y-(z*w)))))"
-"(((3.123+(y/(z*w)))*(((3.123+y)*z)-w))*((3.123-((y/z)*w))+(3.123*(y-(z*w)))))"
-"(((3.123-((y*z)*w))*(3.123/(y-(z*w))))*((3.123/(y+(z*w)))+((3.123-y)/(z+w))))"
-"(((3.123-((y*z)/w))-(3.123/(y+(z*w))))-(((3.123/y)-(z*w))/((3.123-y)*(z+w))))"
-"(((3.123-((y+z)*w))*((3.123/y)+(z/w)))*(((3.123*y)-(z/w))+((3.123+y)/(z-w))))"
-"(((3.123-((y+z)/w))-((3.123*y)-(z/w)))-(((3.123*y)+(z/w))/((3.123+y)*(z-w))))"
-"(((3.123-((y-z)*w))+((3.123/y)-(z*w)))+(((3.123/y)-(z/w))*((3.123-y)+(z+w))))"
-"(((3.123-((y-z)/w))/((3.123/y)-(z/w)))/(((3.123/y)+(z/w))-((3.123-y)-(z+w))))"
-"(((3.123-((y/z)*w))+(3.123*(y-(z*w))))+((3.123*(y+(z*w)))*((3.123/y)-(z+w))))"
-"(((3.123-((y/z)/w))/(3.123*(y+(z*w))))/((3.123/(y-(z*w)))-((3.123*y)-(z+w))))"
-"(((3.123-(y*(z/w)))-(3.123-((y/z)*w)))-((3.123-((y/z)/w))/(3.123*(y+(z*w)))))"
-"(((3.123-(y/(z*w)))/(((3.123-y)*z)-w))/((((3.123+y)*z)-w)-((3.123+y)-(z*w))))"
-"(((3.123/(y+(z*w)))+((3.123-y)/(z+w)))+(((3.123-y)*(z+w))*((3.123/y)*(z+w))))"
-"(((3.123/(y-(z*w)))-((3.123*y)-(z+w)))-(((3.123-y)/(z+w))/((3.123*y)/(z+w))))"
-"(((x*(5.123+(z*w)))*((x/5.123)-(z+w)))*(((x*5.123)-(z+w))+((x/5.123)/(z+w))))"
-"(((x*(5.123-(z*w)))/((x*5.123)+(z+w)))/(((x/5.123)-(z+w))-((x*5.123)/(z-w))))"
-"(((x*(y+(7.123*w)))*((x/y)-(7.123+w)))*(((x*y)-(7.123+w))+((x/y)/(7.123+w))))"
-"(((x*(y+(z*9.123)))*((x/y)-(z+9.123)))*(((x*y)-(z+9.123))+((x/y)/(z+9.123))))"
-"(((x*(y-(7.123*w)))/((x*y)+(7.123+w)))/(((x/y)-(7.123+w))-((x*y)/(7.123-w))))"
-"(((x*(y-(z*9.123)))/((x*y)+(z+9.123)))/(((x/y)-(z+9.123))-((x*y)/(z-9.123))))"
-"(((x+((5.123*z)*w))-(((x/5.123)/z)-w))-((((x*5.123)/z)-w)/((x-5.123)-(z*w))))"
-"(((x+((5.123*z)/w))+(((x*5.123)/z)-w))+((((x-5.123)/z)-w)*((x-5.123)+(z/w))))"
-"(((x+((5.123+z)*w))-(((x/5.123)*z)-w))-((((x*5.123)*z)-w)/((x+5.123)+(z*w))))"
-"(((x+((5.123+z)/w))+(((x*5.123)*z)-w))+((((x-5.123)*z)-w)*((x+5.123)-(z/w))))"
-"(((x+((5.123-z)*w))/(((x-5.123)/z)-w))/((((x+5.123)/z)-w)-((x-5.123)+(z*w))))"
-"(((x+((5.123-z)/w))*(((x+5.123)/z)-w))*((((x/5.123)*z)-w)+((x+5.123)+(z/w))))"
-"(((x+((5.123/z)*w))+((x*5.123)+(z/w)))+(((x*5.123)-(z*w))*((x+5.123)+(z-w))))"
-"(((x+((5.123/z)+w))*((x*5.123)+(z*w)))*((((x/5.123)/z)-w)+((x-5.123)-(z/w))))"
-"(((x+((5.123/z)/w))/((x*5.123)-(z*w)))/(((x*5.123)+(z*w))-((x+5.123)-(z-w))))"
-"(((x+((y*7.123)*w))-(((x/y)/7.123)-w))-((((x*y)/7.123)-w)/((x-y)-(7.123*w))))"
-"(((x+((y*7.123)/w))+(((x*y)/7.123)-w))+((((x-y)/7.123)-w)*((x-y)+(7.123/w))))"
-"(((x+((y*z)*9.123))-(((x/y)/z)-9.123))-((((x*y)/z)-9.123)/((x-y)-(z*9.123))))"
-"(((x+((y*z)/9.123))+(((x*y)/z)-9.123))+((((x-y)/z)-9.123)*((x-y)+(z/9.123))))"
-"(((x+((y+7.123)*w))-(((x/y)*7.123)-w))-((((x*y)*7.123)-w)/((x+y)+(7.123*w))))"
-"(((x+((y+7.123)/w))+(((x*y)*7.123)-w))+((((x-y)*7.123)-w)*((x+y)-(7.123/w))))"
-"(((x+((y+z)*9.123))-(((x/y)*z)-9.123))-((((x*y)*z)-9.123)/((x+y)+(z*9.123))))"
-"(((x+((y+z)/9.123))+(((x*y)*z)-9.123))+((((x-y)*z)-9.123)*((x+y)-(z/9.123))))"
-"(((x+((y-7.123)*w))/(((x-y)/7.123)-w))/((((x+y)/7.123)-w)-((x-y)+(7.123*w))))"
-"(((x+((y-7.123)/w))*(((x+y)/7.123)-w))*((((x/y)*7.123)-w)+((x+y)+(7.123/w))))"
-"(((x+((y-z)*9.123))/(((x-y)/z)-9.123))/((((x+y)/z)-9.123)-((x-y)+(z*9.123))))"
-"(((x+((y-z)/9.123))*(((x+y)/z)-9.123))*((((x/y)*z)-9.123)+((x+y)+(z/9.123))))"
-"(((x+((y/7.123)*w))+((x*y)+(7.123/w)))+(((x*y)-(7.123*w))*((x+y)+(7.123-w))))"
-"(((x+((y/7.123)+w))*((x*y)+(7.123*w)))*((((x/y)/7.123)-w)+((x-y)-(7.123/w))))"
-"(((x+((y/7.123)/w))/((x*y)-(7.123*w)))/(((x*y)+(7.123*w))-((x+y)-(7.123-w))))"
-"(((x+((y/z)*9.123))+((x*y)+(z/9.123)))+(((x*y)-(z*9.123))*((x+y)+(z-9.123))))"
-"(((x+((y/z)+9.123))*((x*y)+(z*9.123)))*((((x/y)/z)-9.123)+((x-y)-(z/9.123))))"
-"(((x+((y/z)/9.123))/((x*y)-(z*9.123)))/(((x*y)+(z*9.123))-((x+y)-(z-9.123))))"
-"(((x+(5.123*(z/w)))+(x-((5.123/z)/w)))+((x-((5.123*z)*w))*(x/(5.123-(z*w)))))"
-"(((x+(5.123/(z*w)))*(((x+5.123)*z)-w))*((x-((5.123/z)*w))+(x*(5.123-(z*w)))))"
-"(((x+(y*(7.123/w)))+(x-((y/7.123)/w)))+((x-((y*7.123)*w))*(x/(y-(7.123*w)))))"
-"(((x+(y*(z/9.123)))+(x-((y/z)/9.123)))+((x-((y*z)*9.123))*(x/(y-(z*9.123)))))"
-"(((x+(y/(7.123*w)))*(((x+y)*7.123)-w))*((x-((y/7.123)*w))+(x*(y-(7.123*w)))))"
-"(((x+(y/(z*9.123)))*(((x+y)*z)-9.123))*((x-((y/z)*9.123))+(x*(y-(z*9.123)))))"
-"(((x-((5.123*z)*w))*(x/(5.123-(z*w))))*((x/(5.123+(z*w)))+((x-5.123)/(z+w))))"
-"(((x-((5.123*z)/w))-(x/(5.123+(z*w))))-(((x/5.123)-(z*w))/((x-5.123)*(z+w))))"
-"(((x-((5.123+z)*w))*((x/5.123)+(z/w)))*(((x*5.123)-(z/w))+((x+5.123)/(z-w))))"
-"(((x-((5.123+z)/w))-((x*5.123)-(z/w)))-(((x*5.123)+(z/w))/((x+5.123)*(z-w))))"
-"(((x-((5.123-z)*w))+((x/5.123)-(z*w)))+(((x/5.123)-(z/w))*((x-5.123)+(z+w))))"
-"(((x-((5.123-z)/w))/((x/5.123)-(z/w)))/(((x/5.123)+(z/w))-((x-5.123)-(z+w))))"
-"(((x-((5.123/z)*w))+(x*(5.123-(z*w))))+((x*(5.123+(z*w)))*((x/5.123)-(z+w))))"
-"(((x-((5.123/z)/w))/(x*(5.123+(z*w))))/((x/(5.123-(z*w)))-((x*5.123)-(z+w))))"
-"(((x-((y*7.123)*w))*(x/(y-(7.123*w))))*((x/(y+(7.123*w)))+((x-y)/(7.123+w))))"
-"(((x-((y*7.123)/w))-(x/(y+(7.123*w))))-(((x/y)-(7.123*w))/((x-y)*(7.123+w))))"
-"(((x-((y*z)*9.123))*(x/(y-(z*9.123))))*((x/(y+(z*9.123)))+((x-y)/(z+9.123))))"
-"(((x-((y*z)/9.123))-(x/(y+(z*9.123))))-(((x/y)-(z*9.123))/((x-y)*(z+9.123))))"
-"(((x-((y+7.123)*w))*((x/y)+(7.123/w)))*(((x*y)-(7.123/w))+((x+y)/(7.123-w))))"
-"(((x-((y+7.123)/w))-((x*y)-(7.123/w)))-(((x*y)+(7.123/w))/((x+y)*(7.123-w))))"
-"(((x-((y+z)*9.123))*((x/y)+(z/9.123)))*(((x*y)-(z/9.123))+((x+y)/(z-9.123))))"
-"(((x-((y+z)/9.123))-((x*y)-(z/9.123)))-(((x*y)+(z/9.123))/((x+y)*(z-9.123))))"
-"(((x-((y-7.123)*w))+((x/y)-(7.123*w)))+(((x/y)-(7.123/w))*((x-y)+(7.123+w))))"
-"(((x-((y-7.123)/w))/((x/y)-(7.123/w)))/(((x/y)+(7.123/w))-((x-y)-(7.123+w))))"
-"(((x-((y-z)*9.123))+((x/y)-(z*9.123)))+(((x/y)-(z/9.123))*((x-y)+(z+9.123))))"
-"(((x-((y-z)/9.123))/((x/y)-(z/9.123)))/(((x/y)+(z/9.123))-((x-y)-(z+9.123))))"
-"(((x-((y/7.123)*w))+(x*(y-(7.123*w))))+((x*(y+(7.123*w)))*((x/y)-(7.123+w))))"
-"(((x-((y/7.123)/w))/(x*(y+(7.123*w))))/((x/(y-(7.123*w)))-((x*y)-(7.123+w))))"
-"(((x-((y/z)*9.123))+(x*(y-(z*9.123))))+((x*(y+(z*9.123)))*((x/y)-(z+9.123))))"
-"(((x-((y/z)/9.123))/(x*(y+(z*9.123))))/((x/(y-(z*9.123)))-((x*y)-(z+9.123))))"
-"(((x-(5.123*(z/w)))-(x-((5.123/z)*w)))-((x-((5.123/z)/w))/(x*(5.123+(z*w)))))"
-"(((x-(5.123/(z*w)))/(((x-5.123)*z)-w))/((((x+5.123)*z)-w)-((x+5.123)-(z*w))))"
-"(((x-(y*(7.123/w)))-(x-((y/7.123)*w)))-((x-((y/7.123)/w))/(x*(y+(7.123*w)))))"
-"(((x-(y*(z/9.123)))-(x-((y/z)*9.123)))-((x-((y/z)/9.123))/(x*(y+(z*9.123)))))"
-"(((x-(y/(7.123*w)))/(((x-y)*7.123)-w))/((((x+y)*7.123)-w)-((x+y)-(7.123*w))))"
-"(((x-(y/(z*9.123)))/(((x-y)*z)-9.123))/((((x+y)*z)-9.123)-((x+y)-(z*9.123))))"
-"(((x/(5.123+(z*w)))+((x-5.123)/(z+w)))+(((x-5.123)*(z+w))*((x/5.123)*(z+w))))"
-"(((x/(5.123-(z*w)))-((x*5.123)-(z+w)))-(((x-5.123)/(z+w))/((x*5.123)/(z+w))))"
-"(((x/(y+(7.123*w)))+((x-y)/(7.123+w)))+(((x-y)*(7.123+w))*((x/y)*(7.123+w))))"
-"(((x/(y+(z*9.123)))+((x-y)/(z+9.123)))+(((x-y)*(z+9.123))*((x/y)*(z+9.123))))"
-"(((x/(y-(7.123*w)))-((x*y)-(7.123+w)))-(((x-y)/(7.123+w))/((x*y)/(7.123+w))))"
-"(((x/(y-(z*9.123)))-((x*y)-(z+9.123)))-(((x-y)/(z+9.123))/((x*y)/(z+9.123))))"
-"((0.96+(((0.96-((((((((((e+b)+a)/a)*a)-1.01)*b)-3.19)+pi)*b)+e))-a)+2.07))/a)"
-"((b+((((((((((((((2.44*pi)+b)-pi)-b)+a)+e)*a)*a)/2.41)-a)*pi)*a)*2.70)/b))*a)"
-"((pi/((((((((((((b+(((pi-pi)-pi)/b))/a)-e)*a)/e)*a)/e)+pi)-a)/1.82)+b)*a))*a)"
-"(b/((((((pi+(((((((((b+b)*3.92)*a)*a)/pi)/a)*0.27)-0.23)+a))+a)*e)+pi)-a)/e))"
-"cos(((e+((e+(tan((sin((((1.55-(((a+pi)/b)/pi))+pi)+e))-a))+3.94))+2.45))+pi))"
-"((a+(((((((((((a+(((((3.77/pi)+b)+a)+e)+b))+a)-a)+b)-e)+a)-a)-pi)*b)+b)*a))+a)"
-"tan(((a/((((a+(b+(cos(cos(tan((((3.14/3.54)*a)+0.34))))/e)))+b)-pi)+3.13))*e))"
-"(((((((((((123.456-654.321)*1.1)*2.2)*3.3)+4.4)+5.5)+6.6)*7.7)*8.8)+9.9)+10.10)"
-"((1.01*(((((((cos(tan(((sin(((a*b)/a))/pi)+b)))+pi)/b)/b)+a)-e)+b)*2.38))+0.88)"
-"((tan((((((pi+((b*((tan(((a*(e+1.09))-pi))+b)/e))*b))+1.55)+a)+0.01)+pi))/a)*a)"
-"(1.1*(2.2*(3.3*(4.4+(5.5+(6.6+(7.7*(8.8*(9.9*(10.10*(123.456+654.321)))))))))))"
-"2.2*y+z-w-2.2/y+z-w*2.2*y-z-w*2.2/y-z-w-2.2+y*z*w+2.2+y*z/w+2.2+y/z*w-2.2+y/z/w"
-"2.2+y+z/w+2.2+y+z*w+2.2+y-z/w-2.2+y-z*w+2.2+y*z/w*2.2+y*z*w-2.2+y/z+w+2.2+y/z/w"
-"2.2+y/z*w-2.2-y+z/w*2.2-y+z*w*2.2-y-z/w-2.2-y-z*w+2.2-y*z/w+2.2-y*z*w-2.2-y/z/w"
-"2.2-y+z*w*2.2-y+z/w-2.2-y-z*w+2.2-y-z/w*2.2+y-z-w-2.2+y-z-w*2.2+y+z-w*2.2+y+z-w"
-"2.2-y-z+w+2.2-y-z+w+2.2-y+z+w-2.2-y+z+w+2.2*y-z+w*2.2/y-z+w-2.2*y+z+w+2.2/y+z+w"
-"2.2-y/z*w*2.2+y*z-w-2.2-y*z-w+2.2*y*z-w*2.2/y*z-w-2.2+y/z-w*2.2-y/z-w*2.2*y/z-w"
-"2.2-y/z*w*2.2-y/z/w-2.2-y*z*w+2.2-y*z/w*2.2*y*z+w-2.2/y*z+w*2.2*y/z+w*2.2/y/z+w"
-"2.2/y+z*w-2.2/y-z*w*2.2*y+z*w*2.2*y-z*w-2.2+y-z*w+2.2+y-z/w+2.2+y+z*w-2.2+y+z/w"
-"2.2/y/z-w+2.2*y+z*w+2.2*y-z*w-2.2*y+z/w+2.2*y-z/w*2.2/y+z/w-2.2/y-z/w+2.2/y-z*w"
-"sin((((sin((tan((((((((2.98+((a*a)+3.96))/pi)+e)+pi)+e)*a)+a))+a))+3.35)+e)+b))"
-"sin((tan((((((tan(sin(((cos(((((a+2.04)-b)/e)/e))-pi)+e)))+a)+pi)+a)+b)+b))+a))"
-"x*3.3+z-w-x/3.3+z-w*x*3.3-z-w*x/3.3-z-w-x+3.3*z*w+x+3.3*z/w+x+3.3/z*w-x+3.3/z/w"
-"x*y+4.4-w-x/y+4.4-w*x*y-4.4-w*x/y-4.4-w-x+y*4.4*w+x+y*4.4/w+x+y/4.4*w-x+y/4.4/w"
-"x*y+z-5.5-x/y+z-5.5*x*y-z-5.5*x/y-z-5.5-x+y*z*5.5+x+y*z/5.5+x+y/z*5.5-x+y/z/5.5"
-"x+3.3+z/w+x+3.3+z*w+x+3.3-z/w-x+3.3-z*w+x+3.3*z/w*x+3.3*z*w-x+3.3/z+w+x+3.3/z/w"
-"x+3.3/z*w-x-3.3+z/w*x-3.3+z*w*x-3.3-z/w-x-3.3-z*w+x-3.3*z/w+x-3.3*z*w-x-3.3/z/w"
-"x+y+4.4/w+x+y+4.4*w+x+y-4.4/w-x+y-4.4*w+x+y*4.4/w*x+y*4.4*w-x+y/4.4+w+x+y/4.4/w"
-"x+y+z/5.5+x+y+z*5.5+x+y-z/5.5-x+y-z*5.5+x+y*z/5.5*x+y*z*5.5-x+y/z+5.5+x+y/z/5.5"
-"x+y/4.4*w-x-y+4.4/w*x-y+4.4*w*x-y-4.4/w-x-y-4.4*w+x-y*4.4/w+x-y*4.4*w-x-y/4.4/w"
-"x+y/z*5.5-x-y+z/5.5*x-y+z*5.5*x-y-z/5.5-x-y-z*5.5+x-y*z/5.5+x-y*z*5.5-x-y/z/5.5"
-"x-3.3+z*w*x-3.3+z/w-x-3.3-z*w+x-3.3-z/w*x+3.3-z-w-x+3.3-z-w*x+3.3+z-w*x+3.3+z-w"
-"x-3.3-z+w+x-3.3-z+w+x-3.3+z+w-x-3.3+z+w+x*3.3-z+w*x/3.3-z+w-x*3.3+z+w+x/3.3+z+w"
-"x-3.3/z*w*x+3.3*z-w-x-3.3*z-w+x*3.3*z-w*x/3.3*z-w-x+3.3/z-w*x-3.3/z-w*x*3.3/z-w"
-"x-3.3/z*w*x-3.3/z/w-x-3.3*z*w+x-3.3*z/w*x*3.3*z+w-x/3.3*z+w*x*3.3/z+w*x/3.3/z+w"
-"x-y+4.4*w*x-y+4.4/w-x-y-4.4*w+x-y-4.4/w*x+y-4.4-w-x+y-4.4-w*x+y+4.4-w*x+y+4.4-w"
-"x-y+z*5.5*x-y+z/5.5-x-y-z*5.5+x-y-z/5.5*x+y-z-5.5-x+y-z-5.5*x+y+z-5.5*x+y+z-5.5"
-"x-y-4.4+w+x-y-4.4+w+x-y+4.4+w-x-y+4.4+w+x*y-4.4+w*x/y-4.4+w-x*y+4.4+w+x/y+4.4+w"
-"x-y-z+5.5+x-y-z+5.5+x-y+z+5.5-x-y+z+5.5+x*y-z+5.5*x/y-z+5.5-x*y+z+5.5+x/y+z+5.5"
-"x-y/4.4*w*x+y*4.4-w-x-y*4.4-w+x*y*4.4-w*x/y*4.4-w-x+y/4.4-w*x-y/4.4-w*x*y/4.4-w"
-"x-y/4.4*w*x-y/4.4/w-x-y*4.4*w+x-y*4.4/w*x*y*4.4+w-x/y*4.4+w*x*y/4.4+w*x/y/4.4+w"
-"x-y/z*5.5*x+y*z-5.5-x-y*z-5.5+x*y*z-5.5*x/y*z-5.5-x+y/z-5.5*x-y/z-5.5*x*y/z-5.5"
-"x-y/z*5.5*x-y/z/5.5-x-y*z*5.5+x-y*z/5.5*x*y*z+5.5-x/y*z+5.5*x*y/z+5.5*x/y/z+5.5"
-"x/3.3+z*w-x/3.3-z*w*x*3.3+z*w*x*3.3-z*w-x+3.3-z*w+x+3.3-z/w+x+3.3+z*w-x+3.3+z/w"
-"x/3.3/z-w+x*3.3+z*w+x*3.3-z*w-x*3.3+z/w+x*3.3-z/w*x/3.3+z/w-x/3.3-z/w+x/3.3-z*w"
-"x/y+4.4*w-x/y-4.4*w*x*y+4.4*w*x*y-4.4*w-x+y-4.4*w+x+y-4.4/w+x+y+4.4*w-x+y+4.4/w"
-"x/y+z*5.5-x/y-z*5.5*x*y+z*5.5*x*y-z*5.5-x+y-z*5.5+x+y-z/5.5+x+y+z*5.5-x+y+z/5.5"
-"x/y/4.4-w+x*y+4.4*w+x*y-4.4*w-x*y+4.4/w+x*y-4.4/w*x/y+4.4/w-x/y-4.4/w+x/y-4.4*w"
-"x/y/z-5.5+x*y+z*5.5+x*y-z*5.5-x*y+z/5.5+x*y-z/5.5*x/y+z/5.5-x/y-z/5.5+x/y-z*5.5"
-"(((2.64+((3.73-((((((b-(((((b/a)-a)/3.37)-b)+a))-0.35)*e)/1.85)+e)+b))+e))*a)-b)"
-"(((a*((cos(((tan(cos((3.45+(sin(tan(((b-b)+b)))*e))))-b)+a))/1.47)+pi))/a)/0.09)"
-"cos((tan(((tan((((((((pi-tan((3.86-pi)))/b)-e)+0.90)/a)+a)/1.49))-pi)/2.24))*b))"
-"tan((((((((tan(cos((b+((((a/a)-0.94)/a)*b))))/pi)*1.89)/1.57)+0.57)-e)/0.15)/b))"
-"(((((((((((((0.38+((((a*a)-e)+b)-e))+3.29)+2.12)+b)/e)+b)/e)*a)*b)+b)+e)+2.06)/e)"
-"(((((((((((((((b+((a+pi)/0.14))-3.53)-a)*e)*b)+b)/b)+3.90)*b)+1.01)/e)+b)+e)*a)+b)"
-"(((((pi+(((((1.97+((((((b+3.90)+a)+a)+a)+a)+2.03))-pi)+0.00)+a)+a))+3.07)*a)+e)*a)"
-"((((tan(sin((((cos(((pi*(tan((e*(b/a)))/a))+b))+b)+3.90)+0.32)))+b)/1.30)-0.08)*a)"
-"(cos(((tan(sin(tan(((((sin(((tan((tan(e)+b))+b)/a))*a)/a)-a)+e))))-e)/1.63))*0.14)"
-"(((((((((((((((1.40+(a-pi))+b)*pi)*e)+pi)+a)+b)*2.51)/a)-3.58)/e)-3.62)-2.28)-e)/e)"
-"((3.123*y*z+3.123+y/z+3.123+y+z+3.123-y*z+3.123+y-z-3.123*y+z-3.123*y-z/3.123/y+z))"
-"((3.123*y*z-3.123/y*z-3.123/y/z-3.123-y/z-3.123*y+z*3.123-y*z*3.123+y*z*3.123+y+z))"
-"((3.123*y+z*3.123-y*z*3.123+y*z*3.123+y+z*3.123+y/z/3.123-y/z/3.123-y*z-3.123/y/z))"
-"((3.123*y+z*3.123/y*z*3.123/y+z*3.123*y/z*3.123/y-z/3.123-y+z/3.123-y-z/3.123+y/z))"
-"((3.123*y-z/3.123+y*z/3.123+y/z/3.123-y/z/3.123+y+z+3.123-y*z+3.123*y+z*3.123/y*z))"
-"((3.123*y-z/3.123/y+z/3.123/y-z/3.123-y+z/3.123/y*z+3.123-y-z+3.123-y/z+3.123+y*z))"
-"((3.123*y/z+3.123/y-z+3.123/y*z+3.123-y-z+3.123/y/z-3.123-y/z-3.123-y*z-3.123+y-z))"
-"((3.123*y/z-3.123+y+z-3.123+y-z-3.123*y+z-3.123+y/z+3.123*y-z+3.123*y/z+3.123/y-z))"
-"((3.123+y*z*3.123+y+z*3.123-y/z+3.123/y-z*3.123-y*z-3.123/y/z-3.123/y*z-3.123*y*z))"
-"((3.123+y*z-3.123*y/z-3.123*y*z-3.123/y*z-3.123/y+z*3.123/y/z*3.123*y+z*3.123-y*z))"
-"((3.123+y+z+3.123-y*z+3.123*y+z*3.123/y*z+3.123*y-z/3.123/y+z/3.123/y-z/3.123-y+z))"
-"((3.123+y+z/3.123/y+z/3.123/y-z/3.123*y+z/3.123/y/z+3.123*y-z+3.123*y*z+3.123+y/z))"
-"((3.123+y-z*3.123*y*z*3.123/y+z*3.123/y/z*3.123/y-z/3.123*y+z/3.123*y-z/3.123+y*z))"
-"((3.123+y-z-3.123*y+z-3.123*y-z/3.123/y+z-3.123*y/z+3.123/y-z+3.123/y*z+3.123-y-z))"
-"((3.123+y/z+3.123*y-z+3.123*y/z+3.123/y-z+3.123*y*z-3.123/y*z-3.123/y/z-3.123-y/z))"
-"((3.123+y/z/3.123-y/z/3.123-y*z-3.123/y/z/3.123*y+z*3.123/y*z*3.123/y+z*3.123*y/z))"
-"((3.123-y*z-3.123+y-z-3.123+y+z/3.123/y+z-3.123-y/z+3.123/y-z+3.123/y/z+3.123*y-z))"
-"((3.123-y*z-3.123/y/z-3.123/y*z-3.123*y*z-3.123/y+z*3.123*y/z*3.123-y+z*3.123+y-z))"
-"((3.123-y+z*3.123+y-z*3.123+y/z+3.123*y-z*3.123+y*z-3.123*y/z-3.123*y*z-3.123/y*z))"
-"((3.123-y-z/3.123+y/z/3.123+y*z-3.123*y/z/3.123+y-z*3.123*y*z*3.123/y+z*3.123/y/z))"
-"((3.123-y/z+3.123+y*z+3.123+y-z*3.123*y*z+3.123+y+z/3.123/y+z/3.123/y-z/3.123*y+z))"
-"((3.123-y/z+3.123/y-z+3.123/y/z+3.123*y-z+3.123/y*z-3.123*y*z-3.123*y/z-3.123+y+z))"
-"((3.123/y*z+3.123-y-z+3.123-y/z+3.123+y*z+3.123-y*z-3.123+y-z-3.123+y+z/3.123/y+z))"
-"((3.123/y*z-3.123*y*z-3.123*y/z-3.123+y+z-3.123-y+z*3.123+y-z*3.123+y/z+3.123*y-z))"
-"((3.123/y+z*3.123*y/z*3.123-y+z*3.123+y-z*3.123-y-z/3.123+y/z/3.123+y*z-3.123*y/z))"
-"((3.123/y+z*3.123/y/z*3.123*y+z*3.123-y*z*3.123*y-z/3.123+y*z/3.123+y/z/3.123-y/z))"
-"((3.123/y-z/3.123*y+z/3.123*y-z/3.123+y*z/3.123*y*z+3.123+y/z+3.123+y+z+3.123-y*z))"
-"((3.123/y-z/3.123-y+z/3.123-y-z/3.123+y/z/3.123-y/z+3.123+y*z+3.123+y-z*3.123*y*z))"
-"((3.123/y/z+3.123*y-z+3.123*y*z+3.123+y/z+3.123*y/z-3.123+y+z-3.123+y-z-3.123*y+z))"
-"((3.123/y/z-3.123-y/z-3.123-y*z-3.123+y-z-3.123+y*z*3.123+y+z*3.123-y/z+3.123/y-z))"
-"((x*5.123*z+x+5.123/z+x+5.123+z+x-5.123*z+x+5.123-z-x*5.123+z-x*5.123-z/x/5.123+z))"
-"((x*5.123*z-x/5.123*z-x/5.123/z-x-5.123/z-x*5.123+z*x-5.123*z*x+5.123*z*x+5.123+z))"
-"((x*5.123+z*x-5.123*z*x+5.123*z*x+5.123+z*x+5.123/z/x-5.123/z/x-5.123*z-x/5.123/z))"
-"((x*5.123+z*x/5.123*z*x/5.123+z*x*5.123/z*x/5.123-z/x-5.123+z/x-5.123-z/x+5.123/z))"
-"((x*5.123-z/x+5.123*z/x+5.123/z/x-5.123/z/x+5.123+z+x-5.123*z+x*5.123+z*x/5.123*z))"
-"((x*5.123-z/x/5.123+z/x/5.123-z/x-5.123+z/x/5.123*z+x-5.123-z+x-5.123/z+x+5.123*z))"
-"((x*5.123/z+x/5.123-z+x/5.123*z+x-5.123-z+x/5.123/z-x-5.123/z-x-5.123*z-x+5.123-z))"
-"((x*5.123/z-x+5.123+z-x+5.123-z-x*5.123+z-x+5.123/z+x*5.123-z+x*5.123/z+x/5.123-z))"
-"((x*y*7.123+x+y/7.123+x+y+7.123+x-y*7.123+x+y-7.123-x*y+7.123-x*y-7.123/x/y+7.123))"
-"((x*y*7.123-x/y*7.123-x/y/7.123-x-y/7.123-x*y+7.123*x-y*7.123*x+y*7.123*x+y+7.123))"
-"((x*y+7.123*x-y*7.123*x+y*7.123*x+y+7.123*x+y/7.123/x-y/7.123/x-y*7.123-x/y/7.123))"
-"((x*y+7.123*x/y*7.123*x/y+7.123*x*y/7.123*x/y-7.123/x-y+7.123/x-y-7.123/x+y/7.123))"
-"((x*y-7.123/x+y*7.123/x+y/7.123/x-y/7.123/x+y+7.123+x-y*7.123+x*y+7.123*x/y*7.123))"
-"((x*y-7.123/x/y+7.123/x/y-7.123/x-y+7.123/x/y*7.123+x-y-7.123+x-y/7.123+x+y*7.123))"
-"((x*y/7.123+x/y-7.123+x/y*7.123+x-y-7.123+x/y/7.123-x-y/7.123-x-y*7.123-x+y-7.123))"
-"((x*y/7.123-x+y+7.123-x+y-7.123-x*y+7.123-x+y/7.123+x*y-7.123+x*y/7.123+x/y-7.123))"
-"((x+5.123*z*x+5.123+z*x-5.123/z+x/5.123-z*x-5.123*z-x/5.123/z-x/5.123*z-x*5.123*z))"
-"((x+5.123*z-x*5.123/z-x*5.123*z-x/5.123*z-x/5.123+z*x/5.123/z*x*5.123+z*x-5.123*z))"
-"((x+5.123+z+x-5.123*z+x*5.123+z*x/5.123*z+x*5.123-z/x/5.123+z/x/5.123-z/x-5.123+z))"
-"((x+5.123+z/x/5.123+z/x/5.123-z/x*5.123+z/x/5.123/z+x*5.123-z+x*5.123*z+x+5.123/z))"
-"((x+5.123-z*x*5.123*z*x/5.123+z*x/5.123/z*x/5.123-z/x*5.123+z/x*5.123-z/x+5.123*z))"
-"((x+5.123-z-x*5.123+z-x*5.123-z/x/5.123+z-x*5.123/z+x/5.123-z+x/5.123*z+x-5.123-z))"
-"((x+5.123/z+x*5.123-z+x*5.123/z+x/5.123-z+x*5.123*z-x/5.123*z-x/5.123/z-x-5.123/z))"
-"((x+5.123/z/x-5.123/z/x-5.123*z-x/5.123/z/x*5.123+z*x/5.123*z*x/5.123+z*x*5.123/z))"
-"((x+y*7.123*x+y+7.123*x-y/7.123+x/y-7.123*x-y*7.123-x/y/7.123-x/y*7.123-x*y*7.123))"
-"((x+y*7.123-x*y/7.123-x*y*7.123-x/y*7.123-x/y+7.123*x/y/7.123*x*y+7.123*x-y*7.123))"
-"((x+y+7.123+x-y*7.123+x*y+7.123*x/y*7.123+x*y-7.123/x/y+7.123/x/y-7.123/x-y+7.123))"
-"((x+y+7.123/x/y+7.123/x/y-7.123/x*y+7.123/x/y/7.123+x*y-7.123+x*y*7.123+x+y/7.123))"
-"((x+y-7.123*x*y*7.123*x/y+7.123*x/y/7.123*x/y-7.123/x*y+7.123/x*y-7.123/x+y*7.123))"
-"((x+y-7.123-x*y+7.123-x*y-7.123/x/y+7.123-x*y/7.123+x/y-7.123+x/y*7.123+x-y-7.123))"
-"((x+y/7.123+x*y-7.123+x*y/7.123+x/y-7.123+x*y*7.123-x/y*7.123-x/y/7.123-x-y/7.123))"
-"((x+y/7.123/x-y/7.123/x-y*7.123-x/y/7.123/x*y+7.123*x/y*7.123*x/y+7.123*x*y/7.123))"
-"((x-5.123*z-x+5.123-z-x+5.123+z/x/5.123+z-x-5.123/z+x/5.123-z+x/5.123/z+x*5.123-z))"
-"((x-5.123*z-x/5.123/z-x/5.123*z-x*5.123*z-x/5.123+z*x*5.123/z*x-5.123+z*x+5.123-z))"
-"((x-5.123+z*x+5.123-z*x+5.123/z+x*5.123-z*x+5.123*z-x*5.123/z-x*5.123*z-x/5.123*z))"
-"((x-5.123-z/x+5.123/z/x+5.123*z-x*5.123/z/x+5.123-z*x*5.123*z*x/5.123+z*x/5.123/z))"
-"((x-5.123/z+x+5.123*z+x+5.123-z*x*5.123*z+x+5.123+z/x/5.123+z/x/5.123-z/x*5.123+z))"
-"((x-5.123/z+x/5.123-z+x/5.123/z+x*5.123-z+x/5.123*z-x*5.123*z-x*5.123/z-x+5.123+z))"
-"((x-y*7.123-x+y-7.123-x+y+7.123/x/y+7.123-x-y/7.123+x/y-7.123+x/y/7.123+x*y-7.123))"
-"((x-y*7.123-x/y/7.123-x/y*7.123-x*y*7.123-x/y+7.123*x*y/7.123*x-y+7.123*x+y-7.123))"
-"((x-y+7.123*x+y-7.123*x+y/7.123+x*y-7.123*x+y*7.123-x*y/7.123-x*y*7.123-x/y*7.123))"
-"((x-y-7.123/x+y/7.123/x+y*7.123-x*y/7.123/x+y-7.123*x*y*7.123*x/y+7.123*x/y/7.123))"
-"((x-y/7.123+x+y*7.123+x+y-7.123*x*y*7.123+x+y+7.123/x/y+7.123/x/y-7.123/x*y+7.123))"
-"((x-y/7.123+x/y-7.123+x/y/7.123+x*y-7.123+x/y*7.123-x*y*7.123-x*y/7.123-x+y+7.123))"
-"((x/5.123*z+x-5.123-z+x-5.123/z+x+5.123*z+x-5.123*z-x+5.123-z-x+5.123+z/x/5.123+z))"
-"((x/5.123*z-x*5.123*z-x*5.123/z-x+5.123+z-x-5.123+z*x+5.123-z*x+5.123/z+x*5.123-z))"
-"((x/5.123+z*x*5.123/z*x-5.123+z*x+5.123-z*x-5.123-z/x+5.123/z/x+5.123*z-x*5.123/z))"
-"((x/5.123+z*x/5.123/z*x*5.123+z*x-5.123*z*x*5.123-z/x+5.123*z/x+5.123/z/x-5.123/z))"
-"((x/5.123-z/x*5.123+z/x*5.123-z/x+5.123*z/x*5.123*z+x+5.123/z+x+5.123+z+x-5.123*z))"
-"((x/5.123-z/x-5.123+z/x-5.123-z/x+5.123/z/x-5.123/z+x+5.123*z+x+5.123-z*x*5.123*z))"
-"((x/5.123/z+x*5.123-z+x*5.123*z+x+5.123/z+x*5.123/z-x+5.123+z-x+5.123-z-x*5.123+z))"
-"((x/5.123/z-x-5.123/z-x-5.123*z-x+5.123-z-x+5.123*z*x+5.123+z*x-5.123/z+x/5.123-z))"
-"((x/y*7.123+x-y-7.123+x-y/7.123+x+y*7.123+x-y*7.123-x+y-7.123-x+y+7.123/x/y+7.123))"
-"((x/y*7.123-x*y*7.123-x*y/7.123-x+y+7.123-x-y+7.123*x+y-7.123*x+y/7.123+x*y-7.123))"
-"((x/y+7.123*x*y/7.123*x-y+7.123*x+y-7.123*x-y-7.123/x+y/7.123/x+y*7.123-x*y/7.123))"
-"((x/y+7.123*x/y/7.123*x*y+7.123*x-y*7.123*x*y-7.123/x+y*7.123/x+y/7.123/x-y/7.123))"
-"((x/y-7.123/x*y+7.123/x*y-7.123/x+y*7.123/x*y*7.123+x+y/7.123+x+y+7.123+x-y*7.123))"
-"((x/y-7.123/x-y+7.123/x-y-7.123/x+y/7.123/x-y/7.123+x+y*7.123+x+y-7.123*x*y*7.123))"
-"((x/y/7.123+x*y-7.123+x*y*7.123+x+y/7.123+x*y/7.123-x+y+7.123-x+y-7.123-x*y+7.123))"
-"((x/y/7.123-x-y/7.123-x-y*7.123-x+y-7.123-x+y*7.123*x+y+7.123*x-y/7.123+x/y-7.123))"
-"((((a+((((((((((2.61*(((a/a)/a)-a))+3.20)/a)+a)+b)+b)/a)+pi)+pi)-2.19))*a)*pi)+1.91)"
-"(e*((tan(((((b+sin(sin((((((((e*a)+b)+0.60)/3.37)+b)/a)-e))))+a)-b)/0.12))+a)+1.04))"
-"2.2*a^10+1.1*a^9+9.9*a^8+8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"(((((((((e/((((((e-(e+((b/b)/a)))+a)/b)/3.64)-a)+a))+b)/3.44)-a)/b)+2.48)*a)/0.59)+a)"
-"((((((pi/((e-(((((((((pi+b)+a)+2.26)/pi)*e)/3.17)+a)/a)-0.67))+a))+a)*3.32)-pi)/a)*e)"
-"(((cos(((sin((b*(pi+((b*((cos((((2.46+1.72)+3.77)+b))/1.02)+a))*a))))/a)+a))*a)-a)*b)"
-"((e-(((((((((((((2.79+((pi+e)/e))*b)*b)*e)-0.20)+a)-a)-0.04)*e)/1.40)+b)+b)+1.23))-b)"
-"(((((((((((((((pi+((b/a)*pi))+pi)/2.70)-pi)*a)+3.10)+a)+0.52)/b)/pi)-b)+b)+a)-3.38)+a)"
-"(((((((((b*(((pi/((((a+((b*a)/b))*2.40)*b)+a))-pi)/b))+e)+3.72)-a)+a)*pi)-pi)/a)/2.84)"
-"((((tan((((3.51+((((1.30-((b-((pi+b)/e))*e))-2.31)/1.96)-0.04))*3.50)+b))/e)/a)+pi)-e)"
-"(((tan((((cos(((((cos((a/(((b+b)+a)+b)))+pi)-e)/a)+e))/2.19)+2.51)*2.55))+1.93)-a)+pi)"
-"((cos((cos(sin(cos(((((cos(((((cos(pi)/3.34)*b)+3.95)+b))*pi)+1.04)*b)/a))))-a))-e)/e)"
-"(0.76-((((((((((((e*((((((a-b)/1.15)-b)*b)+e)/pi))-pi)+a)+e)*a)*a)+e)-e)-a)/e)*pi)+e))"
-"(sin(cos((a-(cos((((sin(((b*cos((((pi+(a/b))-0.82)*0.02)))-a))/0.12)/pi)*a))/b))))/pi)"
-"sin((b-sin(cos((a-(sin(((((cos((sin(sin((((a/e)*3.19)+0.46)))+a))+e)*a)*a)-a))*a))))))"
-"(((((((b*((b+(((((b-(((e*2.43)+b)*a))/b)+1.04)-e)-b))/e))+2.24)+a)+a)/3.02)/3.41)/0.96)"
-"((1.1+a+2.2+b+3.3)+c+4.4+a+5.5+b+6.6+c+7.7)/(1.1+a+2.2+b+3.3+c+4.4+a+5.5+(b+6.6+c+7.7))"
-"(1.1+a+2.2+b+3.3+c+4.4+(a+5.5+b+6.6)+c+7.7)*(1.1+(a+2.2+b+3.3)+c+4.4+a+5.5+b+6.6+c+7.7)"
-"(a/((((b+(((e*(((((pi*((((3.45*((pi+a)+pi))+b)+b)*a))+0.68)+e)+a)/a))+a)+b))+b)*a)-pi))"
-"((((b*((a/(((((((1.94+((((((b+a)+b)-b)-2.67)+b)+b))+pi)/3.93)+e)+pi)+a)/b))-a))+a)*a)-a)"
-"((2.81-(tan((((((sin((cos(tan(((((tan(e)/b)+e)/0.84)+b)))-b))-a)*e)/pi)/2.47)*a))/e))-a)"
-"((((((((((((((((((b-0.27)*a)*0.65)-b)+e)+e)-3.26)*b)*3.54)+b)*b)-a)-a)*0.09)+pi)+b)-a)/e)"
-"((((((((a/b)*(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))"
-"((((((((a/b)+(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))"
-"((((e-sin(((cos(tan((((((2.79+sin((((e/e)*b)*b)))*e)-0.20)+a)-a)))-0.04)*e)))/1.40)+b)+b)"
-"((((((((((pi-(((1.43*(((((((b-e)*pi)-b)*2.49)/a)+b)*e))+a)-e))-pi)+a)/e)/b)/b)+a)*a)-a)/b)"
-"(((((a/((((((a+(((((3.44/((0.99*b)*a))+b)/pi)-2.31)/b))*a)*b)+2.62)/pi)/a))+b)-a)+a)*1.70)"
-"(sin((b-((tan((tan(tan((cos(((cos(cos((((a-(a+b))/a)*b)))+b)/b))+e)))/1.00))/a)/0.33)))+a)"
-"tan(cos(sin(((((((tan(((cos((((pi+(sin(e)-a))*b)+pi))+a)+3.29))+a)+1.23)+3.89)/e)/e)-b))))"
-"((((((((((((((((((pi/0.04)-0.93)/3.48)+pi)+b)+b)+b)+b)/b)-2.93)/b)*b)+a)*3.05)+pi)+e)+a)/b)"
-"((((a+((((tan((cos(((sin(((e+((2.96*0.40)/3.81))*pi))-1.87)+e))+a))/pi)+a)+b)+pi))*e)+a)+a)"
-"(((a*(((b/(((((((pi*(((((e/2.80)*e)*0.33)+b)+a))-e)*3.35)+a)*a)+2.99)-0.38))+b)+pi))-a)+pi)"
-"((sin(cos((cos((((a+((sin(((cos(sin((tan((b/a))+pi)))/a)+b))-b)+0.70))+e)-e))*a)))-b)+1.55)"
-"(b+(((((((((pi+(((((((((b*3.17)+a)+a)+pi)+2.69)/a)/b)+b)*a))*3.97)-b)/b)/b)+e)-e)/3.02)+e))"
-"(b+(((2.46-(e/sin(tan((0.32+(((((((tan(cos(cos(pi)))-2.11)/b)+1.39)+a)-e)+e)/b))))))+e)*e))"
-"cos(((((((tan((e-((cos(tan(((sin((a+(1.81/b)))+b)+b)))/0.05)-a)))*pi)+e)*2.03)-a)+0.52)+a))"
-"cos(((tan(((tan(tan(tan((tan(((((sin((((b+3.63)/a)+a))/b)+b)+0.43)-a))+b))))+b)*pi))+e)+a))"
-"(((((((((((((((((((a/(b-a))+1.06)/b)+a)+pi)*a)*a)+2.39)+b)+b)*e)-b)+b)+0.28)+a)+a)/e)-a)+pi)"
-"(((a*((sin(cos(((((((((e+((((2.78/b)/b)*e)-e))/0.28)+b)+a)-pi)+b)/a)*3.21)))+a)+b))+0.55)-a)"
-"((((((sin(((((((((((0.44+((e-a)*pi))*b)+2.60)*a)+a)-pi)-0.14)+b)+e)-b))+a)+b)+a)+b)+pi)/0.52)"
-"(((((x*y)*z)-(x/(y*z)))-((x/(y/z))-(x-(y/z))))-(((x*(y+z))*(x-(y*z)))*((x+(y*z))*((x+y)+z))))"
-"(((((x*y)+z)*((x/y)*z))*((x/(y+z))*(x*(y/z))))*(((x/(y-z))/(x-(y+z)))/((x-(y-z))/((x+y)/z))))"
-"(((((x*y)-z)/(x/(y+z)))/((x/(y-z))/(x-(y+z))))/(((x/(y*z))+(x-(y-z)))+((x-(y/z))+((x+y)*z))))"
-"(((((x*y)/z)+(x/(y-z)))+((x/(y*z))+(x-(y-z))))+(((x/(y/z))-(x-(y/z)))-((x-(y*z))-((x+y)-z))))"
-"(((((x+y)*z)-((x*y)/z))-(((x*y)*z)-(x/(y*z))))-((((x/y)+z)*(x/(y/z)))*((x*(y+z))*(x-(y*z)))))"
-"(((((x+y)+z)/((x/y)+z))/(((x/y)-z)/(x*(y+z))))/((((x/y)/z)+(x*(y-z)))+((x*(y*z))+(x+(y/z)))))"
-"(((((x+y)-z)*((x*y)*z))*(((x/y)+z)*(x/(y/z))))*((((x/y)-z)/(x*(y+z)))/((x*(y-z))/(x+(y*z)))))"
-"(((((x+y)/z)+((x*y)-z))+(((x*y)/z)+(x/(y-z))))+((((x*y)*z)-(x/(y*z)))-((x/(y/z))-(x-(y/z)))))"
-"(((((x-y)*z)-((x/y)/z))-(((x/y)*z)-(x*(y*z))))-(((x/(y+z))*(x*(y/z)))*((x-(y+z))*(x+(y-z)))))"
-"(((((x-y)/z)+((x/y)-z))+(((x/y)/z)+(x*(y-z))))+((((x/y)*z)-(x*(y*z)))-((x*(y/z))-(x+(y+z)))))"
-"(((((x/y)*z)-(x*(y*z)))-((x*(y/z))-(x+(y+z))))-(((x-(y+z))*(x+(y-z)))*(((x+y)/z)+((x*y)-z))))"
-"(((((x/y)+z)*(x/(y/z)))*((x*(y+z))*(x-(y*z))))*(((x*(y-z))/(x+(y*z)))/((x+(y/z))/((x-y)/z))))"
-"(((((x/y)-z)/(x*(y+z)))/((x*(y-z))/(x+(y*z))))/(((x*(y*z))+(x+(y/z)))+((x+(y+z))+((x-y)*z))))"
-"(((((x/y)/z)+(x*(y-z)))+((x*(y*z))+(x+(y/z))))+(((x*(y/z))-(x+(y+z)))-((x+(y-z))-((x*y)+z))))"
-"((((x*(y*z))+(x+(y/z)))+((x+(y+z))+((x-y)*z)))+(((x+(y-z))-((x*y)+z))-(((x*y)-z)/(x/(y+z)))))"
-"((((x*(y+z))*(x-(y*z)))*((x+(y*z))*((x+y)+z)))*(((x+(y/z))/((x-y)/z))/(((x-y)*z)-((x/y)/z))))"
-"((((x*(y-z))/(x+(y*z)))/((x+(y/z))/((x-y)/z)))/(((x+(y+z))+((x-y)*z))+(((x*y)+z)*((x/y)*z))))"
-"((((x*(y/z))-(x+(y+z)))-((x+(y-z))-((x*y)+z)))-((((x+y)/z)+((x*y)-z))+(((x*y)/z)+(x/(y-z)))))"
-"((((x+(y*z))*((x+y)+z))*(((x-y)/z)+((x/y)-z)))*((((x-y)*z)-((x/y)/z))-(((x/y)*z)-(x*(y*z)))))"
-"((((x+(y+z))+((x-y)*z))+(((x*y)+z)*((x/y)*z)))+((((x*y)-z)/(x/(y+z)))/((x/(y-z))/(x-(y+z)))))"
-"((((x+(y-z))-((x*y)+z))-(((x*y)-z)/(x/(y+z))))-((((x*y)/z)+(x/(y-z)))+((x/(y*z))+(x-(y-z)))))"
-"((((x+(y/z))/((x-y)/z))/(((x-y)*z)-((x/y)/z)))/((((x*y)+z)*((x/y)*z))*((x/(y+z))*(x*(y/z)))))"
-"((((x-(y*z))-((x+y)-z))-(((x+y)+z)/((x/y)+z)))-((((x-y)/z)+((x/y)-z))+(((x/y)/z)+(x*(y-z)))))"
-"((((x-(y+z))*(x+(y-z)))*(((x+y)/z)+((x*y)-z)))*((((x+y)*z)-((x*y)/z))-(((x*y)*z)-(x/(y*z)))))"
-"((((x-(y-z))/((x+y)/z))/(((x+y)*z)-((x*y)/z)))/((((x+y)-z)*((x*y)*z))*(((x/y)+z)*(x/(y/z)))))"
-"((((x-(y/z))+((x+y)*z))+(((x+y)-z)*((x*y)*z)))+((((x+y)+z)/((x/y)+z))/(((x/y)-z)/(x*(y+z)))))"
-"((((x/(y*z))+(x-(y-z)))+((x-(y/z))+((x+y)*z)))+(((x-(y*z))-((x+y)-z))-(((x+y)+z)/((x/y)+z))))"
-"((((x/(y+z))*(x*(y/z)))*((x-(y+z))*(x+(y-z))))*(((x-(y-z))/((x+y)/z))/(((x+y)*z)-((x*y)/z))))"
-"((((x/(y-z))/(x-(y+z)))/((x-(y-z))/((x+y)/z)))/(((x-(y/z))+((x+y)*z))+(((x+y)-z)*((x*y)*z))))"
-"((((x/(y/z))-(x-(y/z)))-((x-(y*z))-((x+y)-z)))-(((x+(y*z))*((x+y)+z))*(((x-y)/z)+((x/y)-z))))"
-"((b*((a*((tan((cos(cos((b*(((((cos(((a-b)+a))+a)+b)*2.48)*a)+0.61))))*a))*0.87)*a))/a))*0.02)"
-"(a/tan((cos(cos(((sin(((tan((((b-((cos((a+((a*b)*e)))+3.06)/b))+a)+e))*0.82)+e))*e)/e)))-e)))"
-"3.3*a^11+2.2*a^10+1.1*a^9+9.9*a^8+8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"(pi/(((((((((e*(a/((((b+(((e*sin(tan(2.63)))+pi)+1.04))*a)+e)/b)))-b)/b)+b)*0.43)-a)+b)/a)-e))"
-"(((((((((((((((((((b+e)+b)+a)+1.48)+1.61)-a)-b)+3.19)+e)/e)+e)+b)+b)-a)+0.58)-e)-1.22)-3.12)+a)"
-"((((((((((((b+(((((((((a*a)+b)*a)-b)-e)-1.21)+b)*a)/e))+1.65)+a)+e)*a)/e)*1.16)+a)+e)*b)+e)+pi)"
-"(((b-((((((((((((((((((2.65*a)+a)/a)-b)*e)+a)/e)+b)-b)*2.96)/a)-pi)+b)+e)/a)+b)+3.14)-b))+e)*e)"
-"((3.47+(((((((pi-(cos(tan(((cos((0.03/(3.18+a)))-b)-3.88)))+3.77))*b)-pi)+b)+3.76)+3.54)*b))-a)"
-"1.1*x^2+2.2*1.1/y^3-2.2-1.1*x^2+2.2-1.1/y^3-2.2-1.1*x^2+2.2+1.1/y^3-2.2*1.1*x^2+2.2-1.1/y^3-2.2"
-"1.1*x^2+2.2+1.1/y^3-2.2*1.1*x^2+2.2*1.1/y^3-2.2+1.1*x^2+2.2-1.1/y^3-2.2+1.1*x^2+2.2+1.1/y^3-2.2"
-"1.1*x^2+2.2-1.1/y^3-2.2+1.1*x^2+2.2*1.1/y^3-2.2*1.1*x^2+2.2*1.1/y^3-2.2-1.1*x^2+2.2+1.1/y^3-2.2"
-"tan(((sin((((((((2.48/tan((sin(tan((((2.85/3.51)+b)*1.83)))*3.19)))/b)+a)+e)*b)+pi)+e))/pi)-a))"
-"(((((((((a*(((((((((((b-e)*e)*3.81)/b)*b)+b)+e)*1.80)+a)-b)+e))/b)*0.25)+b)+b)-2.61)*0.89)/a)*a)"
-"(((((a-((((2.43+((((b/(b+((((a/3.08)-b)+b)*a)))*e)+pi)+2.56))-a)+2.96)*0.40))/3.81)*pi)-1.87)+e)"
-"(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1++1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)"
-"(((((((((cos(((pi-(tan(((sin((((a/a)+b)+e))/b)+1.98))/e))*a))+1.17)+a)/a)-3.84)/a)+2.53)/b)+b)+b)"
-"((((a-(((((((((b*(((((b/((b*b)+b))+a)-a)+3.86)-a))+2.80)-b)+0.73)*a)+a)-2.62)+3.75)+a))*a)+e)+pi)"
-"(a*(((((((((a*(((((((a-((((a+2.82)+a)+b)-e))*a)/b)/b)+b)*b)+a))+1.91)-b)*e)+b)+a)*0.77)+a)/2.57))"
-"((((((((((((1.46-((((((e*0.09)/e)+e)/3.22)/3.48)+pi))-b)/3.41)/2.54)+3.37)*b)+b)+b)/b)-3.57)+a)+b)"
-"(((((((((((((e+(((((((((b*b)/a)*a)+pi)/a)+a)*pi)+e)+pi))+a)+b)*pi)-a)+e)/pi)*0.56)+a)-pi)+pi)/b)*b)"
-"((((((((((((0.51+(((((e+((a/a)-3.02))-e)+3.93)-e)+1.04))/b)/1.41)/a)/b)+a)/pi)/a)-b)-1.72)*b)*0.81)"
-"((((a*((((((((((((e-((((1.35-(1.72+a))-b)*a)+b))+a)*2.34)/a)*pi)+b)+b)*e)-b)+e)+a)+pi))*e)-e)-0.95)"
-"(((b/(2.22+(a+(((((((((((((pi-((a+e)+b))+b)-3.79)/e)*b)-pi)*2.66)/pi)+a)*0.32)+b)/1.09)-b))))+a)-e)"
-"((3.123*y*z+w+3.123+y/z/w+3.123+y/z+w*3.123*y+z*w+3.123+y/z/w/3.123*y-z*w/3.123*y+z*w-3.123+y-z-w))"
-"((3.123*y*z-w*3.123-y*z/w*3.123-y-z*w+3.123/y-z*w*3.123-y*z/w-3.123/y+z*w-3.123/y-z*w/3.123-y*z+w))"
-"((3.123*y*z-w/3.123+y+z*w/3.123+y-z/w-3.123*y+z-w/3.123+y+z*w*3.123/y+z-w*3.123*y+z-w+3.123/y*z-w))"
-"((3.123*y+z*w*3.123/y-z+w*3.123*y-z+w+3.123/y/z+w*3.123/y-z+w-3.123*y/z-w-3.123/y/z+w/3.123-y+z*w))"
-"((3.123*y+z*w-3.123+y-z-w-3.123-y-z/w/3.123+y/z*w-3.123+y-z-w+3.123+y/z/w+3.123+y/z*w*3.123+y+z*w))"
-"((3.123*y+z+w*3.123/y/z-w*3.123*y/z-w+3.123-y-z/w*3.123/y/z-w-3.123-y-z*w-3.123-y-z/w/3.123/y-z/w))"
-"((3.123*y+z-w+3.123/y*z-w+3.123*y*z-w*3.123-y*z/w+3.123/y*z-w/3.123-y*z*w/3.123-y*z/w-3.123/y+z*w))"
-"((3.123*y+z/w/3.123+y*z-w/3.123+y+z-w-3.123-y/z*w/3.123+y*z-w*3.123-y/z/w*3.123-y/z*w+3.123+y-z*w))"
-"((3.123*y-z*w*3.123+y+z-w*3.123+y-z-w+3.123+y/z/w*3.123+y+z-w-3.123-y/z*w-3.123+y/z/w/3.123+y-z/w))"
-"((3.123*y-z*w/3.123*y+z+w/3.123/y-z+w-3.123*y/z-w/3.123*y+z+w*3.123/y/z-w*3.123*y/z-w+3.123-y-z/w))"
-"((3.123*y-z+w+3.123/y/z+w+3.123*y/z+w*3.123-y+z/w+3.123/y/z+w/3.123-y+z*w/3.123-y+z/w-3.123*y-z/w))"
-"((3.123*y-z-w*3.123-y*z/w*3.123+y*z/w+3.123-y/z/w*3.123-y*z/w-3.123-y/z*w-3.123-y/z/w/3.123*y+z*w))"
-"((3.123*y-z/w+3.123+y/z-w+3.123+y*z-w*3.123-y/z/w+3.123+y/z-w/3.123-y*z*w/3.123-y/z/w-3.123+y*z/w))"
-"((3.123*y/z+w*3.123-y+z/w*3.123+y/z*w+3.123*y+z/w*3.123-y+z/w-3.123*y-z/w-3.123*y+z/w/3.123+y*z-w))"
-"((3.123*y/z-w+3.123-y-z/w+3.123-y+z*w*3.123/y+z/w+3.123-y-z/w/3.123/y-z/w/3.123/y+z/w-3.123-y-z+w))"
-"((3.123*y/z-w/3.123-y-z*w/3.123-y+z/w-3.123+y*z*w/3.123-y-z*w*3.123+y*z/w*3.123+y*z*w+3.123-y/z*w))"
-"((3.123+y*z*w+3.123-y/z*w+3.123+y/z*w*3.123+y*z-w+3.123-y/z*w/3.123-y*z-w/3.123+y*z-w-3.123+y-z*w))"
-"((3.123+y*z*w-3.123/y/z-w-3.123*y/z-w/3.123-y-z*w-3.123/y/z-w+3.123-y-z/w+3.123-y-z*w*3.123+y*z/w))"
-"((3.123+y*z-w*3.123-y/z/w*3.123-y/z*w+3.123+y-z*w*3.123-y/z/w-3.123+y*z/w-3.123+y-z*w/3.123-y/z-w))"
-"((3.123+y*z-w-3.123+y-z*w-3.123*y-z*w/3.123*y+z+w-3.123+y-z*w+3.123/y+z+w+3.123*y+z+w*3.123/y/z-w))"
-"((3.123+y*z/w+3.123*y/z-w+3.123-y/z-w*3.123-y+z/w+3.123*y/z-w/3.123-y-z*w/3.123-y+z/w-3.123+y*z*w))"
-"((3.123+y*z/w+3.123-y/z/w+3.123-y*z*w*3.123/y-z*w+3.123-y/z/w/3.123*y+z*w/3.123/y-z*w-3.123*y-z+w))"
-"((3.123+y*z/w-3.123+y+z/w-3.123-y/z*w/3.123-y*z-w-3.123+y+z/w+3.123*y*z-w+3.123-y*z-w*3.123+y-z/w))"
-"((3.123+y+z*w*3.123/y+z-w*3.123*y+z-w+3.123/y*z-w*3.123/y+z-w-3.123+y*z/w-3.123/y*z-w/3.123-y*z*w))"
-"((3.123+y+z*w-3.123/y*z-w-3.123*y*z-w/3.123+y+z*w-3.123/y*z-w+3.123+y+z/w+3.123+y+z*w*3.123/y+z-w))"
-"((3.123+y+z-w-3.123-y/z*w-3.123+y/z/w/3.123+y-z/w-3.123-y/z*w+3.123+y-z*w+3.123+y-z/w*3.123+y/z-w))"
-"((3.123+y+z/w+3.123*y*z-w+3.123-y*z-w*3.123+y-z/w+3.123*y*z-w/3.123+y+z*w/3.123+y-z/w-3.123*y+z-w))"
-"((3.123+y+z/w/3.123*y-z-w/3.123/y+z-w-3.123+y*z/w/3.123*y-z-w*3.123-y*z/w*3.123+y*z/w+3.123-y/z/w))"
-"((3.123+y-z*w+3.123/y+z+w+3.123*y+z+w*3.123/y/z-w+3.123/y+z+w/3.123*y*z-w/3.123/y/z-w-3.123-y-z*w))"
-"((3.123+y-z*w/3.123-y/z-w/3.123+y/z-w-3.123-y+z*w/3.123-y/z-w*3.123-y+z/w*3.123-y+z*w+3.123/y-z-w))"
-"((3.123+y-z-w+3.123+y/z/w+3.123+y/z*w*3.123+y+z*w+3.123+y/z/w/3.123+y-z/w/3.123+y+z*w-3.123/y*z-w))"
-"((3.123+y-z/w*3.123+y/z-w*3.123/y*z-w+3.123+y+z/w*3.123+y/z-w-3.123-y+z*w-3.123+y+z/w/3.123*y-z-w))"
-"((3.123+y-z/w-3.123*y+z-w-3.123/y+z+w/3.123*y*z-w-3.123*y+z-w+3.123/y*z-w+3.123*y*z-w*3.123-y*z/w))"
-"((3.123+y/z*w*3.123+y*z-w*3.123-y/z*w+3.123*y-z*w*3.123+y*z-w-3.123+y-z*w-3.123*y-z*w/3.123*y+z+w))"
-"((3.123+y/z*w*3.123+y+z*w*3.123+y+z/w+3.123*y*z-w*3.123+y+z*w-3.123/y*z-w-3.123*y*z-w/3.123+y+z*w))"
-"((3.123+y/z*w+3.123*y+z/w+3.123*y-z*w*3.123+y+z-w+3.123*y+z/w/3.123+y*z-w/3.123+y+z-w-3.123-y/z*w))"
-"((3.123+y/z+w*3.123*y+z*w*3.123/y/z-w+3.123-y-z/w*3.123*y+z*w-3.123+y-z-w-3.123-y-z/w/3.123+y/z*w))"
-"((3.123+y/z-w-3.123-y+z*w-3.123+y+z/w/3.123*y-z-w-3.123-y+z*w+3.123/y-z-w+3.123*y-z-w*3.123-y*z/w))"
-"((3.123+y/z-w/3.123-y*z*w/3.123-y/z/w-3.123+y*z/w/3.123-y*z*w*3.123+y*z*w*3.123+y*z/w+3.123*y/z-w))"
-"((3.123+y/z/w/3.123*y-z*w/3.123*y+z*w-3.123+y-z-w/3.123*y-z*w*3.123+y+z-w*3.123+y-z-w+3.123+y/z/w))"
-"((3.123+y/z/w/3.123+y-z/w/3.123+y+z*w-3.123/y*z-w/3.123+y-z/w*3.123+y/z-w*3.123/y*z-w+3.123+y+z/w))"
-"((3.123-y*z*w*3.123+y*z*w*3.123+y*z/w+3.123*y/z-w*3.123+y*z*w-3.123/y/z-w-3.123*y/z-w/3.123-y-z*w))"
-"((3.123-y*z*w*3.123/y-z*w*3.123/y+z*w+3.123-y/z+w*3.123/y-z*w-3.123*y-z+w-3.123-y/z+w/3.123*y/z+w))"
-"((3.123-y*z+w*3.123/y*z+w*3.123*y*z+w+3.123+y/z/w*3.123/y*z+w-3.123+y/z*w-3.123+y/z/w/3.123*y-z*w))"
-"((3.123-y*z-w*3.123+y-z/w*3.123+y-z*w+3.123/y+z+w*3.123+y-z/w-3.123*y+z-w-3.123/y+z+w/3.123*y*z-w))"
-"((3.123-y*z/w-3.123-y/z*w-3.123-y/z/w/3.123*y+z*w-3.123-y/z*w+3.123*y-z*w+3.123*y+z*w*3.123/y-z+w))"
-"((3.123-y*z/w-3.123/y+z*w-3.123/y-z*w/3.123-y*z+w-3.123/y+z*w+3.123-y/z+w+3.123-y*z+w*3.123/y*z+w))"
-"((3.123-y*z/w/3.123+y/z+w/3.123+y*z*w-3.123/y/z-w/3.123+y/z+w*3.123*y+z*w*3.123/y/z-w+3.123-y-z/w))"
-"((3.123-y+z*w*3.123/y+z/w*3.123*y-z/w+3.123+y/z-w*3.123/y+z/w-3.123-y-z+w-3.123+y/z-w/3.123-y*z*w))"
-"((3.123-y+z*w+3.123/y-z-w+3.123*y-z-w*3.123-y*z/w+3.123/y-z-w/3.123+y/z*w/3.123-y*z/w-3.123-y/z*w))"
-"((3.123-y+z+w-3.123*y*z+w-3.123-y*z/w/3.123+y/z+w-3.123*y*z+w+3.123+y/z/w+3.123+y/z+w*3.123*y+z*w))"
-"((3.123-y+z/w-3.123*y-z/w-3.123*y+z/w/3.123+y*z-w-3.123*y-z/w+3.123+y/z-w+3.123+y*z-w*3.123-y/z/w))"
-"((3.123-y+z/w-3.123+y*z*w-3.123/y-z-w/3.123+y/z*w-3.123+y*z*w+3.123-y/z*w+3.123+y/z*w*3.123+y*z-w))"
-"((3.123-y-z*w*3.123+y*z/w*3.123+y*z*w+3.123-y/z*w*3.123+y*z/w-3.123+y+z/w-3.123-y/z*w/3.123-y*z-w))"
-"((3.123-y-z*w+3.123/y-z*w+3.123/y-z/w*3.123-y+z+w+3.123/y-z*w/3.123-y*z+w/3.123-y+z+w-3.123*y*z+w))"
-"((3.123-y-z+w+3.123-y*z/w+3.123-y*z*w*3.123+y*z*w+3.123-y*z/w/3.123+y/z+w/3.123+y*z*w-3.123/y/z-w))"
-"((3.123-y-z/w/3.123+y/z*w/3.123+y*z/w-3.123+y+z/w/3.123+y/z*w*3.123+y+z*w*3.123+y+z/w+3.123*y*z-w))"
-"((3.123-y-z/w/3.123/y-z/w/3.123/y+z/w-3.123-y-z+w/3.123/y-z/w*3.123-y+z+w*3.123-y-z+w+3.123-y*z/w))"
-"((3.123-y/z*w+3.123*y-z*w+3.123*y+z*w*3.123/y-z+w+3.123*y-z*w/3.123*y+z+w/3.123/y-z+w-3.123*y/z-w))"
-"((3.123-y/z*w+3.123+y-z*w+3.123+y-z/w*3.123+y/z-w+3.123+y-z*w/3.123-y/z-w/3.123+y/z-w-3.123-y+z*w))"
-"((3.123-y/z*w/3.123-y*z-w/3.123+y*z-w-3.123+y-z*w/3.123-y*z-w*3.123+y-z/w*3.123+y-z*w+3.123/y+z+w))"
-"((3.123-y/z+w/3.123*y/z+w/3.123/y*z+w-3.123+y/z*w/3.123*y/z+w*3.123-y+z/w*3.123+y/z*w+3.123*y+z/w))"
-"((3.123-y/z-w*3.123-y+z/w*3.123-y+z*w+3.123/y-z-w*3.123-y+z/w-3.123+y*z*w-3.123/y-z-w/3.123+y/z*w))"
-"((3.123-y/z/w-3.123+y*z/w-3.123+y-z*w/3.123-y/z-w-3.123+y*z/w+3.123*y/z-w+3.123-y/z-w*3.123-y+z/w))"
-"((3.123-y/z/w/3.123*y+z*w/3.123/y-z*w-3.123*y-z+w/3.123*y+z*w*3.123/y-z+w*3.123*y-z+w+3.123/y/z+w))"
-"((3.123/y*z+w-3.123+y/z*w-3.123+y/z/w/3.123*y-z*w-3.123+y/z*w+3.123*y+z/w+3.123*y-z*w*3.123+y+z-w))"
-"((3.123/y*z-w+3.123+y+z/w+3.123+y+z*w*3.123/y+z-w+3.123+y+z/w/3.123*y-z-w/3.123/y+z-w-3.123+y*z/w))"
-"((3.123/y*z-w/3.123-y*z*w/3.123-y*z/w-3.123/y+z*w/3.123-y*z*w*3.123/y-z*w*3.123/y+z*w+3.123-y/z+w))"
-"((3.123/y+z*w+3.123-y/z+w+3.123-y*z+w*3.123/y*z+w+3.123-y/z+w/3.123*y/z+w/3.123/y*z+w-3.123+y/z*w))"
-"((3.123/y+z+w/3.123*y*z-w/3.123/y/z-w-3.123-y-z*w/3.123*y*z-w*3.123-y*z/w*3.123-y-z*w+3.123/y-z*w))"
-"((3.123/y+z-w-3.123+y*z/w-3.123/y*z-w/3.123-y*z*w-3.123+y*z/w+3.123-y/z/w+3.123-y*z*w*3.123/y-z*w))"
-"((3.123/y+z/w-3.123-y-z+w-3.123+y/z-w/3.123-y*z*w-3.123-y-z+w+3.123-y*z/w+3.123-y*z*w*3.123+y*z*w))"
-"((3.123/y-z*w-3.123*y-z+w-3.123-y/z+w/3.123*y/z+w-3.123*y-z+w+3.123/y/z+w+3.123*y/z+w*3.123-y+z/w))"
-"((3.123/y-z*w/3.123-y*z+w/3.123-y+z+w-3.123*y*z+w/3.123-y*z+w*3.123/y*z+w*3.123*y*z+w+3.123+y/z/w))"
-"((3.123/y-z+w-3.123*y/z-w-3.123/y/z+w/3.123-y+z*w-3.123*y/z-w+3.123-y-z/w+3.123-y+z*w*3.123/y+z/w))"
-"((3.123/y-z-w/3.123+y/z*w/3.123-y*z/w-3.123-y/z*w/3.123+y/z*w*3.123+y*z-w*3.123-y/z*w+3.123*y-z*w))"
-"((3.123/y-z/w*3.123-y+z+w*3.123-y-z+w+3.123-y*z/w*3.123-y+z+w-3.123*y*z+w-3.123-y*z/w/3.123+y/z+w))"
-"((3.123/y/z+w/3.123-y+z*w/3.123-y+z/w-3.123*y-z/w/3.123-y+z*w*3.123/y+z/w*3.123*y-z/w+3.123+y/z-w))"
-"((3.123/y/z-w+3.123-y-z/w+3.123-y-z*w*3.123+y*z/w+3.123-y-z/w/3.123+y/z*w/3.123+y*z/w-3.123+y+z/w))"
-"((3.123/y/z-w-3.123-y-z*w-3.123-y-z/w/3.123/y-z/w-3.123-y-z*w+3.123/y-z*w+3.123/y-z/w*3.123-y+z+w))"
-"((x*5.123*z+w+x+5.123/z/w+x+5.123/z+w*x*5.123+z*w+x+5.123/z/w/x*5.123-z*w/x*5.123+z*w-x+5.123-z-w))"
-"((x*5.123*z-w*x-5.123*z/w*x-5.123-z*w+x/5.123-z*w*x-5.123*z/w-x/5.123+z*w-x/5.123-z*w/x-5.123*z+w))"
-"((x*5.123*z-w/x+5.123+z*w/x+5.123-z/w-x*5.123+z-w/x+5.123+z*w*x/5.123+z-w*x*5.123+z-w+x/5.123*z-w))"
-"((x*5.123+z*w*x/5.123-z+w*x*5.123-z+w+x/5.123/z+w*x/5.123-z+w-x*5.123/z-w-x/5.123/z+w/x-5.123+z*w))"
-"((x*5.123+z*w-x+5.123-z-w-x-5.123-z/w/x+5.123/z*w-x+5.123-z-w+x+5.123/z/w+x+5.123/z*w*x+5.123+z*w))"
-"((x*5.123+z+w*x/5.123/z-w*x*5.123/z-w+x-5.123-z/w*x/5.123/z-w-x-5.123-z*w-x-5.123-z/w/x/5.123-z/w))"
-"((x*5.123+z-w+x/5.123*z-w+x*5.123*z-w*x-5.123*z/w+x/5.123*z-w/x-5.123*z*w/x-5.123*z/w-x/5.123+z*w))"
-"((x*5.123+z/w/x+5.123*z-w/x+5.123+z-w-x-5.123/z*w/x+5.123*z-w*x-5.123/z/w*x-5.123/z*w+x+5.123-z*w))"
-"((x*5.123-z*w*x+5.123+z-w*x+5.123-z-w+x+5.123/z/w*x+5.123+z-w-x-5.123/z*w-x+5.123/z/w/x+5.123-z/w))"
-"((x*5.123-z*w/x*5.123+z+w/x/5.123-z+w-x*5.123/z-w/x*5.123+z+w*x/5.123/z-w*x*5.123/z-w+x-5.123-z/w))"
-"((x*5.123-z+w+x/5.123/z+w+x*5.123/z+w*x-5.123+z/w+x/5.123/z+w/x-5.123+z*w/x-5.123+z/w-x*5.123-z/w))"
-"((x*5.123-z-w*x-5.123*z/w*x+5.123*z/w+x-5.123/z/w*x-5.123*z/w-x-5.123/z*w-x-5.123/z/w/x*5.123+z*w))"
-"((x*5.123-z/w+x+5.123/z-w+x+5.123*z-w*x-5.123/z/w+x+5.123/z-w/x-5.123*z*w/x-5.123/z/w-x+5.123*z/w))"
-"((x*5.123/z+w*x-5.123+z/w*x+5.123/z*w+x*5.123+z/w*x-5.123+z/w-x*5.123-z/w-x*5.123+z/w/x+5.123*z-w))"
-"((x*5.123/z-w+x-5.123-z/w+x-5.123+z*w*x/5.123+z/w+x-5.123-z/w/x/5.123-z/w/x/5.123+z/w-x-5.123-z+w))"
-"((x*5.123/z-w/x-5.123-z*w/x-5.123+z/w-x+5.123*z*w/x-5.123-z*w*x+5.123*z/w*x+5.123*z*w+x-5.123/z*w))"
-"((x*y*7.123+w+x+y/7.123/w+x+y/7.123+w*x*y+7.123*w+x+y/7.123/w/x*y-7.123*w/x*y+7.123*w-x+y-7.123-w))"
-"((x*y*7.123-w*x-y*7.123/w*x-y-7.123*w+x/y-7.123*w*x-y*7.123/w-x/y+7.123*w-x/y-7.123*w/x-y*7.123+w))"
-"((x*y*7.123-w/x+y+7.123*w/x+y-7.123/w-x*y+7.123-w/x+y+7.123*w*x/y+7.123-w*x*y+7.123-w+x/y*7.123-w))"
-"((x*y*z+9.123+x+y/z/9.123+x+y/z+9.123*x*y+z*9.123+x+y/z/9.123/x*y-z*9.123/x*y+z*9.123-x+y-z-9.123))"
-"((x*y*z-9.123*x-y*z/9.123*x-y-z*9.123+x/y-z*9.123*x-y*z/9.123-x/y+z*9.123-x/y-z*9.123/x-y*z+9.123))"
-"((x*y*z-9.123/x+y+z*9.123/x+y-z/9.123-x*y+z-9.123/x+y+z*9.123*x/y+z-9.123*x*y+z-9.123+x/y*z-9.123))"
-"((x*y+7.123*w*x/y-7.123+w*x*y-7.123+w+x/y/7.123+w*x/y-7.123+w-x*y/7.123-w-x/y/7.123+w/x-y+7.123*w))"
-"((x*y+7.123*w-x+y-7.123-w-x-y-7.123/w/x+y/7.123*w-x+y-7.123-w+x+y/7.123/w+x+y/7.123*w*x+y+7.123*w))"
-"((x*y+7.123+w*x/y/7.123-w*x*y/7.123-w+x-y-7.123/w*x/y/7.123-w-x-y-7.123*w-x-y-7.123/w/x/y-7.123/w))"
-"((x*y+7.123-w+x/y*7.123-w+x*y*7.123-w*x-y*7.123/w+x/y*7.123-w/x-y*7.123*w/x-y*7.123/w-x/y+7.123*w))"
-"((x*y+7.123/w/x+y*7.123-w/x+y+7.123-w-x-y/7.123*w/x+y*7.123-w*x-y/7.123/w*x-y/7.123*w+x+y-7.123*w))"
-"((x*y+z*9.123*x/y-z+9.123*x*y-z+9.123+x/y/z+9.123*x/y-z+9.123-x*y/z-9.123-x/y/z+9.123/x-y+z*9.123))"
-"((x*y+z*9.123-x+y-z-9.123-x-y-z/9.123/x+y/z*9.123-x+y-z-9.123+x+y/z/9.123+x+y/z*9.123*x+y+z*9.123))"
-"((x*y+z+9.123*x/y/z-9.123*x*y/z-9.123+x-y-z/9.123*x/y/z-9.123-x-y-z*9.123-x-y-z/9.123/x/y-z/9.123))"
-"((x*y+z-9.123+x/y*z-9.123+x*y*z-9.123*x-y*z/9.123+x/y*z-9.123/x-y*z*9.123/x-y*z/9.123-x/y+z*9.123))"
-"((x*y+z/9.123/x+y*z-9.123/x+y+z-9.123-x-y/z*9.123/x+y*z-9.123*x-y/z/9.123*x-y/z*9.123+x+y-z*9.123))"
-"((x*y-7.123*w*x+y+7.123-w*x+y-7.123-w+x+y/7.123/w*x+y+7.123-w-x-y/7.123*w-x+y/7.123/w/x+y-7.123/w))"
-"((x*y-7.123*w/x*y+7.123+w/x/y-7.123+w-x*y/7.123-w/x*y+7.123+w*x/y/7.123-w*x*y/7.123-w+x-y-7.123/w))"
-"((x*y-7.123+w+x/y/7.123+w+x*y/7.123+w*x-y+7.123/w+x/y/7.123+w/x-y+7.123*w/x-y+7.123/w-x*y-7.123/w))"
-"((x*y-7.123-w*x-y*7.123/w*x+y*7.123/w+x-y/7.123/w*x-y*7.123/w-x-y/7.123*w-x-y/7.123/w/x*y+7.123*w))"
-"((x*y-7.123/w+x+y/7.123-w+x+y*7.123-w*x-y/7.123/w+x+y/7.123-w/x-y*7.123*w/x-y/7.123/w-x+y*7.123/w))"
-"((x*y-z*9.123*x+y+z-9.123*x+y-z-9.123+x+y/z/9.123*x+y+z-9.123-x-y/z*9.123-x+y/z/9.123/x+y-z/9.123))"
-"((x*y-z*9.123/x*y+z+9.123/x/y-z+9.123-x*y/z-9.123/x*y+z+9.123*x/y/z-9.123*x*y/z-9.123+x-y-z/9.123))"
-"((x*y-z+9.123+x/y/z+9.123+x*y/z+9.123*x-y+z/9.123+x/y/z+9.123/x-y+z*9.123/x-y+z/9.123-x*y-z/9.123))"
-"((x*y-z-9.123*x-y*z/9.123*x+y*z/9.123+x-y/z/9.123*x-y*z/9.123-x-y/z*9.123-x-y/z/9.123/x*y+z*9.123))"
-"((x*y-z/9.123+x+y/z-9.123+x+y*z-9.123*x-y/z/9.123+x+y/z-9.123/x-y*z*9.123/x-y/z/9.123-x+y*z/9.123))"
-"((x*y/7.123+w*x-y+7.123/w*x+y/7.123*w+x*y+7.123/w*x-y+7.123/w-x*y-7.123/w-x*y+7.123/w/x+y*7.123-w))"
-"((x*y/7.123-w+x-y-7.123/w+x-y+7.123*w*x/y+7.123/w+x-y-7.123/w/x/y-7.123/w/x/y+7.123/w-x-y-7.123+w))"
-"((x*y/7.123-w/x-y-7.123*w/x-y+7.123/w-x+y*7.123*w/x-y-7.123*w*x+y*7.123/w*x+y*7.123*w+x-y/7.123*w))"
-"((x*y/z+9.123*x-y+z/9.123*x+y/z*9.123+x*y+z/9.123*x-y+z/9.123-x*y-z/9.123-x*y+z/9.123/x+y*z-9.123))"
-"((x*y/z-9.123+x-y-z/9.123+x-y+z*9.123*x/y+z/9.123+x-y-z/9.123/x/y-z/9.123/x/y+z/9.123-x-y-z+9.123))"
-"((x*y/z-9.123/x-y-z*9.123/x-y+z/9.123-x+y*z*9.123/x-y-z*9.123*x+y*z/9.123*x+y*z*9.123+x-y/z*9.123))"
-"((x+5.123*z*w+x-5.123/z*w+x+5.123/z*w*x+5.123*z-w+x-5.123/z*w/x-5.123*z-w/x+5.123*z-w-x+5.123-z*w))"
-"((x+5.123*z*w-x/5.123/z-w-x*5.123/z-w/x-5.123-z*w-x/5.123/z-w+x-5.123-z/w+x-5.123-z*w*x+5.123*z/w))"
-"((x+5.123*z-w*x-5.123/z/w*x-5.123/z*w+x+5.123-z*w*x-5.123/z/w-x+5.123*z/w-x+5.123-z*w/x-5.123/z-w))"
-"((x+5.123*z-w-x+5.123-z*w-x*5.123-z*w/x*5.123+z+w-x+5.123-z*w+x/5.123+z+w+x*5.123+z+w*x/5.123/z-w))"
-"((x+5.123*z/w+x*5.123/z-w+x-5.123/z-w*x-5.123+z/w+x*5.123/z-w/x-5.123-z*w/x-5.123+z/w-x+5.123*z*w))"
-"((x+5.123*z/w+x-5.123/z/w+x-5.123*z*w*x/5.123-z*w+x-5.123/z/w/x*5.123+z*w/x/5.123-z*w-x*5.123-z+w))"
-"((x+5.123*z/w-x+5.123+z/w-x-5.123/z*w/x-5.123*z-w-x+5.123+z/w+x*5.123*z-w+x-5.123*z-w*x+5.123-z/w))"
-"((x+5.123+z*w*x/5.123+z-w*x*5.123+z-w+x/5.123*z-w*x/5.123+z-w-x+5.123*z/w-x/5.123*z-w/x-5.123*z*w))"
-"((x+5.123+z*w-x/5.123*z-w-x*5.123*z-w/x+5.123+z*w-x/5.123*z-w+x+5.123+z/w+x+5.123+z*w*x/5.123+z-w))"
-"((x+5.123+z-w-x-5.123/z*w-x+5.123/z/w/x+5.123-z/w-x-5.123/z*w+x+5.123-z*w+x+5.123-z/w*x+5.123/z-w))"
-"((x+5.123+z/w+x*5.123*z-w+x-5.123*z-w*x+5.123-z/w+x*5.123*z-w/x+5.123+z*w/x+5.123-z/w-x*5.123+z-w))"
-"((x+5.123+z/w/x*5.123-z-w/x/5.123+z-w-x+5.123*z/w/x*5.123-z-w*x-5.123*z/w*x+5.123*z/w+x-5.123/z/w))"
-"((x+5.123-z*w+x/5.123+z+w+x*5.123+z+w*x/5.123/z-w+x/5.123+z+w/x*5.123*z-w/x/5.123/z-w-x-5.123-z*w))"
-"((x+5.123-z*w/x-5.123/z-w/x+5.123/z-w-x-5.123+z*w/x-5.123/z-w*x-5.123+z/w*x-5.123+z*w+x/5.123-z-w))"
-"((x+5.123-z-w+x+5.123/z/w+x+5.123/z*w*x+5.123+z*w+x+5.123/z/w/x+5.123-z/w/x+5.123+z*w-x/5.123*z-w))"
-"((x+5.123-z/w*x+5.123/z-w*x/5.123*z-w+x+5.123+z/w*x+5.123/z-w-x-5.123+z*w-x+5.123+z/w/x*5.123-z-w))"
-"((x+5.123-z/w-x*5.123+z-w-x/5.123+z+w/x*5.123*z-w-x*5.123+z-w+x/5.123*z-w+x*5.123*z-w*x-5.123*z/w))"
-"((x+5.123/z*w*x+5.123*z-w*x-5.123/z*w+x*5.123-z*w*x+5.123*z-w-x+5.123-z*w-x*5.123-z*w/x*5.123+z+w))"
-"((x+5.123/z*w*x+5.123+z*w*x+5.123+z/w+x*5.123*z-w*x+5.123+z*w-x/5.123*z-w-x*5.123*z-w/x+5.123+z*w))"
-"((x+5.123/z*w+x*5.123+z/w+x*5.123-z*w*x+5.123+z-w+x*5.123+z/w/x+5.123*z-w/x+5.123+z-w-x-5.123/z*w))"
-"((x+5.123/z+w*x*5.123+z*w*x/5.123/z-w+x-5.123-z/w*x*5.123+z*w-x+5.123-z-w-x-5.123-z/w/x+5.123/z*w))"
-"((x+5.123/z-w-x-5.123+z*w-x+5.123+z/w/x*5.123-z-w-x-5.123+z*w+x/5.123-z-w+x*5.123-z-w*x-5.123*z/w))"
-"((x+5.123/z-w/x-5.123*z*w/x-5.123/z/w-x+5.123*z/w/x-5.123*z*w*x+5.123*z*w*x+5.123*z/w+x*5.123/z-w))"
-"((x+5.123/z/w/x*5.123-z*w/x*5.123+z*w-x+5.123-z-w/x*5.123-z*w*x+5.123+z-w*x+5.123-z-w+x+5.123/z/w))"
-"((x+5.123/z/w/x+5.123-z/w/x+5.123+z*w-x/5.123*z-w/x+5.123-z/w*x+5.123/z-w*x/5.123*z-w+x+5.123+z/w))"
-"((x+y*7.123*w+x-y/7.123*w+x+y/7.123*w*x+y*7.123-w+x-y/7.123*w/x-y*7.123-w/x+y*7.123-w-x+y-7.123*w))"
-"((x+y*7.123*w-x/y/7.123-w-x*y/7.123-w/x-y-7.123*w-x/y/7.123-w+x-y-7.123/w+x-y-7.123*w*x+y*7.123/w))"
-"((x+y*7.123-w*x-y/7.123/w*x-y/7.123*w+x+y-7.123*w*x-y/7.123/w-x+y*7.123/w-x+y-7.123*w/x-y/7.123-w))"
-"((x+y*7.123-w-x+y-7.123*w-x*y-7.123*w/x*y+7.123+w-x+y-7.123*w+x/y+7.123+w+x*y+7.123+w*x/y/7.123-w))"
-"((x+y*7.123/w+x*y/7.123-w+x-y/7.123-w*x-y+7.123/w+x*y/7.123-w/x-y-7.123*w/x-y+7.123/w-x+y*7.123*w))"
-"((x+y*7.123/w+x-y/7.123/w+x-y*7.123*w*x/y-7.123*w+x-y/7.123/w/x*y+7.123*w/x/y-7.123*w-x*y-7.123+w))"
-"((x+y*7.123/w-x+y+7.123/w-x-y/7.123*w/x-y*7.123-w-x+y+7.123/w+x*y*7.123-w+x-y*7.123-w*x+y-7.123/w))"
-"((x+y*z*9.123+x-y/z*9.123+x+y/z*9.123*x+y*z-9.123+x-y/z*9.123/x-y*z-9.123/x+y*z-9.123-x+y-z*9.123))"
-"((x+y*z*9.123-x/y/z-9.123-x*y/z-9.123/x-y-z*9.123-x/y/z-9.123+x-y-z/9.123+x-y-z*9.123*x+y*z/9.123))"
-"((x+y*z-9.123*x-y/z/9.123*x-y/z*9.123+x+y-z*9.123*x-y/z/9.123-x+y*z/9.123-x+y-z*9.123/x-y/z-9.123))"
-"((x+y*z-9.123-x+y-z*9.123-x*y-z*9.123/x*y+z+9.123-x+y-z*9.123+x/y+z+9.123+x*y+z+9.123*x/y/z-9.123))"
-"((x+y*z/9.123+x*y/z-9.123+x-y/z-9.123*x-y+z/9.123+x*y/z-9.123/x-y-z*9.123/x-y+z/9.123-x+y*z*9.123))"
-"((x+y*z/9.123+x-y/z/9.123+x-y*z*9.123*x/y-z*9.123+x-y/z/9.123/x*y+z*9.123/x/y-z*9.123-x*y-z+9.123))"
-"((x+y*z/9.123-x+y+z/9.123-x-y/z*9.123/x-y*z-9.123-x+y+z/9.123+x*y*z-9.123+x-y*z-9.123*x+y-z/9.123))"
-"((x+y+7.123*w*x/y+7.123-w*x*y+7.123-w+x/y*7.123-w*x/y+7.123-w-x+y*7.123/w-x/y*7.123-w/x-y*7.123*w))"
-"((x+y+7.123*w-x/y*7.123-w-x*y*7.123-w/x+y+7.123*w-x/y*7.123-w+x+y+7.123/w+x+y+7.123*w*x/y+7.123-w))"
-"((x+y+7.123-w-x-y/7.123*w-x+y/7.123/w/x+y-7.123/w-x-y/7.123*w+x+y-7.123*w+x+y-7.123/w*x+y/7.123-w))"
-"((x+y+7.123/w+x*y*7.123-w+x-y*7.123-w*x+y-7.123/w+x*y*7.123-w/x+y+7.123*w/x+y-7.123/w-x*y+7.123-w))"
-"((x+y+7.123/w/x*y-7.123-w/x/y+7.123-w-x+y*7.123/w/x*y-7.123-w*x-y*7.123/w*x+y*7.123/w+x-y/7.123/w))"
-"((x+y+z*9.123*x/y+z-9.123*x*y+z-9.123+x/y*z-9.123*x/y+z-9.123-x+y*z/9.123-x/y*z-9.123/x-y*z*9.123))"
-"((x+y+z*9.123-x/y*z-9.123-x*y*z-9.123/x+y+z*9.123-x/y*z-9.123+x+y+z/9.123+x+y+z*9.123*x/y+z-9.123))"
-"((x+y+z-9.123-x-y/z*9.123-x+y/z/9.123/x+y-z/9.123-x-y/z*9.123+x+y-z*9.123+x+y-z/9.123*x+y/z-9.123))"
-"((x+y+z/9.123+x*y*z-9.123+x-y*z-9.123*x+y-z/9.123+x*y*z-9.123/x+y+z*9.123/x+y-z/9.123-x*y+z-9.123))"
-"((x+y+z/9.123/x*y-z-9.123/x/y+z-9.123-x+y*z/9.123/x*y-z-9.123*x-y*z/9.123*x+y*z/9.123+x-y/z/9.123))"
-"((x+y-7.123*w+x/y+7.123+w+x*y+7.123+w*x/y/7.123-w+x/y+7.123+w/x*y*7.123-w/x/y/7.123-w-x-y-7.123*w))"
-"((x+y-7.123*w/x-y/7.123-w/x+y/7.123-w-x-y+7.123*w/x-y/7.123-w*x-y+7.123/w*x-y+7.123*w+x/y-7.123-w))"
-"((x+y-7.123-w+x+y/7.123/w+x+y/7.123*w*x+y+7.123*w+x+y/7.123/w/x+y-7.123/w/x+y+7.123*w-x/y*7.123-w))"
-"((x+y-7.123/w*x+y/7.123-w*x/y*7.123-w+x+y+7.123/w*x+y/7.123-w-x-y+7.123*w-x+y+7.123/w/x*y-7.123-w))"
-"((x+y-7.123/w-x*y+7.123-w-x/y+7.123+w/x*y*7.123-w-x*y+7.123-w+x/y*7.123-w+x*y*7.123-w*x-y*7.123/w))"
-"((x+y-z*9.123+x/y+z+9.123+x*y+z+9.123*x/y/z-9.123+x/y+z+9.123/x*y*z-9.123/x/y/z-9.123-x-y-z*9.123))"
-"((x+y-z*9.123/x-y/z-9.123/x+y/z-9.123-x-y+z*9.123/x-y/z-9.123*x-y+z/9.123*x-y+z*9.123+x/y-z-9.123))"
-"((x+y-z-9.123+x+y/z/9.123+x+y/z*9.123*x+y+z*9.123+x+y/z/9.123/x+y-z/9.123/x+y+z*9.123-x/y*z-9.123))"
-"((x+y-z/9.123*x+y/z-9.123*x/y*z-9.123+x+y+z/9.123*x+y/z-9.123-x-y+z*9.123-x+y+z/9.123/x*y-z-9.123))"
-"((x+y-z/9.123-x*y+z-9.123-x/y+z+9.123/x*y*z-9.123-x*y+z-9.123+x/y*z-9.123+x*y*z-9.123*x-y*z/9.123))"
-"((x+y/7.123*w*x+y*7.123-w*x-y/7.123*w+x*y-7.123*w*x+y*7.123-w-x+y-7.123*w-x*y-7.123*w/x*y+7.123+w))"
-"((x+y/7.123*w*x+y+7.123*w*x+y+7.123/w+x*y*7.123-w*x+y+7.123*w-x/y*7.123-w-x*y*7.123-w/x+y+7.123*w))"
-"((x+y/7.123*w+x*y+7.123/w+x*y-7.123*w*x+y+7.123-w+x*y+7.123/w/x+y*7.123-w/x+y+7.123-w-x-y/7.123*w))"
-"((x+y/7.123+w*x*y+7.123*w*x/y/7.123-w+x-y-7.123/w*x*y+7.123*w-x+y-7.123-w-x-y-7.123/w/x+y/7.123*w))"
-"((x+y/7.123-w-x-y+7.123*w-x+y+7.123/w/x*y-7.123-w-x-y+7.123*w+x/y-7.123-w+x*y-7.123-w*x-y*7.123/w))"
-"((x+y/7.123-w/x-y*7.123*w/x-y/7.123/w-x+y*7.123/w/x-y*7.123*w*x+y*7.123*w*x+y*7.123/w+x*y/7.123-w))"
-"((x+y/7.123/w/x*y-7.123*w/x*y+7.123*w-x+y-7.123-w/x*y-7.123*w*x+y+7.123-w*x+y-7.123-w+x+y/7.123/w))"
-"((x+y/7.123/w/x+y-7.123/w/x+y+7.123*w-x/y*7.123-w/x+y-7.123/w*x+y/7.123-w*x/y*7.123-w+x+y+7.123/w))"
-"((x+y/z*9.123*x+y*z-9.123*x-y/z*9.123+x*y-z*9.123*x+y*z-9.123-x+y-z*9.123-x*y-z*9.123/x*y+z+9.123))"
-"((x+y/z*9.123*x+y+z*9.123*x+y+z/9.123+x*y*z-9.123*x+y+z*9.123-x/y*z-9.123-x*y*z-9.123/x+y+z*9.123))"
-"((x+y/z*9.123+x*y+z/9.123+x*y-z*9.123*x+y+z-9.123+x*y+z/9.123/x+y*z-9.123/x+y+z-9.123-x-y/z*9.123))"
-"((x+y/z+9.123*x*y+z*9.123*x/y/z-9.123+x-y-z/9.123*x*y+z*9.123-x+y-z-9.123-x-y-z/9.123/x+y/z*9.123))"
-"((x+y/z-9.123-x-y+z*9.123-x+y+z/9.123/x*y-z-9.123-x-y+z*9.123+x/y-z-9.123+x*y-z-9.123*x-y*z/9.123))"
-"((x+y/z-9.123/x-y*z*9.123/x-y/z/9.123-x+y*z/9.123/x-y*z*9.123*x+y*z*9.123*x+y*z/9.123+x*y/z-9.123))"
-"((x+y/z/9.123/x*y-z*9.123/x*y+z*9.123-x+y-z-9.123/x*y-z*9.123*x+y+z-9.123*x+y-z-9.123+x+y/z/9.123))"
-"((x+y/z/9.123/x+y-z/9.123/x+y+z*9.123-x/y*z-9.123/x+y-z/9.123*x+y/z-9.123*x/y*z-9.123+x+y+z/9.123))"
-"((x-5.123*z*w*x+5.123*z*w*x+5.123*z/w+x*5.123/z-w*x+5.123*z*w-x/5.123/z-w-x*5.123/z-w/x-5.123-z*w))"
-"((x-5.123*z*w*x/5.123-z*w*x/5.123+z*w+x-5.123/z+w*x/5.123-z*w-x*5.123-z+w-x-5.123/z+w/x*5.123/z+w))"
-"((x-5.123*z+w*x/5.123*z+w*x*5.123*z+w+x+5.123/z/w*x/5.123*z+w-x+5.123/z*w-x+5.123/z/w/x*5.123-z*w))"
-"((x-5.123*z-w*x+5.123-z/w*x+5.123-z*w+x/5.123+z+w*x+5.123-z/w-x*5.123+z-w-x/5.123+z+w/x*5.123*z-w))"
-"((x-5.123*z/w-x-5.123/z*w-x-5.123/z/w/x*5.123+z*w-x-5.123/z*w+x*5.123-z*w+x*5.123+z*w*x/5.123-z+w))"
-"((x-5.123*z/w-x/5.123+z*w-x/5.123-z*w/x-5.123*z+w-x/5.123+z*w+x-5.123/z+w+x-5.123*z+w*x/5.123*z+w))"
-"((x-5.123*z/w/x+5.123/z+w/x+5.123*z*w-x/5.123/z-w/x+5.123/z+w*x*5.123+z*w*x/5.123/z-w+x-5.123-z/w))"
-"((x-5.123+z*w*x/5.123+z/w*x*5.123-z/w+x+5.123/z-w*x/5.123+z/w-x-5.123-z+w-x+5.123/z-w/x-5.123*z*w))"
-"((x-5.123+z*w+x/5.123-z-w+x*5.123-z-w*x-5.123*z/w+x/5.123-z-w/x+5.123/z*w/x-5.123*z/w-x-5.123/z*w))"
-"((x-5.123+z+w-x*5.123*z+w-x-5.123*z/w/x+5.123/z+w-x*5.123*z+w+x+5.123/z/w+x+5.123/z+w*x*5.123+z*w))"
-"((x-5.123+z/w-x*5.123-z/w-x*5.123+z/w/x+5.123*z-w-x*5.123-z/w+x+5.123/z-w+x+5.123*z-w*x-5.123/z/w))"
-"((x-5.123+z/w-x+5.123*z*w-x/5.123-z-w/x+5.123/z*w-x+5.123*z*w+x-5.123/z*w+x+5.123/z*w*x+5.123*z-w))"
-"((x-5.123-z*w*x+5.123*z/w*x+5.123*z*w+x-5.123/z*w*x+5.123*z/w-x+5.123+z/w-x-5.123/z*w/x-5.123*z-w))"
-"((x-5.123-z*w+x/5.123-z*w+x/5.123-z/w*x-5.123+z+w+x/5.123-z*w/x-5.123*z+w/x-5.123+z+w-x*5.123*z+w))"
-"((x-5.123-z+w+x-5.123*z/w+x-5.123*z*w*x+5.123*z*w+x-5.123*z/w/x+5.123/z+w/x+5.123*z*w-x/5.123/z-w))"
-"((x-5.123-z/w/x+5.123/z*w/x+5.123*z/w-x+5.123+z/w/x+5.123/z*w*x+5.123+z*w*x+5.123+z/w+x*5.123*z-w))"
-"((x-5.123-z/w/x/5.123-z/w/x/5.123+z/w-x-5.123-z+w/x/5.123-z/w*x-5.123+z+w*x-5.123-z+w+x-5.123*z/w))"
-"((x-5.123/z*w+x*5.123-z*w+x*5.123+z*w*x/5.123-z+w+x*5.123-z*w/x*5.123+z+w/x/5.123-z+w-x*5.123/z-w))"
-"((x-5.123/z*w+x+5.123-z*w+x+5.123-z/w*x+5.123/z-w+x+5.123-z*w/x-5.123/z-w/x+5.123/z-w-x-5.123+z*w))"
-"((x-5.123/z*w/x-5.123*z-w/x+5.123*z-w-x+5.123-z*w/x-5.123*z-w*x+5.123-z/w*x+5.123-z*w+x/5.123+z+w))"
-"((x-5.123/z+w/x*5.123/z+w/x/5.123*z+w-x+5.123/z*w/x*5.123/z+w*x-5.123+z/w*x+5.123/z*w+x*5.123+z/w))"
-"((x-5.123/z-w*x-5.123+z/w*x-5.123+z*w+x/5.123-z-w*x-5.123+z/w-x+5.123*z*w-x/5.123-z-w/x+5.123/z*w))"
-"((x-5.123/z/w-x+5.123*z/w-x+5.123-z*w/x-5.123/z-w-x+5.123*z/w+x*5.123/z-w+x-5.123/z-w*x-5.123+z/w))"
-"((x-5.123/z/w/x*5.123+z*w/x/5.123-z*w-x*5.123-z+w/x*5.123+z*w*x/5.123-z+w*x*5.123-z+w+x/5.123/z+w))"
-"((x-y*7.123*w*x+y*7.123*w*x+y*7.123/w+x*y/7.123-w*x+y*7.123*w-x/y/7.123-w-x*y/7.123-w/x-y-7.123*w))"
-"((x-y*7.123*w*x/y-7.123*w*x/y+7.123*w+x-y/7.123+w*x/y-7.123*w-x*y-7.123+w-x-y/7.123+w/x*y/7.123+w))"
-"((x-y*7.123+w*x/y*7.123+w*x*y*7.123+w+x+y/7.123/w*x/y*7.123+w-x+y/7.123*w-x+y/7.123/w/x*y-7.123*w))"
-"((x-y*7.123-w*x+y-7.123/w*x+y-7.123*w+x/y+7.123+w*x+y-7.123/w-x*y+7.123-w-x/y+7.123+w/x*y*7.123-w))"
-"((x-y*7.123/w-x-y/7.123*w-x-y/7.123/w/x*y+7.123*w-x-y/7.123*w+x*y-7.123*w+x*y+7.123*w*x/y-7.123+w))"
-"((x-y*7.123/w-x/y+7.123*w-x/y-7.123*w/x-y*7.123+w-x/y+7.123*w+x-y/7.123+w+x-y*7.123+w*x/y*7.123+w))"
-"((x-y*7.123/w/x+y/7.123+w/x+y*7.123*w-x/y/7.123-w/x+y/7.123+w*x*y+7.123*w*x/y/7.123-w+x-y-7.123/w))"
-"((x-y*z*9.123*x+y*z*9.123*x+y*z/9.123+x*y/z-9.123*x+y*z*9.123-x/y/z-9.123-x*y/z-9.123/x-y-z*9.123))"
-"((x-y*z*9.123*x/y-z*9.123*x/y+z*9.123+x-y/z+9.123*x/y-z*9.123-x*y-z+9.123-x-y/z+9.123/x*y/z+9.123))"
-"((x-y*z+9.123*x/y*z+9.123*x*y*z+9.123+x+y/z/9.123*x/y*z+9.123-x+y/z*9.123-x+y/z/9.123/x*y-z*9.123))"
-"((x-y*z-9.123*x+y-z/9.123*x+y-z*9.123+x/y+z+9.123*x+y-z/9.123-x*y+z-9.123-x/y+z+9.123/x*y*z-9.123))"
-"((x-y*z/9.123-x-y/z*9.123-x-y/z/9.123/x*y+z*9.123-x-y/z*9.123+x*y-z*9.123+x*y+z*9.123*x/y-z+9.123))"
-"((x-y*z/9.123-x/y+z*9.123-x/y-z*9.123/x-y*z+9.123-x/y+z*9.123+x-y/z+9.123+x-y*z+9.123*x/y*z+9.123))"
-"((x-y*z/9.123/x+y/z+9.123/x+y*z*9.123-x/y/z-9.123/x+y/z+9.123*x*y+z*9.123*x/y/z-9.123+x-y-z/9.123))"
-"((x-y+7.123*w*x/y+7.123/w*x*y-7.123/w+x+y/7.123-w*x/y+7.123/w-x-y-7.123+w-x+y/7.123-w/x-y*7.123*w))"
-"((x-y+7.123*w+x/y-7.123-w+x*y-7.123-w*x-y*7.123/w+x/y-7.123-w/x+y/7.123*w/x-y*7.123/w-x-y/7.123*w))"
-"((x-y+7.123+w-x*y*7.123+w-x-y*7.123/w/x+y/7.123+w-x*y*7.123+w+x+y/7.123/w+x+y/7.123+w*x*y+7.123*w))"
-"((x-y+7.123/w-x*y-7.123/w-x*y+7.123/w/x+y*7.123-w-x*y-7.123/w+x+y/7.123-w+x+y*7.123-w*x-y/7.123/w))"
-"((x-y+7.123/w-x+y*7.123*w-x/y-7.123-w/x+y/7.123*w-x+y*7.123*w+x-y/7.123*w+x+y/7.123*w*x+y*7.123-w))"
-"((x-y+z*9.123*x/y+z/9.123*x*y-z/9.123+x+y/z-9.123*x/y+z/9.123-x-y-z+9.123-x+y/z-9.123/x-y*z*9.123))"
-"((x-y+z*9.123+x/y-z-9.123+x*y-z-9.123*x-y*z/9.123+x/y-z-9.123/x+y/z*9.123/x-y*z/9.123-x-y/z*9.123))"
-"((x-y+z+9.123-x*y*z+9.123-x-y*z/9.123/x+y/z+9.123-x*y*z+9.123+x+y/z/9.123+x+y/z+9.123*x*y+z*9.123))"
-"((x-y+z/9.123-x*y-z/9.123-x*y+z/9.123/x+y*z-9.123-x*y-z/9.123+x+y/z-9.123+x+y*z-9.123*x-y/z/9.123))"
-"((x-y+z/9.123-x+y*z*9.123-x/y-z-9.123/x+y/z*9.123-x+y*z*9.123+x-y/z*9.123+x+y/z*9.123*x+y*z-9.123))"
-"((x-y-7.123*w*x+y*7.123/w*x+y*7.123*w+x-y/7.123*w*x+y*7.123/w-x+y+7.123/w-x-y/7.123*w/x-y*7.123-w))"
-"((x-y-7.123*w+x/y-7.123*w+x/y-7.123/w*x-y+7.123+w+x/y-7.123*w/x-y*7.123+w/x-y+7.123+w-x*y*7.123+w))"
-"((x-y-7.123+w+x-y*7.123/w+x-y*7.123*w*x+y*7.123*w+x-y*7.123/w/x+y/7.123+w/x+y*7.123*w-x/y/7.123-w))"
-"((x-y-7.123/w/x+y/7.123*w/x+y*7.123/w-x+y+7.123/w/x+y/7.123*w*x+y+7.123*w*x+y+7.123/w+x*y*7.123-w))"
-"((x-y-7.123/w/x/y-7.123/w/x/y+7.123/w-x-y-7.123+w/x/y-7.123/w*x-y+7.123+w*x-y-7.123+w+x-y*7.123/w))"
-"((x-y-z*9.123*x+y*z/9.123*x+y*z*9.123+x-y/z*9.123*x+y*z/9.123-x+y+z/9.123-x-y/z*9.123/x-y*z-9.123))"
-"((x-y-z*9.123+x/y-z*9.123+x/y-z/9.123*x-y+z+9.123+x/y-z*9.123/x-y*z+9.123/x-y+z+9.123-x*y*z+9.123))"
-"((x-y-z+9.123+x-y*z/9.123+x-y*z*9.123*x+y*z*9.123+x-y*z/9.123/x+y/z+9.123/x+y*z*9.123-x/y/z-9.123))"
-"((x-y-z/9.123/x+y/z*9.123/x+y*z/9.123-x+y+z/9.123/x+y/z*9.123*x+y+z*9.123*x+y+z/9.123+x*y*z-9.123))"
-"((x-y-z/9.123/x/y-z/9.123/x/y+z/9.123-x-y-z+9.123/x/y-z/9.123*x-y+z+9.123*x-y-z+9.123+x-y*z/9.123))"
-"((x-y/7.123*w+x*y-7.123*w+x*y+7.123*w*x/y-7.123+w+x*y-7.123*w/x*y+7.123+w/x/y-7.123+w-x*y/7.123-w))"
-"((x-y/7.123*w+x+y-7.123*w+x+y-7.123/w*x+y/7.123-w+x+y-7.123*w/x-y/7.123-w/x+y/7.123-w-x-y+7.123*w))"
-"((x-y/7.123*w/x-y*7.123-w/x+y*7.123-w-x+y-7.123*w/x-y*7.123-w*x+y-7.123/w*x+y-7.123*w+x/y+7.123+w))"
-"((x-y/7.123+w/x*y/7.123+w/x/y*7.123+w-x+y/7.123*w/x*y/7.123+w*x-y+7.123/w*x+y/7.123*w+x*y+7.123/w))"
-"((x-y/7.123-w*x-y+7.123/w*x-y+7.123*w+x/y-7.123-w*x-y+7.123/w-x+y*7.123*w-x/y-7.123-w/x+y/7.123*w))"
-"((x-y/7.123/w-x+y*7.123/w-x+y-7.123*w/x-y/7.123-w-x+y*7.123/w+x*y/7.123-w+x-y/7.123-w*x-y+7.123/w))"
-"((x-y/7.123/w/x*y+7.123*w/x/y-7.123*w-x*y-7.123+w/x*y+7.123*w*x/y-7.123+w*x*y-7.123+w+x/y/7.123+w))"
-"((x-y/z*9.123+x*y-z*9.123+x*y+z*9.123*x/y-z+9.123+x*y-z*9.123/x*y+z+9.123/x/y-z+9.123-x*y/z-9.123))"
-"((x-y/z*9.123+x+y-z*9.123+x+y-z/9.123*x+y/z-9.123+x+y-z*9.123/x-y/z-9.123/x+y/z-9.123-x-y+z*9.123))"
-"((x-y/z*9.123/x-y*z-9.123/x+y*z-9.123-x+y-z*9.123/x-y*z-9.123*x+y-z/9.123*x+y-z*9.123+x/y+z+9.123))"
-"((x-y/z+9.123/x*y/z+9.123/x/y*z+9.123-x+y/z*9.123/x*y/z+9.123*x-y+z/9.123*x+y/z*9.123+x*y+z/9.123))"
-"((x-y/z-9.123*x-y+z/9.123*x-y+z*9.123+x/y-z-9.123*x-y+z/9.123-x+y*z*9.123-x/y-z-9.123/x+y/z*9.123))"
-"((x-y/z/9.123-x+y*z/9.123-x+y-z*9.123/x-y/z-9.123-x+y*z/9.123+x*y/z-9.123+x-y/z-9.123*x-y+z/9.123))"
-"((x-y/z/9.123/x*y+z*9.123/x/y-z*9.123-x*y-z+9.123/x*y+z*9.123*x/y-z+9.123*x*y-z+9.123+x/y/z+9.123))"
-"((x/5.123*z+w-x+5.123/z*w-x+5.123/z/w/x*5.123-z*w-x+5.123/z*w+x*5.123+z/w+x*5.123-z*w*x+5.123+z-w))"
-"((x/5.123*z-w+x+5.123+z/w+x+5.123+z*w*x/5.123+z-w+x+5.123+z/w/x*5.123-z-w/x/5.123+z-w-x+5.123*z/w))"
-"((x/5.123*z-w/x-5.123*z*w/x-5.123*z/w-x/5.123+z*w/x-5.123*z*w*x/5.123-z*w*x/5.123+z*w+x-5.123/z+w))"
-"((x/5.123+z*w+x-5.123/z+w+x-5.123*z+w*x/5.123*z+w+x-5.123/z+w/x*5.123/z+w/x/5.123*z+w-x+5.123/z*w))"
-"((x/5.123+z+w/x*5.123*z-w/x/5.123/z-w-x-5.123-z*w/x*5.123*z-w*x-5.123*z/w*x-5.123-z*w+x/5.123-z*w))"
-"((x/5.123+z-w-x+5.123*z/w-x/5.123*z-w/x-5.123*z*w-x+5.123*z/w+x-5.123/z/w+x-5.123*z*w*x/5.123-z*w))"
-"((x/5.123+z/w-x-5.123-z+w-x+5.123/z-w/x-5.123*z*w-x-5.123-z+w+x-5.123*z/w+x-5.123*z*w*x+5.123*z*w))"
-"((x/5.123-z*w-x*5.123-z+w-x-5.123/z+w/x*5.123/z+w-x*5.123-z+w+x/5.123/z+w+x*5.123/z+w*x-5.123+z/w))"
-"((x/5.123-z*w/x-5.123*z+w/x-5.123+z+w-x*5.123*z+w/x-5.123*z+w*x/5.123*z+w*x*5.123*z+w+x+5.123/z/w))"
-"((x/5.123-z+w-x*5.123/z-w-x/5.123/z+w/x-5.123+z*w-x*5.123/z-w+x-5.123-z/w+x-5.123+z*w*x/5.123+z/w))"
-"((x/5.123-z-w/x+5.123/z*w/x-5.123*z/w-x-5.123/z*w/x+5.123/z*w*x+5.123*z-w*x-5.123/z*w+x*5.123-z*w))"
-"((x/5.123-z/w*x-5.123+z+w*x-5.123-z+w+x-5.123*z/w*x-5.123+z+w-x*5.123*z+w-x-5.123*z/w/x+5.123/z+w))"
-"((x/5.123/z+w/x-5.123+z*w/x-5.123+z/w-x*5.123-z/w/x-5.123+z*w*x/5.123+z/w*x*5.123-z/w+x+5.123/z-w))"
-"((x/5.123/z-w+x-5.123-z/w+x-5.123-z*w*x+5.123*z/w+x-5.123-z/w/x+5.123/z*w/x+5.123*z/w-x+5.123+z/w))"
-"((x/5.123/z-w-x-5.123-z*w-x-5.123-z/w/x/5.123-z/w-x-5.123-z*w+x/5.123-z*w+x/5.123-z/w*x-5.123+z+w))"
-"((x/y*7.123+w-x+y/7.123*w-x+y/7.123/w/x*y-7.123*w-x+y/7.123*w+x*y+7.123/w+x*y-7.123*w*x+y+7.123-w))"
-"((x/y*7.123-w+x+y+7.123/w+x+y+7.123*w*x/y+7.123-w+x+y+7.123/w/x*y-7.123-w/x/y+7.123-w-x+y*7.123/w))"
-"((x/y*7.123-w/x-y*7.123*w/x-y*7.123/w-x/y+7.123*w/x-y*7.123*w*x/y-7.123*w*x/y+7.123*w+x-y/7.123+w))"
-"((x/y*z+9.123-x+y/z*9.123-x+y/z/9.123/x*y-z*9.123-x+y/z*9.123+x*y+z/9.123+x*y-z*9.123*x+y+z-9.123))"
-"((x/y*z-9.123+x+y+z/9.123+x+y+z*9.123*x/y+z-9.123+x+y+z/9.123/x*y-z-9.123/x/y+z-9.123-x+y*z/9.123))"
-"((x/y*z-9.123/x-y*z*9.123/x-y*z/9.123-x/y+z*9.123/x-y*z*9.123*x/y-z*9.123*x/y+z*9.123+x-y/z+9.123))"
-"((x/y+7.123*w+x-y/7.123+w+x-y*7.123+w*x/y*7.123+w+x-y/7.123+w/x*y/7.123+w/x/y*7.123+w-x+y/7.123*w))"
-"((x/y+7.123+w/x*y*7.123-w/x/y/7.123-w-x-y-7.123*w/x*y*7.123-w*x-y*7.123/w*x-y-7.123*w+x/y-7.123*w))"
-"((x/y+7.123-w-x+y*7.123/w-x/y*7.123-w/x-y*7.123*w-x+y*7.123/w+x-y/7.123/w+x-y*7.123*w*x/y-7.123*w))"
-"((x/y+7.123/w-x-y-7.123+w-x+y/7.123-w/x-y*7.123*w-x-y-7.123+w+x-y*7.123/w+x-y*7.123*w*x+y*7.123*w))"
-"((x/y+z*9.123+x-y/z+9.123+x-y*z+9.123*x/y*z+9.123+x-y/z+9.123/x*y/z+9.123/x/y*z+9.123-x+y/z*9.123))"
-"((x/y+z+9.123/x*y*z-9.123/x/y/z-9.123-x-y-z*9.123/x*y*z-9.123*x-y*z/9.123*x-y-z*9.123+x/y-z*9.123))"
-"((x/y+z-9.123-x+y*z/9.123-x/y*z-9.123/x-y*z*9.123-x+y*z/9.123+x-y/z/9.123+x-y*z*9.123*x/y-z*9.123))"
-"((x/y+z/9.123-x-y-z+9.123-x+y/z-9.123/x-y*z*9.123-x-y-z+9.123+x-y*z/9.123+x-y*z*9.123*x+y*z*9.123))"
-"((x/y-7.123*w-x*y-7.123+w-x-y/7.123+w/x*y/7.123+w-x*y-7.123+w+x/y/7.123+w+x*y/7.123+w*x-y+7.123/w))"
-"((x/y-7.123*w/x-y*7.123+w/x-y+7.123+w-x*y*7.123+w/x-y*7.123+w*x/y*7.123+w*x*y*7.123+w+x+y/7.123/w))"
-"((x/y-7.123+w-x*y/7.123-w-x/y/7.123+w/x-y+7.123*w-x*y/7.123-w+x-y-7.123/w+x-y+7.123*w*x/y+7.123/w))"
-"((x/y-7.123-w/x+y/7.123*w/x-y*7.123/w-x-y/7.123*w/x+y/7.123*w*x+y*7.123-w*x-y/7.123*w+x*y-7.123*w))"
-"((x/y-7.123/w*x-y+7.123+w*x-y-7.123+w+x-y*7.123/w*x-y+7.123+w-x*y*7.123+w-x-y*7.123/w/x+y/7.123+w))"
-"((x/y-z*9.123-x*y-z+9.123-x-y/z+9.123/x*y/z+9.123-x*y-z+9.123+x/y/z+9.123+x*y/z+9.123*x-y+z/9.123))"
-"((x/y-z*9.123/x-y*z+9.123/x-y+z+9.123-x*y*z+9.123/x-y*z+9.123*x/y*z+9.123*x*y*z+9.123+x+y/z/9.123))"
-"((x/y-z+9.123-x*y/z-9.123-x/y/z+9.123/x-y+z*9.123-x*y/z-9.123+x-y-z/9.123+x-y+z*9.123*x/y+z/9.123))"
-"((x/y-z-9.123/x+y/z*9.123/x-y*z/9.123-x-y/z*9.123/x+y/z*9.123*x+y*z-9.123*x-y/z*9.123+x*y-z*9.123))"
-"((x/y-z/9.123*x-y+z+9.123*x-y-z+9.123+x-y*z/9.123*x-y+z+9.123-x*y*z+9.123-x-y*z/9.123/x+y/z+9.123))"
-"((x/y/7.123+w/x-y+7.123*w/x-y+7.123/w-x*y-7.123/w/x-y+7.123*w*x/y+7.123/w*x*y-7.123/w+x+y/7.123-w))"
-"((x/y/7.123-w+x-y-7.123/w+x-y-7.123*w*x+y*7.123/w+x-y-7.123/w/x+y/7.123*w/x+y*7.123/w-x+y+7.123/w))"
-"((x/y/7.123-w-x-y-7.123*w-x-y-7.123/w/x/y-7.123/w-x-y-7.123*w+x/y-7.123*w+x/y-7.123/w*x-y+7.123+w))"
-"((x/y/z+9.123/x-y+z*9.123/x-y+z/9.123-x*y-z/9.123/x-y+z*9.123*x/y+z/9.123*x*y-z/9.123+x+y/z-9.123))"
-"((x/y/z-9.123+x-y-z/9.123+x-y-z*9.123*x+y*z/9.123+x-y-z/9.123/x+y/z*9.123/x+y*z/9.123-x+y+z/9.123))"
-"((x/y/z-9.123-x-y-z*9.123-x-y-z/9.123/x/y-z/9.123-x-y-z*9.123+x/y-z*9.123+x/y-z/9.123*x-y+z+9.123))"
-"(cos((sin((((a-tan(tan(sin(sin(((((b+(((tan(a)*1.07)+a)+a))+3.45)-e)+0.89))))))/2.85)+a))*2.61))+a)"
-"sin(((b+(((tan(((((((sin(((((tan(((b-e)-1.21))+b)*a)/e)+1.65))+a)+e)*a)/e)*1.16)+a))+e)*b)+e))+pi))"
-"tan((((cos((cos((tan(((sin((a+((a/sin(((sin(tan(a))/e)/pi)))-1.43)))-3.32)+b))+e))-2.62))/a)+a)-a))"
-"tan((1.38*((e-(1.51/((((cos(cos(((tan((((sin((1.62+a))-b)+a)-2.24))/b)+pi)))-pi)-b)/1.91)*a)))+b)))"
-"((((((((((((b+((b+((((((e+e)+b)+2.84)+0.70)+e)+pi))/a))*0.75)+b)+b)/b)+b)/3.41)/b)*2.56)-2.04)/a)/a)"
-"(((sin(((2.59/(a*(((((cos(tan((b*((((a/((2.22*e)+pi))*pi)-pi)-a))))/e)+b)+b)/2.00)-b)))/b))+e)+a)/e)"
-"((b-sin(tan((sin((((sin(cos((e/sin((((sin((((1.39+b)/b)+0.70))/a)-0.41)+b)))))*a)/2.93)/b))+a))))/e)"
-"(cos(((a+(tan((a+(cos((2.41+(tan(((tan(tan((sin((cos(pi)-b))+0.69)))+b)/0.45))-e)))+b)))*b))+b))+pi)"
-"tan((((((cos(tan(((2.87+((pi+(((cos((pi-(tan(a)+a)))-2.70)+b)-e))*b))+3.16)))-b)-a)+0.55)*1.69)+pi))"
-"tan((pi-sin((((sin(((2.56*(b/(((sin((sin(((b+((b/0.83)/b))*a))+1.82))+a)+1.53)*a)))*pi))-b)+b)/a))))"
-"((((((((123.456/654.321)*(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))"
-"((((((((123.456/654.321)+(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))"
-"((sin((((cos(((sin(((b-(tan(((cos(sin((3.88+(((a+a)/b)+1.88))))+b)*a))/b))+b))*a)*b))+b)+a)+a))-b)+a)"
-"(b+1.1)*(b+2.2)*(b+3.3)*(b+4.4)*(b+5.5)*(b+6.6)*(b+7.7)*(b+8.8)*(b+9.9)*(b+10.10)*(b+11.11)*(b+12.12)"
-"((((((((((e-(((3.32/((((((a*b)+pi)-a)/3.19)/a)-a))-1.54)-b))+0.34)/0.74)-b)*a)*b)*e)*3.64)/1.81)/3.78)"
-"(((((tan(((b+(pi*((sin(sin((((sin((((pi*a)*b)*e))/e)/1.06)/pi)))-b)*b)))-pi))+pi)+3.20)-0.48)+b)-0.68)"
-"(pi*((cos((tan(((3.49-(cos((cos((1.86-((a+(3.83*(2.93/(pi-b))))-3.19)))*b))+pi))-2.85))+pi))/2.86)*b))"
-"4.4*a^12+3.3*a^11+2.2*a^10+1.1*a^9+9.9*a^8+8.8*a^7+7.7*a^6+6.6*a^5+5.5*a^4+4.4*a^3+3.3*a^2+2.2*a^1+1.1"
-"sin(sin(tan(((((tan((e/(cos((cos((tan(cos(cos((cos((b/tan(a)))*3.88))))*0.38))+a))+b)))*a)+a)+b)*b))))"
-"((((((((((((((((a-((((a*1.18)+2.29)-2.64)+b))-1.19)+pi)+b)+b)+b)-0.48)-e)+a)+a)+3.61)+a)+b)+1.22)+e)-a)"
-"((((b/(((sin((cos((((((tan(sin((a*sin(((a/b)/e)))))/2.27)-pi)-pi)+pi)/3.19))/a))/b)+pi)*b))+0.81)/b)+e)"
-"((2.2/3.3)*((3.3/4.4)*((4.4/5.5)*((5.5/6.6)*(((((a*b)+(9.9/10.10))+(8.8/9.9))+(7.7/8.8))+(6.6/8.8))))))"
-"((2.2/3.3)+((3.3/4.4)+((4.4/5.5)+((5.5/6.6)+(((((a*b)*(9.9/10.10))*(8.8/9.9))*(7.7/8.8))*(6.6/8.8))))))"
-"(sin((((((tan(((((tan((b+(sin(((((cos(cos(e))-a)+b)-pi)+a))+b)))/a)+a)/b)/1.94))+a)+a)-e)*pi)*3.69))+a)"
-"(((((((b-((b-((((((((b+((3.28+((0.73*e)+a))*a))*pi)+1.18)*b)/a)+1.01)-b)*b))*b))+b)-a)/a)*2.41)+3.33)+a)"
-"((((((1.93+((((((((((e*(((3.50+(((a-a)+b)-0.83))-b)+b))+a)-0.74)+pi)+e)+b)+a)-b)/pi)/b))+b)-pi)+b)*a)*b)"
-"(((2.30*((1.22/((0.12-((1.04/((((((2.62*((((a+((e+pi)-pi))/a)+pi)+a))-b)-pi)+e)/b)+b))*b))+b))*a))/a)*b)"
-"((0.51+((((((((((b+(((((((((a*b)*e)+e)+3.99)/a)-b)+a)-0.48)+b))/a)*3.21)*3.00)-e)+b)+2.53)/a)+a)*b))/pi)"
-"((((((((((((((2.39+((((((b*((b+e)+a))/pi)-3.10)-pi)+a)/b))+a)*a)-1.53)-b)+e)+a)*a)-pi)+pi)*a)*3.60)/b)+a)"
-"(((((((a*(((((e-((sin((cos((a-(tan(((b+1.18)-b))-e)))/e))*b)+a))/a)/a)+pi)+2.14))+2.04)+pi)+pi)+pi)*e)+a)"
-"(((e+(((a*(((((((((((((pi-2.35)+2.74)/1.05)-3.03)/pi)+2.58)/2.51)+pi)/a)*a)-3.76)-1.27)+pi))+a)-e))+a)*a)"
-"(pi+((pi*(((((((((((pi+((a-(((0.30+a)/1.89)*0.35))+0.12))-a)*3.06)*b)+2.71)+b)/0.40)/2.64)+b)/pi)+a))/b))"
-"cos(sin((a+((((((((((((sin((((tan((cos(((b/b)+a))*a))/b)+a)/e))/a)/b)/pi)+b)-e)/b)-b)+a)+b)-pi)+a)-pi))))"
-"(((((2.86+(tan((((3.68+((((b+((a*(pi+tan(((b*3.08)+a))))/b))+a)+pi)/0.08))-a)+b))-b))-a)*1.83)+2.17)*0.30)"
-"((((((((b+(((((((a/((pi+((((a*(2.74/a))*1.76)*b)-b))*pi))-pi)-pi)-0.14)-b)*pi)+a))+a)-a)*b)/a)/2.77)+b)+pi)"
-"((((x+y)-(x+y)*(x+z)-(x-w))/((x-y)-(x+y)-(x+z)-(x-w))+((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((x+y)-(x+y)*(x+z)-(x-w))/((x-y)-(x+y)-(x+z)-(x-w))+((y-x)+(y+z)-(y+w)+(y-z))*((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((x+y)/(x+y)+(x+z)/(x-w))-((x-y)-(x+y)-(x+z)-(x-w))+((x-y)+(x+y)-(x+z)+(x+w))*((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((x+y)/(x+y)+(x+z)/(x-w))-((x-y)-(x+y)-(x+z)-(x-w))+((y-x)*(y+z)/(y+w)*(y-x))+((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))+((x+y)/(x+y)+(x+z)/(x-w))-((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))+((x-y)/(x+y)+(x+z)/(x-w))-((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))+((y+x)-(y+z)*(y+w)-(y+w))/((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((x-y)+(x+y)-(x+z)+(x+w))*((x-y)-(x-y)-(x-z)-(x-w))+((x+y)-(x+y)*(x+z)-(x-w))/((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((x-y)+(x+y)-(x+z)+(x+w))*((x-y)-(x-y)-(x-z)-(x-w))+((y+x)/(y+z)+(y+w)/(y+y))-((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((x-y)/(x+y)+(x+z)/(x-w))-((x-y)-(x-y)-(x-z)-(x-w))+((y-x)*(y+z)/(y+w)*(y-x))+((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y+x)-(y+z)*(y+w)-(y-w))/((x-y)-(x+y)-(x+z)+(x-w))+((x-y)+(x+y)-(x+z)+(x+w))*((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((y+x)-(y+z)*(y+w)-(y-w))/((x-y)-(x+y)-(x+z)+(x-w))+((y-x)*(y+z)/(y+w)*(y+x))+((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y+x)/(y+z)+(y+w)/(y+y))-((x-y)-(x+y)-(x+z)+(x-w))+((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((y+x)/(y+z)+(y+w)/(y+y))-((x-y)-(x+y)-(x+z)+(x-w))+((y-x)+(y+z)-(y+w)+(y-z))*((x-y)-(x-y)-(x-z)-(x+w))))"
-"((((y-x)*(y+z)/(y+w)*(y+x))+((x-y)-(x-y)-(x-z)-(x+w))+((x+y)-(x+y)*(x+z)-(x-w))/((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((y-x)*(y+z)/(y+w)*(y+x))+((x-y)-(x-y)-(x-z)-(x+w))+((y+x)/(y+z)+(y+w)/(y+y))-((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((y-x)*(y+z)/(y+w)*(y+x))+((x-y)-(x-y)-(x-z)-(x+w))+((y-x)/(y+z)+(y+w)/(y+y))-((x-y)-(x-y)-(x-z)+(x-w))))"
-"((((y-x)+(y+z)-(y+w)+(y+z))*((x-y)-(x-y)-(x-z)-(x+w))+((y+x)-(y+z)*(y+w)-(y-w))/((x-y)-(x+y)-(x+z)+(x-w))))"
-"((((y-x)+(y+z)-(y+w)+(y-z))*((x-y)-(x-y)-(x-z)-(x+w))+((x+y)/(x+y)+(x+z)/(x-w))-((x-y)-(x+y)-(x+z)-(x-w))))"
-"((((y-x)/(y+z)+(y+w)/(y+y))-((x-y)-(x-y)-(x-z)+(x-w))+((x-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(x-z)-(x-w))))"
-"((((((((((((((((((b+((b-3.60)+1.66))/a)+a)+a)+pi)*pi)*b)*3.58)*b)+2.20)-pi)*2.79)*e)+1.40)+0.74)+a)-1.75)*a)"
-"((((a+(((((pi+(((((((((((((((a+e)+e)+a)/a)+a)-a)*a)+pi)+e)+b)*a)+a)+2.64)+e)+0.87))+b)/b)-a)-2.91))+e)-b)*a)"
-"(((0.86+(0.66/(b-((((((b/(a-(((((3.49*(((((pi-b)/3.08)*1.74)-e)-2.55))*e)-b)+a)-b)))-a)+a)-e)*b)*b))))*e)+a)"
-"(((1.37/(((((2.46-(((((((((((((b/e)+a)*2.17)*1.58)-pi)+b)*pi)/a)*1.31)/a)/b)*e)/e))-e)/e)+a)-a))*1.91)/1.72)"
-"((b+((((((((((((((((e/(((b+((((e-pi)/a)+a)+a))*a)-a))-pi)/e)+3.11)/b)+b)*e)+b)/e)*e)+a)*pi)-a)*pi)-a)/e))-e)"
-"(e/(cos(tan(((tan(((tan(((((cos(((((((((e-a)+pi)*b)-pi)*2.29)-3.77)+e)+b))-b)-a)*pi)+b))-pi)+a))-b)/b)))/b))"
-"((((((((((a+((((((((3.91-(b+((a*a)+e)))+3.60)/0.51)/b)+e)+a)+pi)-0.99))/a)+a)-3.33)+pi)*a)-b)+2.60)-2.73)*pi)"
-"((((a*((((0.79-((((((1.06+(e*((((1.87*(((a-a)*a)+pi))+a)*2.77)+b)))/e)+2.15)*0.69)+e)*a))-b)/a)/a))*pi)-e)/a)"
-"(((2.81-(((((e*(((b/((a+(((((((((b/e)-3.84)*e)+e)+pi)/a)-b)*a)*a))*2.36))+1.29)+b))*3.47)/a)-3.40)-pi))+e)-e)"
-"(((cos((sin(sin((a-(e+tan((((((((((((a/(pi/a))+a)/0.19)-a)+b)*pi)-a)+pi)*2.49)+a)/pi))))))+0.10))+3.27)+b)+b)"
-"(((sin(((sin(((((((((tan((cos((((cos(e)-e)*0.16)*b))+0.31))*pi)/0.73)*e)+pi)/e)/a)/a)+1.76))+e)+e))-b)+b)/pi)"
-"(((((((sin((((a+(((((a+(((cos((a+1.63))-2.15)*2.52)*1.95))*a)+a)-b)/0.45))*b)*3.41))/pi)+b)*e)+a)+pi)/3.54)+e)"
-"((((sin((cos(cos(((2.12/(((((((((((sin((pi+a))*a)-a)/b)-b)/a)+a)*e)+a)+b)/3.84)+b))*3.63)))*e))+2.48)-b)*a)+a)"
-"(1.1+(b+1)*(b+2))*(2.2+(b+3)*(b+4))*(3.3+(b+5)*(b+6))*(4.4+(b+7)*(b+8))*(5.5+(b+9)*(b+10))*(6.6+(b+11)*(b+12))"
-"cos(sin(((sin((((2.61*sin(((cos((sin((0.51+((((tan(((1.45+b)*b))/a)+a)-b)+pi)))/e))/3.24)-b)))-a)+pi))+a)-a)))"
-"(((((((((((((((((((((((b/b)/b)*e)+b)-pi)-2.26)-a)+pi)*a)/0.92)/a)+pi)/b)+a)-pi)+a)+2.56)-pi)*b)-a)+2.11)/pi)+e)"
-"(((sin((((((((a+((0.97/(((((cos(((b*((a/3.77)/1.77))*2.44))*b)-2.05)-a)+pi)+a))+b))+a)+a)*a)*a)+b)+e))+e)/a)/e)"
-"(tan(((((((((1.71/(cos((pi/(cos(((((((0.79+2.44)+b)+2.13)/3.71)-b)+a))-a)))+a))/3.62)+b)+0.38)/pi)+b)/a)+e))+b)"
-"(2.41-(((((((a*((((((1.25-((((((((((a+a)*a)+e)+b)+a)*2.06)-a)*b)/b)*a))+a)+1.26)+a)*b)-e))/b)-b)+a)-e)+a)/3.71))"
-"(cos((((((cos(((e+(((b+tan((tan(((((sin(((pi-e)-3.12))-1.07)/a)*b)+e))+b)))/e)-a))+a))/a)/3.47)-1.66)+b)+pi))*b)"
-"(((((((a-(((e+(((((((((e/(b-a))/3.39)+e)+pi)+0.84)+a)*3.08)-pi)+2.53))*1.11)*2.11))-b)*0.47)+a)+1.74)*0.76)*2.82)"
-"(((cos(((((a+((pi*(e+tan((cos((((((b+(tan(((1.60*a)-0.34))-0.76))-a)+pi)+3.27)+a))/pi))))-a))+b)*b)-e))+e)/e)+pi)"
-"(cos(((sin(tan(((((((tan(cos(tan(cos(((tan(cos((sin(e)*pi)))+1.02)-b)))))*pi)-b)/b)-a)+b)-b)))+0.31)+0.11))-3.13)"
-"cos((((((tan((b+sin(((cos((sin((2.63+((b+(sin((b+(2.88*0.47)))/3.31))*3.77)))/a))*b)-pi))))-e)-a)-3.39)-2.28)+e))"
-"((((((((((((pi+((((0.14*(((a+((((b*pi)+a)-2.73)*b))/3.27)/b))+b)-a)/b))+pi)*pi)+e)-a)/0.06)*pi)-a)*a)+2.13)+b)*pi)"
-"((((((((((((pi-(((((b+(a+((((0.48-0.29)+pi)+a)+e)))-pi)/b)*pi)*pi))-0.77)+0.95)*b)-a)-a)*pi)/b)+pi)-0.09)+2.33)+a)"
-"((((((((((tan(((((sin((pi+sin(sin(((1.34-a)/b)))))*3.87)+1.81)/2.91)+a))-b)+3.62)-e)+b)+3.03)/a)+0.68)+a)+1.51)*e)"
-"((0.42+(((((((((e+(((a*((((((((a+e)/2.67)+pi)+a)/pi)-0.87)*b)+pi))*2.94)-3.07))/b)-pi)+1.54)-b)*a)/2.31)-a)-b))/a)"
-"(b-((2.51*((((a-((((((((b-((((((((b*b)-a)/a)*a)+0.26)-pi)-pi)+1.19))+pi)-2.53)+b)/b)+b)+a)*a))*0.50)/0.47)*b))-e))"
-"(tan((a/(a/sin(((sin((((((((sin(((((((2.41+e)*2.58)-0.25)+a)-a)/b))-1.48)+b)+b)+a)+1.52)/1.22)+a))+a)-b)))))/3.06)"
-"(((((((((((((((((((((((((b/e)*a)/1.88)/a)*a)-b)*3.26)+a)+b)-b)+1.92)/pi)+b)+e)/a)*e)*a)/e)-1.89)*b)/a)+b)/a)/pi)/b)"
-"((((e-(2.57*((((((((((((((((((0.19*b)/pi)-b)-b)+a)+1.35)+a)/1.60)+b)+pi)/a)+pi)*2.97)/a)-a)*2.81)+a)/b)))/pi)-a)/e)"
-"(((b+(a-((((tan((b*((((((a+(cos((cos(tan(((a+a)*3.33)))-b))/2.52))*e)/b)+3.07)+0.86)+b)))*3.95)/0.39)*b)+a)))+a)*b)"
-"((2.2/3.3)*((3.3/4.4)*((4.4/5.5)*((5.5/6.6)*(((((123.456*654.321)+(9.9/10.10))+(8.8/9.9))+(7.7/8.8))+(6.6/8.8))))))"
-"((2.2/3.3)+((3.3/4.4)+((4.4/5.5)+((5.5/6.6)+(((((123.456*654.321)*(9.9/10.10))*(8.8/9.9))*(7.7/8.8))*(6.6/8.8))))))"
-"cos(cos(cos(cos((tan((((((tan(tan(tan(cos((((tan(tan(((sin((a+e))+b)+a)))-a)*a)/pi)))))*b)+pi)*pi)+a)*0.78))+b)))))"
-"((((((((((((((((a-(a+(((((e*(0.81*(pi/a)))+1.29)*3.02)+b)+b)))-a)-a)/1.11)+2.33)/3.58)*b)+b)*a)+a)+e)-b)+b)+e)-b)/a)"
-"((((a/(((((tan((b*(a/(a/cos(((pi*(cos((((tan((pi*(sin(b)+e)))+1.22)*b)-b))*a))*a))))))-pi)-a)+e)+b)-a))-3.84)+a)-pi)"
-"((0.74+cos((tan(((((((0.68+(((((((((cos((((a+a)+b)-b))-b)-e)+2.16)+b)-a)-b)-a)+b)+b))*b)*pi)+a)-2.73)*b))/3.27)))/b)"
-"((((((((((((((0.32+(b*((pi-(pi-((((((b-a)-3.84)+a)-pi)*b)-1.61)))+pi)))/b)+3.76)-b)+a)+a)*a)+b)/b)-b)+a)+a)-pi)+0.73)"
-"(((((1.0-y)/(x+y)+(x+z)/(x-w))-((x-y)-(x-y)-(1.0-z)-(x-w))+((y-x)*(y+z)/(y+w)*(1.0-x))+((x-y)-(x-y)-(x-z)-(1.0+w)))))"
-"(((((9.1-y)*(x+y)/(x+z)*(x+w))+((x-y)-(x-y)-(9.1-z)-(x-w))+((y+x)-(y+z)*(y+w)-(9.1+w))/((x-y)-(x+y)-(x+z)+(9.1-w)))))"
-"(((((y+x)-(y+4.6)*(y+w)-(y-w))/((x-4.6)-(x+y)-(x+z)+(x-w))+((y-x)*(y+4.6)/(y+w)*(4.6+x))+((x-y)-(x-y)-(x-z)-(x+w)))))"
-"(((((y+x)-(y+8.2)*(y+w)-(y-w))/((x-8.2)-(x+y)-(x+z)+(x-w))+((x-y)+(x+8.2)-(x+z)+(8.2+w))*((x-y)-(x-y)-(x-z)-(x-w)))))"
-"(((((y+x)/(y+2.8)+(y+w)/(y+y))-((x-2.8)-(x+y)-(x+z)+(x-w))+((y-x)+(y+2.8)-(y+w)+(2.8-z))*((x-y)-(x-y)-(x-z)-(x+w)))))"
-"(((((y+x)/(y+6.4)+(y+w)/(y+y))-((x-6.4)-(x+y)-(x+z)+(x-w))+((x-y)*(x+6.4)/(x+z)*(6.4+w))+((x-y)-(x-y)-(x-z)-(x-w)))))"
-"(((((y-x)*(y+1.9)/(y+w)*(y+x))+((x-1.9)-(x-y)-(x-z)-(x+w))+((y+x)/(y+1.9)+(y+w)/(1.9+y))-((x-y)-(x+y)-(x+z)+(x-w)))))"
-"(((((y-x)*(y+5.5)/(y+w)*(y+x))+((x-5.5)-(x-y)-(x-z)-(x+w))+((y-x)/(y+5.5)+(y+w)/(5.5+y))-((x-y)-(x-y)-(x-z)+(x-w)))))"
-"(((((y-x)*(y+9.1)/(y+w)*(y+x))+((x-9.1)-(x-y)-(x-z)-(x+w))+((x+y)-(x+9.1)*(x+z)-(9.1-w))/((x-y)-(x+y)-(x+z)-(x-w)))))"
-"(((((y-x)+(y+3.7)-(y+w)+(y+z))*((x-3.7)-(x-y)-(x-z)-(x+w))+((y+x)-(y+3.7)*(y+w)-(3.7-w))/((x-y)-(x+y)-(x+z)+(x-w)))))"
-"(((((y-x)+(y+7.3)-(y+w)+(y-z))*((x-7.3)-(x-y)-(x-z)-(x+w))+((x+y)/(x+7.3)+(x+z)/(7.3-w))-((x-y)-(x+y)-(x+z)-(x-w)))))"
-"(((((y-x)/(y+1.0)+(y+w)/(y+y))-((x-1.0)-(x-y)-(x-z)+(x-w))+((x-y)*(x+1.0)/(x+z)*(1.0+w))+((x-y)-(x-y)-(x-z)-(x-w)))))"
-"((a/((e*(((((((((((b+((((((((((a+b)/b)/pi)+b)/pi)+b)+a)+pi)+0.23)/e))*b)+3.10)+1.04)+a)-pi)/b)+a)+e)/2.22)/a))/a))/b)"
-"(tan(cos(((cos((((((cos((sin(((((((sin((((b*b)+a)-0.94))+2.12)-b)*b)+a)+e)+2.82))+pi))+a)-a)+e)/a)*e))/e)-2.96)))-pi)"
-"tan(tan((3.81+(((2.10+(e+((((pi+cos((((b+(tan((0.12+sin((cos(3.50)+a))))-pi))*b)+1.38)))*e)+0.22)/b)))+1.08)+3.64))))"
-"((((((((((((((((((((((a*(pi-3.90))-3.78)+b)+b)/pi)/3.62)*1.05)*2.74)*b)*a)+2.82)+e)/b)*a)+a)-b)+1.02)+e)+pi)-a)+b)+pi)"
-"(((((((((((((e+((a+(((((((((a*1.26)+a)/0.76)+e)-e)+a)+3.67)+a)*0.32))+a))-a)/pi)+b)-pi)-0.48)/a)+e)/b)+a)-b)-3.25)+pi)"
-"((((((sin((a-(a+(sin(cos(cos((e*((((((sin((sin(cos((1.43-a)))-0.78))+a)/b)*a)-pi)-e)*e)))))*e))))/2.42)*a)+b)-b)+b)/b)"
-"(((((a+(((((((e+(((((((((((((1.13+b)*0.53)+e)-a)/b)+b)-a)-e)-0.68)-b)/b)/3.07)+e))-a)+b)*pi)/pi)/a)*a))*b)-a)+e)+3.82)"
-"((e+((tan((cos(((((sin(((sin((((tan((((tan((a+e))*2.86)+pi)*b))*b)*2.17)/e))-b)+a))-b)*a)+b)-2.15))-pi))+pi)*2.19))*b)"
-"((sin(tan((tan((cos(cos(sin((cos((b-(e*tan(sin((a/((b/cos(((2.76*((sin(e)/a)+b))*b)))*a)))))))*a))))/a))*0.92)))-e)+e)"
-"((((((((((((((((((((((((pi-b)/0.07)/0.29)-pi)+a)*a)+a)-a)-2.46)-e)*a)+a)+a)/1.80)*b)+a)/0.65)+pi)/0.99)+a)+pi)+a)+b)*b)"
-"(((((cos((cos(((sin(((((cos((((b+sin(tan(((pi+b)-1.93))))+pi)/a))+b)+2.79)/3.93)/1.91))+a)+b))-3.26))+a)+1.08)-b)+b)/a)"
-"((((((((((b+(((b/(b/(((((((((a-b)+0.53)*1.03)/3.46)+e)+a)+2.48)-3.09)+pi)))+2.09)-a))/pi)*b)/pi)*a)-a)/1.49)+1.64)/b)-b)"
-"((((a*(sin((0.79-((((((1.06+(e*((((1.87*(sin(((3.27*pi)-b))/a))-1.91)/a)/b)))/a)*1.70)+b)-0.77)-0.54)))+pi))*e)+e)*2.07)"
-"(1.16-((((((((((tan(((((cos(tan(tan((((((3.03*e)+e)/2.59)/0.76)+3.85))))+b)-b)/a)+e))+e)*pi)+2.29)/b)/a)+a)*a)+e)-a)+e))"
-"(sin((((a*tan((((b/((sin(((cos(tan((pi+sin(((((3.94/(((pi+2.51)/pi)+b))+1.74)+b)-b)))))/e)+pi))+b)+b))/b)+e)))*b)+b))+a)"
-"cos((cos(((((cos(((cos((tan(((((((cos(((sin(pi)-3.90)-3.78))+b)+b)/pi)/3.62)*1.05)*2.74))*b))*a)+2.82))+e)/b)*a)+a))-b))"
-"(((((((((((((e+(((pi+(2.85+((((((((2.52+pi)*pi)*2.79)*e)+pi)/b)*a)-2.97)))-b)*b))+b)*a)+b)/a)/0.82)+e)-e)+b)*a)-pi)+b)+e)"
-"(((((((((1.27*((((((((((((a+(((a*2.13)*pi)-a))*pi)/b)/b)*1.70)+a)+0.00)+3.33)/b)-b)*2.44)*pi))-b)+3.87)/a)+b)*a)/e)+b)*e)"
-"(((1.1*x^2+2.2)*(1.1/y^3-2.2))-((1.1*x^2+2.2)-(1.1/y^3-2.2))-((1.1*x^2+2.2)+(1.1/y^3-2.2))*((1.1*x^2+2.2)-(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)+(1.1/y^3-2.2))*((1.1*x^2+2.2)*(1.1/y^3-2.2))+((1.1*x^2+2.2)-(1.1/y^3-2.2))+((1.1*x^2+2.2)+(1.1/y^3-2.2)))"
-"(((1.1*x^2+2.2)-(1.1/y^3-2.2))+((1.1*x^2+2.2)*(1.1/y^3-2.2))*((1.1*x^2+2.2)*(1.1/y^3-2.2))-((1.1*x^2+2.2)+(1.1/y^3-2.2)))"
-"(((sin(((sin((a/((cos(tan((((tan((tan((((sin((tan(tan(pi))/pi))/b)*b)-pi))+b))+pi)-3.77)+b)))*e)-pi)))-a)+a))+b)+b)+0.05)"
-"(sin((sin(cos((tan((((cos(sin(cos((((((tan(((cos((sin(tan(b))+a))+a)*2.08))+a)+a)+e)/b)/e))))/pi)+pi)+pi))/e)))/e))/2.67)"
-"(((0.27/(((((((((((((((b*(((((((e+3.03)/pi)+b)+b)+a)+1.12)*a))+a)+a)*e)+b)-e)+e)+e)/a)*pi)-1.60)+e)+0.13)*pi)*e))/2.30)*b)"
-"((b+((((((a*((((a/((((((pi+((((((((2.79+a)-e)+a)+pi)/a)+b)+b)*pi))*b)+pi)-b)*0.99)+a))/a)+a)+3.72))-a)+b)+pi)*a)-1.77))-a)"
-"(a/((((sin((sin(cos((0.68-(((((((a/((a+(cos(cos((((((a/a)+e)+b)*e)-b)))-a))+a))+a)/pi)-a)*b)+3.04)-a))))/b))+b)+pi)*e)+a))"
-"(((e-((((((((((e*((((((((((0.23+a)+3.81)+pi)+pi)*a)-b)*1.79)*1.50)/1.59)*a))+2.39)-pi)+e)/b)+b)/1.94)+a)*2.44)*e))/1.85)*b)"
-"(0.68-((((((pi/cos(tan((tan(tan(tan(cos(cos((((sin(((pi*((e*e)+a))*e))/3.66)+a)*a))))))*0.03))))/pi)+1.29)*2.87)+1.88)+pi))"
-"((((b+((((((((((((((((((((((((b+e)-e)+b)+b)-pi)+e)-e)*a)*e)*pi)+pi)/1.85)-e)/0.35)-b)/a)+a)-b)+b)*e)/b)/pi)/e)*a))+b)*b)+pi)"
-"(((1.20-(((((tan((((a/sin((3.44*(tan(((((tan((b/(cos(pi)+e)))+b)+a)/2.57)+0.07))+3.43))))-1.59)/a))*a)-b)+e)*e)*b))/0.77)-b)"
-"(a*(((((((a*sin((((((((b/(((a+tan((b+tan(((((e/3.48)+e)-pi)/b)))))+a)-pi))+1.34)*a)+a)+0.36)+a)+b)))-pi)-0.40)-pi)-e)+a)*a))"
-"tan(((1.98/((b/cos((e+(((sin(cos((((((cos(tan((b+((((pi*3.71)+a)+pi)-1.17))))/b)/e)+a)+3.08)-e)))+a)+3.15)*b))))*0.70))/pi))"
-"((((((((((((((((((((((((pi/a)/b)+pi)*a)+0.68)+a)-0.14)-2.38)/1.45)/b)*1.52)+b)+b)*3.56)+3.40)-a)-0.29)+b)*b)-e)+a)/b)+pi)-pi)"
-"((((((x*y)*z)-w)/((x+y)+(z*w)))/(((x+y)-(z/w))-((x*y)+(z-w))))/((((x+y)+(z*w))*((x/y)+(z-w)))*(((x*y)+(z-w))+((x/y)*(z-w)))))"
-"((((((x*y)/z)-w)/((x-y)-(z*w)))/(((x-y)+(z/w))-((x+y)*(z*w))))/((((x-y)-(z*w))*((x+y)*(z/w)))*(((x+y)*(z*w))+(x-(y/(z*w))))))"
-"((((((x+y)*z)-w)-((x+y)-(z*w)))-((x*(y-(z*w)))/((x*y)+(z+w))))-((((x+y)-(z*w))+((x/y)+(z+w)))+(((x*y)+(z+w))*((x/y)/(z-w)))))"
-"((((((x+y)/z)-w)-((x-y)+(z*w)))-(((x+y)+(z/w))/((x*y)-(z-w))))-((((x-y)+(z*w))+((x/y)-(z-w)))+(((x*y)-(z-w))*(x-(y*(z/w))))))"
-"((((((x-y)*z)-w)*((x+y)-(z/w)))*(((x+y)-(z*w))+((x/y)+(z+w))))*((((x+y)-(z/w))-((x*y)+(z-w)))-(((x/y)+(z+w))/((x*y)*(z-w)))))"
-"((((((x-y)/z)-w)*((x-y)+(z/w)))*(((x-y)+(z*w))+((x/y)-(z-w))))*((((x-y)+(z/w))-((x+y)*(z*w)))-(((x/y)-(z-w))/(x+(y/(z*w))))))"
-"((((((x/y)*z)-w)+((x+y)+(z/w)))+(((x+y)+(z*w))*((x/y)+(z-w))))+((((x+y)+(z/w))/((x*y)-(z-w)))/(((x/y)+(z-w))-(x+(y*(z/w))))))"
-"((((((x/y)/z)-w)+((x-y)-(z/w)))+(((x-y)-(z*w))*((x+y)*(z/w))))+((((x-y)-(z/w))/((x+y)/(z*w)))/(((x+y)*(z/w))-(x+((y+z)/w)))))"
-"(((((3.123*y)*z)-(3.123/(y*z)))-((3.123/(y/z))-(3.123-(y/z))))-(((3.123*(y+z))*(3.123-(y*z)))*((3.123+(y*z))*((3.123+y)+z))))"
-"(((((3.123*y)+z)*((3.123/y)*z))*((3.123/(y+z))*(3.123*(y/z))))*(((3.123/(y-z))/(3.123-(y+z)))/((3.123-(y-z))/((3.123+y)/z))))"
-"(((((3.123*y)-z)/(3.123/(y+z)))/((3.123/(y-z))/(3.123-(y+z))))/(((3.123/(y*z))+(3.123-(y-z)))+((3.123-(y/z))+((3.123+y)*z))))"
-"(((((3.123*y)/z)+(3.123/(y-z)))+((3.123/(y*z))+(3.123-(y-z))))+(((3.123/(y/z))-(3.123-(y/z)))-((3.123-(y*z))-((3.123+y)-z))))"
-"(((((3.123+y)*z)-((3.123*y)/z))-(((3.123*y)*z)-(3.123/(y*z))))-((((3.123/y)+z)*(3.123/(y/z)))*((3.123*(y+z))*(3.123-(y*z)))))"
-"(((((3.123+y)+z)/((3.123/y)+z))/(((3.123/y)-z)/(3.123*(y+z))))/((((3.123/y)/z)+(3.123*(y-z)))+((3.123*(y*z))+(3.123+(y/z)))))"
-"(((((3.123+y)-z)*((3.123*y)*z))*(((3.123/y)+z)*(3.123/(y/z))))*((((3.123/y)-z)/(3.123*(y+z)))/((3.123*(y-z))/(3.123+(y*z)))))"
-"(((((3.123+y)/z)+((3.123*y)-z))+(((3.123*y)/z)+(3.123/(y-z))))+((((3.123*y)*z)-(3.123/(y*z)))-((3.123/(y/z))-(3.123-(y/z)))))"
-"(((((3.123-y)*z)-((3.123/y)/z))-(((3.123/y)*z)-(3.123*(y*z))))-(((3.123/(y+z))*(3.123*(y/z)))*((3.123-(y+z))*(3.123+(y-z)))))"
-"(((((3.123-y)/z)+((3.123/y)-z))+(((3.123/y)/z)+(3.123*(y-z))))+((((3.123/y)*z)-(3.123*(y*z)))-((3.123*(y/z))-(3.123+(y+z)))))"
-"(((((3.123/y)*z)-(3.123*(y*z)))-((3.123*(y/z))-(3.123+(y+z))))-(((3.123-(y+z))*(3.123+(y-z)))*(((3.123+y)/z)+((3.123*y)-z))))"
-"(((((3.123/y)+z)*(3.123/(y/z)))*((3.123*(y+z))*(3.123-(y*z))))*(((3.123*(y-z))/(3.123+(y*z)))/((3.123+(y/z))/((3.123-y)/z))))"
-"(((((3.123/y)-z)/(3.123*(y+z)))/((3.123*(y-z))/(3.123+(y*z))))/(((3.123*(y*z))+(3.123+(y/z)))+((3.123+(y+z))+((3.123-y)*z))))"
-"(((((3.123/y)/z)+(3.123*(y-z)))+((3.123*(y*z))+(3.123+(y/z))))+(((3.123*(y/z))-(3.123+(y+z)))-((3.123+(y-z))-((3.123*y)+z))))"
-"(((((x*5.123)*z)-(x/(5.123*z)))-((x/(5.123/z))-(x-(5.123/z))))-(((x*(5.123+z))*(x-(5.123*z)))*((x+(5.123*z))*((x+5.123)+z))))"
-"(((((x*5.123)+z)*((x/5.123)*z))*((x/(5.123+z))*(x*(5.123/z))))*(((x/(5.123-z))/(x-(5.123+z)))/((x-(5.123-z))/((x+5.123)/z))))"
-"(((((x*5.123)-z)/(x/(5.123+z)))/((x/(5.123-z))/(x-(5.123+z))))/(((x/(5.123*z))+(x-(5.123-z)))+((x-(5.123/z))+((x+5.123)*z))))"
-"(((((x*5.123)/z)+(x/(5.123-z)))+((x/(5.123*z))+(x-(5.123-z))))+(((x/(5.123/z))-(x-(5.123/z)))-((x-(5.123*z))-((x+5.123)-z))))"
-"(((((x*y)*(z+w))+(x+((y/z)/w)))+((x+((y/z)+w))*((x*y)+(z*w))))+(((x+((y/z)/w))/((x*y)-(z*w)))/(((x*y)+(z*w))-((x+y)-(z-w)))))"
-"(((((x*y)*(z-w))*(x-((y*z)/w)))*((x-((y-z)*w))+((x/y)-(z*w))))*(((x-((y*z)/w))-(x/(y+(z*w))))-(((x/y)-(z*w))/((x-y)*(z+w)))))"
-"(((((x*y)*7.123)-(x/(y*7.123)))-((x/(y/7.123))-(x-(y/7.123))))-(((x*(y+7.123))*(x-(y*7.123)))*((x+(y*7.123))*((x+y)+7.123))))"
-"(((((x*y)+(z*w))-((x+y)-(z-w)))-(((x-y)-(z/w))/((x+y)/(z*w))))-((((x+y)-(z-w))+((x+y)/(z/w)))+(((x+y)/(z*w))*(x+((y+z)*w)))))"
-"(((((x*y)+(z+w))*((x/y)/(z-w)))*(((x*y)/(z-w))+(x-((y-z)/w))))*((((x/y)/(z-w))-(x-((y-z)*w)))-((x-((y-z)/w))/((x/y)-(z/w)))))"
-"(((((x*y)+(z-w))+((x/y)*(z-w)))+(((x*y)*(z-w))*(x-((y*z)/w))))+((((x/y)*(z-w))/(x-((y*z)*w)))/((x-((y*z)/w))-(x/(y+(z*w))))))"
-"(((((x*y)+(z/w))/((x+y)*(z-w)))/(((x+y)+(z-w))-((x-y)/(z*w))))/((((x+y)*(z-w))*((x-y)/(z/w)))*(((x-y)/(z*w))+(x+((y-z)*w)))))"
-"(((((x*y)+7.123)*((x/y)*7.123))*((x/(y+7.123))*(x*(y/7.123))))*(((x/(y-7.123))/(x-(y+7.123)))/((x-(y-7.123))/((x+y)/7.123))))"
-"(((((x*y)-(z*w))*((x+y)+(z-w)))*(((x+y)-(z-w))+((x+y)/(z/w))))*((((x+y)+(z-w))-((x-y)/(z*w)))-(((x+y)/(z/w))/(x+((y-z)/w)))))"
-"(((((x*y)-(z+w))+((x/y)/(z+w)))+(((x*y)/(z+w))*(x-((y+z)/w))))+((((x/y)/(z+w))/(x-((y+z)*w)))/((x-((y+z)/w))-((x*y)-(z/w)))))"
-"(((((x*y)-(z-w))*(x-(y*(z/w))))*((x+(y*(z/w)))+(x-((y/z)/w))))*(((x-(y*(z/w)))-(x-((y/z)*w)))-((x-((y/z)/w))/(x*(y+(z*w))))))"
-"(((((x*y)-(z/w))+((x+y)/(z-w)))+(((x+y)*(z-w))*((x-y)/(z/w))))+((((x+y)/(z-w))/((x-y)*(z*w)))/(((x-y)/(z/w))-(x+((y*z)/w)))))"
-"(((((x*y)-7.123)/(x/(y+7.123)))/((x/(y-7.123))/(x-(y+7.123))))/(((x/(y*7.123))+(x-(y-7.123)))+((x-(y/7.123))+((x+y)*7.123))))"
-"(((((x*y)/(z+w))*(x-((y+z)/w)))*((x+((y/z)*w))+((x*y)+(z/w))))*(((x-((y+z)/w))-((x*y)-(z/w)))-(((x*y)+(z/w))/((x+y)*(z-w)))))"
-"(((((x*y)/(z-w))+(x-((y-z)/w)))+((x-((y+z)*w))*((x/y)+(z/w))))+(((x-((y-z)/w))/((x/y)-(z/w)))/(((x/y)+(z/w))-((x-y)-(z+w)))))"
-"(((((x*y)/7.123)+(x/(y-7.123)))+((x/(y*7.123))+(x-(y-7.123))))+(((x/(y/7.123))-(x-(y/7.123)))-((x-(y*7.123))-((x+y)-7.123))))"
-"(((((x+5.123)*z)-((x*5.123)/z))-(((x*5.123)*z)-(x/(5.123*z))))-((((x/5.123)+z)*(x/(5.123/z)))*((x*(5.123+z))*(x-(5.123*z)))))"
-"(((((x+5.123)+z)/((x/5.123)+z))/(((x/5.123)-z)/(x*(5.123+z))))/((((x/5.123)/z)+(x*(5.123-z)))+((x*(5.123*z))+(x+(5.123/z)))))"
-"(((((x+5.123)-z)*((x*5.123)*z))*(((x/5.123)+z)*(x/(5.123/z))))*((((x/5.123)-z)/(x*(5.123+z)))/((x*(5.123-z))/(x+(5.123*z)))))"
-"(((((x+5.123)/z)+((x*5.123)-z))+(((x*5.123)/z)+(x/(5.123-z))))+((((x*5.123)*z)-(x/(5.123*z)))-((x/(5.123/z))-(x-(5.123/z)))))"
-"(((((x+y)*(z*w))+(x-(y/(z*w))))+((x+(y/(z*w)))*(((x+y)*z)-w)))+(((x-(y/(z*w)))/(((x-y)*z)-w))/((((x+y)*z)-w)-((x+y)-(z*w)))))"
-"(((((x+y)*(z-w))*((x-y)/(z/w)))*(((x-y)/(z*w))+(x+((y-z)*w))))*((((x-y)/(z/w))-(x+((y*z)/w)))-((x+((y-z)*w))/(((x-y)/z)-w))))"
-"(((((x+y)*(z/w))-(x+((y+z)/w)))-((x-(y/(z*w)))/(((x-y)*z)-w)))-(((x+((y+z)/w))+(((x*y)*z)-w))+((((x-y)*z)-w)*((x+y)-(z/w)))))"
-"(((((x+y)*7.123)-((x*y)/7.123))-(((x*y)*7.123)-(x/(y*7.123))))-((((x/y)+7.123)*(x/(y/7.123)))*((x*(y+7.123))*(x-(y*7.123)))))"
-"(((((x+y)+(z*w))*((x/y)+(z-w)))*(((x*y)+(z-w))+((x/y)*(z-w))))*((((x/y)+(z-w))-(x+(y*(z/w))))-(((x/y)*(z-w))/(x-((y*z)*w)))))"
-"(((((x+y)+(z-w))-((x-y)/(z*w)))-(((x+y)/(z/w))/(x+((y-z)/w))))-((((x-y)/(z*w))+(x+((y-z)*w)))+((x+((y-z)/w))*(((x+y)/z)-w))))"
-"(((((x+y)+(z/w))/((x*y)-(z-w)))/(((x/y)+(z-w))-(x+(y*(z/w)))))/((((x*y)-(z-w))*(x-(y*(z/w))))*((x+(y*(z/w)))+(x-((y/z)/w)))))"
-"(((((x+y)+7.123)/((x/y)+7.123))/(((x/y)-7.123)/(x*(y+7.123))))/((((x/y)/7.123)+(x*(y-7.123)))+((x*(y*7.123))+(x+(y/7.123)))))"
-"(((((x+y)-(z*w))+((x/y)+(z+w)))+(((x*y)+(z+w))*((x/y)/(z-w))))+((((x/y)+(z+w))/((x*y)*(z-w)))/(((x/y)/(z-w))-(x-((y-z)*w)))))"
-"(((((x+y)-(z-w))+((x+y)/(z/w)))+(((x+y)/(z*w))*(x+((y+z)*w))))+((((x+y)/(z/w))/(x+((y-z)/w)))/((x+((y+z)*w))-(((x/y)*z)-w))))"
-"(((((x+y)-(z/w))-((x*y)+(z-w)))-(((x/y)+(z+w))/((x*y)*(z-w))))-((((x*y)+(z-w))+((x/y)*(z-w)))+(((x*y)*(z-w))*(x-((y*z)/w)))))"
-"(((((x+y)-7.123)*((x*y)*7.123))*(((x/y)+7.123)*(x/(y/7.123))))*((((x/y)-7.123)/(x*(y+7.123)))/((x*(y-7.123))/(x+(y*7.123)))))"
-"(((((x+y)/(z*w))*(x+((y+z)*w)))*((x+((y+z)/w))+(((x*y)*z)-w)))*(((x+((y+z)*w))-(((x/y)*z)-w))-((((x*y)*z)-w)/((x+y)+(z*w)))))"
-"(((((x+y)/(z-w))/((x-y)*(z*w)))/(((x-y)/(z/w))-(x+((y*z)/w))))/((((x-y)*(z*w))*(x+((y*z)*w)))*((x+((y*z)/w))+(((x*y)/z)-w))))"
-"(((((x+y)/(z/w))/(x+((y-z)/w)))/((x+((y+z)*w))-(((x/y)*z)-w)))/(((x+((y-z)/w))*(((x+y)/z)-w))*((((x/y)*z)-w)+((x+y)+(z/w)))))"
-"(((((x+y)/7.123)+((x*y)-7.123))+(((x*y)/7.123)+(x/(y-7.123))))+((((x*y)*7.123)-(x/(y*7.123)))-((x/(y/7.123))-(x-(y/7.123)))))"
-"(((((x-5.123)*z)-((x/5.123)/z))-(((x/5.123)*z)-(x*(5.123*z))))-(((x/(5.123+z))*(x*(5.123/z)))*((x-(5.123+z))*(x+(5.123-z)))))"
-"(((((x-5.123)/z)+((x/5.123)-z))+(((x/5.123)/z)+(x*(5.123-z))))+((((x/5.123)*z)-(x*(5.123*z)))-((x*(5.123/z))-(x+(5.123+z)))))"
-"(((((x-y)*(z*w))*(x+((y*z)*w)))*((x+((y*z)/w))+(((x*y)/z)-w)))*(((x+((y*z)*w))-(((x/y)/z)-w))-((((x*y)/z)-w)/((x-y)-(z*w)))))"
-"(((((x-y)*(z+w))*((x/y)*(z+w)))*(((x*y)*(z+w))+(x+((y/z)/w))))*((((x/y)*(z+w))-(x+((y/z)*w)))-((x+((y/z)/w))/((x*y)-(z*w)))))"
-"(((((x-y)*(z/w))/(x+((y/z)+w)))/((x+((y*z)*w))-(((x/y)/z)-w)))/(((x+((y/z)+w))*((x*y)+(z*w)))*((((x/y)/z)-w)+((x-y)-(z/w)))))"
-"(((((x-y)*7.123)-((x/y)/7.123))-(((x/y)*7.123)-(x*(y*7.123))))-(((x/(y+7.123))*(x*(y/7.123)))*((x-(y+7.123))*(x+(y-7.123)))))"
-"(((((x-y)+(z*w))+((x/y)-(z-w)))+(((x*y)-(z-w))*(x-(y*(z/w)))))+((((x/y)-(z-w))/(x+(y/(z*w))))/((x-(y*(z/w)))-(x-((y/z)*w)))))"
-"(((((x-y)+(z+w))-((x*y)*(z+w)))-(((x-y)*(z/w))/(x+((y/z)+w))))-((((x*y)*(z+w))+(x+((y/z)/w)))+((x+((y/z)+w))*((x*y)+(z*w)))))"
-"(((((x-y)+(z/w))-((x+y)*(z*w)))-(((x/y)-(z-w))/(x+(y/(z*w)))))-((((x+y)*(z*w))+(x-(y/(z*w))))+((x+(y/(z*w)))*(((x+y)*z)-w))))"
-"(((((x-y)-(z*w))*((x+y)*(z/w)))*(((x+y)*(z*w))+(x-(y/(z*w)))))*((((x+y)*(z/w))-(x+((y+z)/w)))-((x-(y/(z*w)))/(((x-y)*z)-w))))"
-"(((((x-y)-(z+w))+((x-y)*(z/w)))+(((x-y)*(z*w))*(x+((y*z)*w))))+((((x-y)*(z/w))/(x+((y/z)+w)))/((x+((y*z)*w))-(((x/y)/z)-w))))"
-"(((((x-y)-(z/w))/((x+y)/(z*w)))/(((x+y)*(z/w))-(x+((y+z)/w))))/((((x+y)/(z*w))*(x+((y+z)*w)))*((x+((y+z)/w))+(((x*y)*z)-w))))"
-"(((((x-y)/(z*w))+(x+((y-z)*w)))+((x+((y-z)/w))*(((x+y)/z)-w)))+(((x+((y-z)*w))/(((x-y)/z)-w))/((((x+y)/z)-w)-((x-y)+(z*w)))))"
-"(((((x-y)/(z+w))/((x*y)/(z+w)))/(((x/y)*(z+w))-(x+((y/z)*w))))/((((x*y)/(z+w))*(x-((y+z)/w)))*((x+((y/z)*w))+((x*y)+(z/w)))))"
-"(((((x-y)/(z/w))-(x+((y*z)/w)))-((x+((y-z)*w))/(((x-y)/z)-w)))-(((x+((y*z)/w))+(((x*y)/z)-w))+((((x-y)/z)-w)*((x-y)+(z/w)))))"
-"(((((x-y)/7.123)+((x/y)-7.123))+(((x/y)/7.123)+(x*(y-7.123))))+((((x/y)*7.123)-(x*(y*7.123)))-((x*(y/7.123))-(x+(y+7.123)))))"
-"(((((x/5.123)*z)-(x*(5.123*z)))-((x*(5.123/z))-(x+(5.123+z))))-(((x-(5.123+z))*(x+(5.123-z)))*(((x+5.123)/z)+((x*5.123)-z))))"
-"(((((x/5.123)+z)*(x/(5.123/z)))*((x*(5.123+z))*(x-(5.123*z))))*(((x*(5.123-z))/(x+(5.123*z)))/((x+(5.123/z))/((x-5.123)/z))))"
-"(((((x/5.123)-z)/(x*(5.123+z)))/((x*(5.123-z))/(x+(5.123*z))))/(((x*(5.123*z))+(x+(5.123/z)))+((x+(5.123+z))+((x-5.123)*z))))"
-"(((((x/5.123)/z)+(x*(5.123-z)))+((x*(5.123*z))+(x+(5.123/z))))+(((x*(5.123/z))-(x+(5.123+z)))-((x+(5.123-z))-((x*5.123)+z))))"
-"(((((x/y)*(z+w))-(x+((y/z)*w)))-((x+((y/z)/w))/((x*y)-(z*w))))-(((x+((y/z)*w))+((x*y)+(z/w)))+(((x*y)-(z*w))*((x+y)+(z-w)))))"
-"(((((x/y)*(z-w))/(x-((y*z)*w)))/((x-((y*z)/w))-(x/(y+(z*w)))))/(((x-((y*z)*w))*(x/(y-(z*w))))*((x/(y+(z*w)))+((x-y)/(z+w)))))"
-"(((((x/y)*7.123)-(x*(y*7.123)))-((x*(y/7.123))-(x+(y+7.123))))-(((x-(y+7.123))*(x+(y-7.123)))*(((x+y)/7.123)+((x*y)-7.123))))"
-"(((((x/y)+(z+w))/((x*y)*(z-w)))/(((x/y)/(z-w))-(x-((y-z)*w))))/((((x*y)*(z-w))*(x-((y*z)/w)))*((x-((y-z)*w))+((x/y)-(z*w)))))"
-"(((((x/y)+(z-w))-(x+(y*(z/w))))-(((x/y)*(z-w))/(x-((y*z)*w))))-(((x+(y*(z/w)))+(x-((y/z)/w)))+((x-((y*z)*w))*(x/(y-(z*w))))))"
-"(((((x/y)+(z/w))-((x-y)-(z+w)))-(((x+y)/(z-w))/((x-y)*(z*w))))-((((x-y)-(z+w))+((x-y)*(z/w)))+(((x-y)*(z*w))*(x+((y*z)*w)))))"
-"(((((x/y)+7.123)*(x/(y/7.123)))*((x*(y+7.123))*(x-(y*7.123))))*(((x*(y-7.123))/(x+(y*7.123)))/((x+(y/7.123))/((x-y)/7.123))))"
-"(((((x/y)-(z*w))/((x-y)*(z+w)))/(((x-y)+(z+w))-((x*y)*(z+w))))/((((x-y)*(z+w))*((x/y)*(z+w)))*(((x*y)*(z+w))+(x+((y/z)/w)))))"
-"(((((x/y)-(z+w))-((x*y)/(z-w)))-(((x/y)/(z+w))/(x-((y+z)*w))))-((((x*y)/(z-w))+(x-((y-z)/w)))+((x-((y+z)*w))*((x/y)+(z/w)))))"
-"(((((x/y)-(z-w))/(x+(y/(z*w))))/((x-(y*(z/w)))-(x-((y/z)*w))))/(((x+(y/(z*w)))*(((x+y)*z)-w))*((x-((y/z)*w))+(x*(y-(z*w))))))"
-"(((((x/y)-(z/w))*((x-y)+(z+w)))*(((x-y)-(z+w))+((x-y)*(z/w))))*((((x-y)+(z+w))-((x*y)*(z+w)))-(((x-y)*(z/w))/(x+((y/z)+w)))))"
-"(((((x/y)-7.123)/(x*(y+7.123)))/((x*(y-7.123))/(x+(y*7.123))))/(((x*(y*7.123))+(x+(y/7.123)))+((x+(y+7.123))+((x-y)*7.123))))"
-"(((((x/y)/(z+w))/(x-((y+z)*w)))/((x-((y+z)/w))-((x*y)-(z/w))))/(((x-((y+z)*w))*((x/y)+(z/w)))*(((x*y)-(z/w))+((x+y)/(z-w)))))"
-"(((((x/y)/(z-w))-(x-((y-z)*w)))-((x-((y-z)/w))/((x/y)-(z/w))))-(((x-((y-z)*w))+((x/y)-(z*w)))+(((x/y)-(z/w))*((x-y)+(z+w)))))"
-"(((((x/y)/7.123)+(x*(y-7.123)))+((x*(y*7.123))+(x+(y/7.123))))+(((x*(y/7.123))-(x+(y+7.123)))-((x+(y-7.123))-((x*y)+7.123))))"
-"((((3.123*(y*z))+(3.123+(y/z)))+((3.123+(y+z))+((3.123-y)*z)))+(((3.123+(y-z))-((3.123*y)+z))-(((3.123*y)-z)/(3.123/(y+z)))))"
-"((((3.123*(y+z))*(3.123-(y*z)))*((3.123+(y*z))*((3.123+y)+z)))*(((3.123+(y/z))/((3.123-y)/z))/(((3.123-y)*z)-((3.123/y)/z))))"
-"((((3.123*(y-z))/(3.123+(y*z)))/((3.123+(y/z))/((3.123-y)/z)))/(((3.123+(y+z))+((3.123-y)*z))+(((3.123*y)+z)*((3.123/y)*z))))"
-"((((3.123*(y/z))-(3.123+(y+z)))-((3.123+(y-z))-((3.123*y)+z)))-((((3.123+y)/z)+((3.123*y)-z))+(((3.123*y)/z)+(3.123/(y-z)))))"
-"((((3.123+(y*z))*((3.123+y)+z))*(((3.123-y)/z)+((3.123/y)-z)))*((((3.123-y)*z)-((3.123/y)/z))-(((3.123/y)*z)-(3.123*(y*z)))))"
-"((((3.123+(y+z))+((3.123-y)*z))+(((3.123*y)+z)*((3.123/y)*z)))+((((3.123*y)-z)/(3.123/(y+z)))/((3.123/(y-z))/(3.123-(y+z)))))"
-"((((3.123+(y-z))-((3.123*y)+z))-(((3.123*y)-z)/(3.123/(y+z))))-((((3.123*y)/z)+(3.123/(y-z)))+((3.123/(y*z))+(3.123-(y-z)))))"
-"((((3.123+(y/z))/((3.123-y)/z))/(((3.123-y)*z)-((3.123/y)/z)))/((((3.123*y)+z)*((3.123/y)*z))*((3.123/(y+z))*(3.123*(y/z)))))"
-"((((3.123-(y*z))-((3.123+y)-z))-(((3.123+y)+z)/((3.123/y)+z)))-((((3.123-y)/z)+((3.123/y)-z))+(((3.123/y)/z)+(3.123*(y-z)))))"
-"((((3.123-(y+z))*(3.123+(y-z)))*(((3.123+y)/z)+((3.123*y)-z)))*((((3.123+y)*z)-((3.123*y)/z))-(((3.123*y)*z)-(3.123/(y*z)))))"
-"((((3.123-(y-z))/((3.123+y)/z))/(((3.123+y)*z)-((3.123*y)/z)))/((((3.123+y)-z)*((3.123*y)*z))*(((3.123/y)+z)*(3.123/(y/z)))))"
-"((((3.123-(y/z))+((3.123+y)*z))+(((3.123+y)-z)*((3.123*y)*z)))+((((3.123+y)+z)/((3.123/y)+z))/(((3.123/y)-z)/(3.123*(y+z)))))"
-"((((3.123/(y*z))+(3.123-(y-z)))+((3.123-(y/z))+((3.123+y)*z)))+(((3.123-(y*z))-((3.123+y)-z))-(((3.123+y)+z)/((3.123/y)+z))))"
-"((((3.123/(y+z))*(3.123*(y/z)))*((3.123-(y+z))*(3.123+(y-z))))*(((3.123-(y-z))/((3.123+y)/z))/(((3.123+y)*z)-((3.123*y)/z))))"
-"((((3.123/(y-z))/(3.123-(y+z)))/((3.123-(y-z))/((3.123+y)/z)))/(((3.123-(y/z))+((3.123+y)*z))+(((3.123+y)-z)*((3.123*y)*z))))"
-"((((3.123/(y/z))-(3.123-(y/z)))-((3.123-(y*z))-((3.123+y)-z)))-(((3.123+(y*z))*((3.123+y)+z))*(((3.123-y)/z)+((3.123/y)-z))))"
-"((((x*(5.123*z))+(x+(5.123/z)))+((x+(5.123+z))+((x-5.123)*z)))+(((x+(5.123-z))-((x*5.123)+z))-(((x*5.123)-z)/(x/(5.123+z)))))"
-"((((x*(5.123+z))*(x-(5.123*z)))*((x+(5.123*z))*((x+5.123)+z)))*(((x+(5.123/z))/((x-5.123)/z))/(((x-5.123)*z)-((x/5.123)/z))))"
-"((((x*(5.123-z))/(x+(5.123*z)))/((x+(5.123/z))/((x-5.123)/z)))/(((x+(5.123+z))+((x-5.123)*z))+(((x*5.123)+z)*((x/5.123)*z))))"
-"((((x*(5.123/z))-(x+(5.123+z)))-((x+(5.123-z))-((x*5.123)+z)))-((((x+5.123)/z)+((x*5.123)-z))+(((x*5.123)/z)+(x/(5.123-z)))))"
-"((((x*(y*7.123))+(x+(y/7.123)))+((x+(y+7.123))+((x-y)*7.123)))+(((x+(y-7.123))-((x*y)+7.123))-(((x*y)-7.123)/(x/(y+7.123)))))"
-"((((x*(y+(z*w)))*((x/y)-(z+w)))*(((x*y)-(z+w))+((x/y)/(z+w))))*((((x/y)-(z+w))-((x*y)/(z-w)))-(((x/y)/(z+w))/(x-((y+z)*w)))))"
-"((((x*(y+7.123))*(x-(y*7.123)))*((x+(y*7.123))*((x+y)+7.123)))*(((x+(y/7.123))/((x-y)/7.123))/(((x-y)*7.123)-((x/y)/7.123))))"
-"((((x*(y-(z*w)))/((x*y)+(z+w)))/(((x/y)-(z+w))-((x*y)/(z-w))))/((((x*y)+(z+w))*((x/y)/(z-w)))*(((x*y)/(z-w))+(x-((y-z)/w)))))"
-"((((x*(y-7.123))/(x+(y*7.123)))/((x+(y/7.123))/((x-y)/7.123)))/(((x+(y+7.123))+((x-y)*7.123))+(((x*y)+7.123)*((x/y)*7.123))))"
-"((((x*(y/7.123))-(x+(y+7.123)))-((x+(y-7.123))-((x*y)+7.123)))-((((x+y)/7.123)+((x*y)-7.123))+(((x*y)/7.123)+(x/(y-7.123)))))"
-"((((x+((y*z)*w))-(((x/y)/z)-w))-((((x*y)/z)-w)/((x-y)-(z*w))))-(((((x/y)/z)-w)+((x-y)-(z/w)))+(((x-y)-(z*w))*((x+y)*(z/w)))))"
-"((((x+((y*z)/w))+(((x*y)/z)-w))+((((x-y)/z)-w)*((x-y)+(z/w))))+(((((x*y)/z)-w)/((x-y)-(z*w)))/(((x-y)+(z/w))-((x+y)*(z*w)))))"
-"((((x+((y+z)*w))-(((x/y)*z)-w))-((((x*y)*z)-w)/((x+y)+(z*w))))-(((((x/y)*z)-w)+((x+y)+(z/w)))+(((x+y)+(z*w))*((x/y)+(z-w)))))"
-"((((x+((y+z)/w))+(((x*y)*z)-w))+((((x-y)*z)-w)*((x+y)-(z/w))))+(((((x*y)*z)-w)/((x+y)+(z*w)))/(((x+y)-(z/w))-((x*y)+(z-w)))))"
-"((((x+((y-z)*w))/(((x-y)/z)-w))/((((x+y)/z)-w)-((x-y)+(z*w))))/(((((x-y)/z)-w)*((x-y)+(z/w)))*(((x-y)+(z*w))+((x/y)-(z-w)))))"
-"((((x+((y-z)/w))*(((x+y)/z)-w))*((((x/y)*z)-w)+((x+y)+(z/w))))*(((((x+y)/z)-w)-((x-y)+(z*w)))-(((x+y)+(z/w))/((x*y)-(z-w)))))"
-"((((x+((y/z)*w))+((x*y)+(z/w)))+(((x*y)-(z*w))*((x+y)+(z-w))))+((((x*y)+(z/w))/((x+y)*(z-w)))/(((x+y)+(z-w))-((x-y)/(z*w)))))"
-"((((x+((y/z)+w))*((x*y)+(z*w)))*((((x/y)/z)-w)+((x-y)-(z/w))))*((((x*y)+(z*w))-((x+y)-(z-w)))-(((x-y)-(z/w))/((x+y)/(z*w)))))"
-"((((x+((y/z)/w))/((x*y)-(z*w)))/(((x*y)+(z*w))-((x+y)-(z-w))))/((((x*y)-(z*w))*((x+y)+(z-w)))*(((x+y)-(z-w))+((x+y)/(z/w)))))"
-"((((x+(5.123*z))*((x+5.123)+z))*(((x-5.123)/z)+((x/5.123)-z)))*((((x-5.123)*z)-((x/5.123)/z))-(((x/5.123)*z)-(x*(5.123*z)))))"
-"((((x+(5.123+z))+((x-5.123)*z))+(((x*5.123)+z)*((x/5.123)*z)))+((((x*5.123)-z)/(x/(5.123+z)))/((x/(5.123-z))/(x-(5.123+z)))))"
-"((((x+(5.123-z))-((x*5.123)+z))-(((x*5.123)-z)/(x/(5.123+z))))-((((x*5.123)/z)+(x/(5.123-z)))+((x/(5.123*z))+(x-(5.123-z)))))"
-"((((x+(5.123/z))/((x-5.123)/z))/(((x-5.123)*z)-((x/5.123)/z)))/((((x*5.123)+z)*((x/5.123)*z))*((x/(5.123+z))*(x*(5.123/z)))))"
-"((((x+(y*(z/w)))+(x-((y/z)/w)))+((x-((y*z)*w))*(x/(y-(z*w)))))+(((x-((y/z)/w))/(x*(y+(z*w))))/((x/(y-(z*w)))-((x*y)-(z+w)))))"
-"((((x+(y*7.123))*((x+y)+7.123))*(((x-y)/7.123)+((x/y)-7.123)))*((((x-y)*7.123)-((x/y)/7.123))-(((x/y)*7.123)-(x*(y*7.123)))))"
-"((((x+(y+7.123))+((x-y)*7.123))+(((x*y)+7.123)*((x/y)*7.123)))+((((x*y)-7.123)/(x/(y+7.123)))/((x/(y-7.123))/(x-(y+7.123)))))"
-"((((x+(y-7.123))-((x*y)+7.123))-(((x*y)-7.123)/(x/(y+7.123))))-((((x*y)/7.123)+(x/(y-7.123)))+((x/(y*7.123))+(x-(y-7.123)))))"
-"((((x+(y/(z*w)))*(((x+y)*z)-w))*((x-((y/z)*w))+(x*(y-(z*w)))))*(((((x+y)*z)-w)-((x+y)-(z*w)))-((x*(y-(z*w)))/((x*y)+(z+w)))))"
-"((((x+(y/7.123))/((x-y)/7.123))/(((x-y)*7.123)-((x/y)/7.123)))/((((x*y)+7.123)*((x/y)*7.123))*((x/(y+7.123))*(x*(y/7.123)))))"
-"((((x-((y*z)*w))*(x/(y-(z*w))))*((x/(y+(z*w)))+((x-y)/(z+w))))*(((x/(y-(z*w)))-((x*y)-(z+w)))-(((x-y)/(z+w))/((x*y)/(z+w)))))"
-"((((x-((y*z)/w))-(x/(y+(z*w))))-(((x/y)-(z*w))/((x-y)*(z+w))))-(((x/(y+(z*w)))+((x-y)/(z+w)))+(((x-y)*(z+w))*((x/y)*(z+w)))))"
-"((((x-((y+z)*w))*((x/y)+(z/w)))*(((x*y)-(z/w))+((x+y)/(z-w))))*((((x/y)+(z/w))-((x-y)-(z+w)))-(((x+y)/(z-w))/((x-y)*(z*w)))))"
-"((((x-((y+z)/w))-((x*y)-(z/w)))-(((x*y)+(z/w))/((x+y)*(z-w))))-((((x*y)-(z/w))+((x+y)/(z-w)))+(((x+y)*(z-w))*((x-y)/(z/w)))))"
-"((((x-((y-z)*w))+((x/y)-(z*w)))+(((x/y)-(z/w))*((x-y)+(z+w))))+((((x/y)-(z*w))/((x-y)*(z+w)))/(((x-y)+(z+w))-((x*y)*(z+w)))))"
-"((((x-((y-z)/w))/((x/y)-(z/w)))/(((x/y)+(z/w))-((x-y)-(z+w))))/((((x/y)-(z/w))*((x-y)+(z+w)))*(((x-y)-(z+w))+((x-y)*(z/w)))))"
-"((((x-((y/z)*w))+(x*(y-(z*w))))+((x*(y+(z*w)))*((x/y)-(z+w))))+(((x*(y-(z*w)))/((x*y)+(z+w)))/(((x/y)-(z+w))-((x*y)/(z-w)))))"
-"((((x-((y/z)/w))/(x*(y+(z*w))))/((x/(y-(z*w)))-((x*y)-(z+w))))/(((x*(y+(z*w)))*((x/y)-(z+w)))*(((x*y)-(z+w))+((x/y)/(z+w)))))"
-"((((x-(5.123*z))-((x+5.123)-z))-(((x+5.123)+z)/((x/5.123)+z)))-((((x-5.123)/z)+((x/5.123)-z))+(((x/5.123)/z)+(x*(5.123-z)))))"
-"((((x-(5.123+z))*(x+(5.123-z)))*(((x+5.123)/z)+((x*5.123)-z)))*((((x+5.123)*z)-((x*5.123)/z))-(((x*5.123)*z)-(x/(5.123*z)))))"
-"((((x-(5.123-z))/((x+5.123)/z))/(((x+5.123)*z)-((x*5.123)/z)))/((((x+5.123)-z)*((x*5.123)*z))*(((x/5.123)+z)*(x/(5.123/z)))))"
-"((((x-(5.123/z))+((x+5.123)*z))+(((x+5.123)-z)*((x*5.123)*z)))+((((x+5.123)+z)/((x/5.123)+z))/(((x/5.123)-z)/(x*(5.123+z)))))"
-"((((x-(y*(z/w)))-(x-((y/z)*w)))-((x-((y/z)/w))/(x*(y+(z*w)))))-(((x-((y/z)*w))+(x*(y-(z*w))))+((x*(y+(z*w)))*((x/y)-(z+w)))))"
-"((((x-(y*7.123))-((x+y)-7.123))-(((x+y)+7.123)/((x/y)+7.123)))-((((x-y)/7.123)+((x/y)-7.123))+(((x/y)/7.123)+(x*(y-7.123)))))"
-"((((x-(y+7.123))*(x+(y-7.123)))*(((x+y)/7.123)+((x*y)-7.123)))*((((x+y)*7.123)-((x*y)/7.123))-(((x*y)*7.123)-(x/(y*7.123)))))"
-"((((x-(y-7.123))/((x+y)/7.123))/(((x+y)*7.123)-((x*y)/7.123)))/((((x+y)-7.123)*((x*y)*7.123))*(((x/y)+7.123)*(x/(y/7.123)))))"
-"((((x-(y/(z*w)))/(((x-y)*z)-w))/((((x+y)*z)-w)-((x+y)-(z*w))))/(((((x-y)*z)-w)*((x+y)-(z/w)))*(((x+y)-(z*w))+((x/y)+(z+w)))))"
-"((((x-(y/7.123))+((x+y)*7.123))+(((x+y)-7.123)*((x*y)*7.123)))+((((x+y)+7.123)/((x/y)+7.123))/(((x/y)-7.123)/(x*(y+7.123)))))"
-"((((x/(5.123*z))+(x-(5.123-z)))+((x-(5.123/z))+((x+5.123)*z)))+(((x-(5.123*z))-((x+5.123)-z))-(((x+5.123)+z)/((x/5.123)+z))))"
-"((((x/(5.123+z))*(x*(5.123/z)))*((x-(5.123+z))*(x+(5.123-z))))*(((x-(5.123-z))/((x+5.123)/z))/(((x+5.123)*z)-((x*5.123)/z))))"
-"((((x/(5.123-z))/(x-(5.123+z)))/((x-(5.123-z))/((x+5.123)/z)))/(((x-(5.123/z))+((x+5.123)*z))+(((x+5.123)-z)*((x*5.123)*z))))"
-"((((x/(5.123/z))-(x-(5.123/z)))-((x-(5.123*z))-((x+5.123)-z)))-(((x+(5.123*z))*((x+5.123)+z))*(((x-5.123)/z)+((x/5.123)-z))))"
-"((((x/(y*7.123))+(x-(y-7.123)))+((x-(y/7.123))+((x+y)*7.123)))+(((x-(y*7.123))-((x+y)-7.123))-(((x+y)+7.123)/((x/y)+7.123))))"
-"((((x/(y+(z*w)))+((x-y)/(z+w)))+(((x-y)*(z+w))*((x/y)*(z+w))))+((((x-y)/(z+w))/((x*y)/(z+w)))/(((x/y)*(z+w))-(x+((y/z)*w)))))"
-"((((x/(y+7.123))*(x*(y/7.123)))*((x-(y+7.123))*(x+(y-7.123))))*(((x-(y-7.123))/((x+y)/7.123))/(((x+y)*7.123)-((x*y)/7.123))))"
-"((((x/(y-(z*w)))-((x*y)-(z+w)))-(((x-y)/(z+w))/((x*y)/(z+w))))-((((x*y)-(z+w))+((x/y)/(z+w)))+(((x*y)/(z+w))*(x-((y+z)/w)))))"
-"((((x/(y-7.123))/(x-(y+7.123)))/((x-(y-7.123))/((x+y)/7.123)))/(((x-(y/7.123))+((x+y)*7.123))+(((x+y)-7.123)*((x*y)*7.123))))"
-"((((x/(y/7.123))-(x-(y/7.123)))-((x-(y*7.123))-((x+y)-7.123)))-(((x+(y*7.123))*((x+y)+7.123))*(((x-y)/7.123)+((x/y)-7.123))))"
-"((0.43*((((((((((((((((((((sin((a+a))-pi)/0.93)-pi)/2.65)+2.40)+pi)/b)+3.69)-b)+a)*a)*e)*2.99)+b)-0.38)+b)+a)-a)*a)-1.03))-b)"
-"((sin((b/((((cos(sin(((cos(tan(((((sin(cos((tan(((((a*e)+e)-1.16)*2.81))-a)))+a)+a)+b)+b)))-0.65)+0.86)))-a)+b)+b)*a)))*a)*e)"
-"((((a+(((((((((((((((((((2.46/a)+b)-a)*a)/3.46)+1.50)*2.67)*b)*0.61)*a)/a)*1.43)+a)*b)*e)*0.03)+1.91)+e)*0.57))-a)+3.13)-0.89)"
-"((a+(((((b+(a*((((((a/((((((((((((a-1.63)/3.60)-pi)+e)-pi)-a)+pi)-2.13)-a)+e)/a)*pi))-pi)+b)/3.14)+pi)-a)))*b)-a)+b)+0.22))+b)"
-"((cos(tan((((sin((b+cos((((((((((b+(((cos(tan((cos(sin((1.07*a)))-a)))+e)+e)/a))+e)/pi)+b)-b)+a)+a)*a)-b))))*b)+e)/e)))*pi)/e)"
-"(((((((((((((2.69/(((((((e*(((3.79/a)/pi)+b))+e)+0.54)/2.70)+1.45)-pi)+pi))+2.74)+pi)/b)/pi)+b)-b)+0.15)*pi)+2.75)/a)+3.11)/pi)"
-"(((((1.99-((((((((((b+((((((a-(((((2.33-pi)/b)+2.46)+b)-b))/pi)-b)*pi)/b)*pi))+0.42)/a)+e)/a)*pi)/a)+0.06)-b)*a))/pi)-pi)+e)-b)"
-"((2.72/((((e+(((((((((((((((((((((((2.18*pi)*a)*b)*a)-b)-a)-e)/b)+a)+pi)-e)-pi)+a)+b)/e)-b)+b)*e)+a)/e)-a)-b)-a))+b)/b)+pi))-a)"
-"((e+(((((((((pi+((((((((3.51+((((1.30-(0.35+2.88))/pi)+b)/e))*e)-2.31)/1.96)-0.04)*3.50)+b)/e))/a)+pi)-e)+a)*b)+a)-b)/e))*3.82)"
-"(cos(tan(cos((((((cos(sin(cos((a+cos((((((((((tan(((a+3.21)/a))/b)*e)+b)-b)*pi)*e)/0.12)+b)-a))))))/b)-0.27)-a)*pi)*a))))-3.85)"
-"(e*tan(sin((((b*((b/((((tan((e/((sin(tan(sin((((tan((b+sin(cos(a))))*a)/3.09)+b))))/1.03)*e)))-b)*pi)+b)*3.80))/a))+b)*3.81))))"
-"x+y+z/w+x+y+z*w+x+y-z/w-x+y-z*w+x+y*z/w*x+y*z*w-x+y/z+w+x+y/z/w+x+y/z*w-x-y+z/w*x-y+z*w*x-y-z/w-x-y-z*w+x-y*z/w+x-y*z*w-x-y/z/w"
-"x-y-z+w+x-y-z+w+x-y+z+w-x-y+z+w+x*y-z+w*x/y-z+w-x*y+z+w+x/y+z+w+x*y+z-w-x/y+z-w*x*y-z-w*x/y-z-w-x+y*z*w+x+y*z/w+x+y/z*w-x+y/z/w"
-"x-y/z*w*x+y*z-w-x-y*z-w+x*y*z-w*x/y*z-w-x+y/z-w*x-y/z-w*x*y/z-w-x/y/z-w+x*y+z*w+x*y-z*w-x*y+z/w+x*y-z/w*x/y+z/w-x/y-z/w+x/y-z*w"
-"x/y+z*w-x/y-z*w*x*y+z*w*x*y-z*w-x+y-z*w+x+y-z/w+x+y+z*w-x+y+z/w*x-y+z*w*x-y+z/w-x-y-z*w+x-y-z/w*x+y-z-w-x+y-z-w*x+y+z-w*x+y+z-w"
-"(((((((((((((((((((((((((b+e)+pi)-e)-b)*1.94)*b)+3.48)+b)+a)*pi)*a)/2.09)-a)-2.93)-b)-pi)-a)-3.49)/1.72)+pi)*0.76)-e)/pi)+a)+pi)"
-"(((((b+((((((((((((((2.12+(((((((pi+1.34)*a)+a)+0.36)+a)+b)-pi))-0.40)-pi)-e)+a)*a)*e)+1.74)+a)*pi)/b)+b)/a)+a))/e)*1.23)-pi)+a)"
-"((((sin((tan((tan(tan(tan((((((((tan((b+(((sin((b/((1.60*a)+b)))/e)*1.56)*a)))+1.64)/a)*b)-3.35)*pi)/a)/a))))+a))+b))+a)+b)/a)-b)"
-"((b+(((((((a-((((((((((((((1.13+((b*b)-b))-a)-e)*b)-1.52)*b)+pi)+e)*3.56)/1.80)+0.13)-1.36)/2.64)-b))/b)+0.95)+pi)/a)+1.29)/e))+a)"
-"cos((a-(sin((((pi-tan((tan((sin((((cos((((((((sin(cos((((b/b)*b)-b)))+b)-a)+b)-a)*e)/e)+e))+2.59)-pi)+pi))-e))+a)))/1.07)*e))*e)))"
-"((((((((((((((((((((((((((b/0.86)/b)+b)-b)+3.31)/3.15)+e)+b)*a)+b)/pi)-pi)/pi)*a)+b)/pi)/2.17)/2.58)+pi)+a)+3.44)-b)-a)/e)+b)+3.71)"
-"(((((((((((((((((((((((((a+(2.03/pi))*b)+b)*3.69)*a)-b)+a)+a)+a)/e)-a)-0.23)+a)+b)/a)+1.45)*0.86)*0.94)+e)+0.22)/3.49)+b)/pi)+b)/b)"
-"(((((((3.80/((((((a+(((((1.59/(((b*((((a-a)*pi)+a)*pi))/1.13)+0.65))*a)+2.86)*e)+b))+e)-a)*pi)/a)+0.85))+2.45)+a)+b)+3.26)/b)/3.78)"
-"((3.74*((b*(tan(sin((2.75-(((((((sin((((((tan((cos(((e*e)-pi))/pi))*2.93)-a)-e)+a)-a))*a)/0.96)/2.54)+e)*b)-e)/b))))+3.57))-pi))*a)"
-"((sin(((tan((((((tan(cos((pi*((tan(((3.80/((((((a+0.40)+a)-2.93)+1.03)/pi)/a))/a))-a)*pi))))+a)*pi)/1.13)+0.65)*a))+2.86)*e))+b)+e)"
-"cos((((((1.25/(a+(sin((((tan((((0.97+((((sin((cos(((pi*b)-a))+pi))/b)-a)+pi)*0.60))*1.41)/3.44))*a)+b)+pi))/2.85)))+2.45)+a)+a)+a))"
-"tan(sin(cos((tan(((tan((a+(((sin(((tan(((((((((b+(sin(a)-pi))+0.73)/a)*3.23)+a)+b)-e)*pi))+a)+pi))+b)+2.20)/1.13)))+b)*0.53))+e))))"
-"(cos(sin(((tan(((b/((((sin((tan(sin(cos((sin(cos((((tan((((b-pi)/2.60)+b))+b)+b)+0.04)))+e))))+b))+a)/3.36)-a)+a))*b))*0.10)*b)))+a)"
-"tan((cos(((b+cos(((((sin(((pi-cos(sin((tan((cos((((e*((cos(((cos(pi)+pi)/b))+e)+e))-e)-b))+a))*b))))-e))+0.08)*a)-0.05)+a)))/a))-a))"
-"((((((((((((((((((((((a+((((pi-b)+pi)-pi)+b))+a)+b)+0.98)+2.37)/a)-b)+a)*e)-1.17)*1.43)+1.80)/b)+a)+a)+b)+0.94)*pi)+e)+e)+1.64)-2.45)"
-"((((((((3.09+(((3.33+(((((((((((((((((e*a)/b)*a)-pi)-e)+a)+a)+b)-a)/pi)-1.40)*2.07)+a)*a)/b)+0.72)+a))*b)-b))+a)/a)+e)/a)*0.56)/a)-b)"
-"(((((a*(((((((((((((pi-(((((((((b+a)-2.28)*a)*e)/e)-pi)+b)+1.65)+a))/1.22)/b)+a)/b)+b)*e)*a)/3.43)+a)+2.97)+b)+1.24))/pi)/2.21)*b)/a)"
-"((e+cos((((((a/tan((cos(tan(((pi*((2.39+(e/tan(((((a+(((cos(sin((a+b)))+pi)-e)*b))+e)+a)*e))))/2.78))*b)))/pi)))+pi)+e)/e)+0.80)))/b)"
-"cos(((pi+((a-tan(((b/(((2.38-((sin((a*(b+tan((e+((sin(cos((((tan(((b+e)/b))/a)+pi)+2.90)))*b)+1.85))))))-e)+b))+e)+a))/e)))/pi))+pi))"
-"sin(sin((((((a+(3.45-((((((cos((tan((((sin(tan(((((0.75+a)/e)+e)+b)))+a)*b)+0.89))-b))+a)+a)-pi)/1.44)+e)+1.82)))+e)-1.77)-a)*3.33)))"
-"(((((((((((((((a+((b/(((e/((((((((b+pi)/3.15)*pi)/a)+e)+2.71)+a)/b))*b)/b))+pi))+0.18)/a)+a)+a)+b)*b)-3.96)-0.14)+b)*3.50)-b)+a)/e)*b)"
-"(((0.44+(((tan((((b+(cos(((((sin(((((tan((cos((1.59*1.71))+b))+b)-0.34)+b)-2.95))*e)-a)*3.89)-1.07))+pi))*a)+2.54))*b)*0.50)*b))*b)/a)"
-"((tan(((tan(tan((cos(sin((tan(((((tan(sin((((((0.91+(cos((2.72+1.16))*b))+pi)+a)+2.90)*b)))/a)+b)/b)*e))*2.08)))-e)))*3.02)+pi))/a)-a)"
-"(e-tan((((((((((((((((sin((a-(((2.21+(cos((((a/pi)-e)-pi))-3.45))+b)+b)))/e)/b)/1.89)/pi)+b)*pi)/a)-e)+0.27)/b)+2.31)+2.81)+e)+b)*a)))"
-"(sin(((cos((((((cos(((((0.54/sin((((tan((((((((a+a)-b)+b)+pi)+b)-pi)/b))+b)*b)+3.07)))-1.27)-0.49)-2.23))/a)+b)+a)+b)*b))/1.63)-a))/b)"
-"((((((((((((((((a-(((((((b-(((pi-((3.41-b)-pi))/b)*pi))/1.06)/a)-a)*1.15)*a)/pi))+b)+b)*pi)-a)-3.92)+b)+b)/b)*a)+3.07)+a)-b)-pi)/pi)*b)"
-"(((a+(((((a+((((((((((((((((((1.84-(3.61/b))-a)-b)+0.84)-a)+a)*a)-b)/e)-2.63)*a)*pi)*0.70)+a)/a)/a)+e)+a))-pi)-2.55)-a)-0.55))+0.05)/b)"
-"(pi*((((((((((((((((((((((((((1.96+1.54)+1.47)+a)*a)-b)+1.70)+3.28)+b)+b)-b)/b)/b)-0.26)-pi)+pi)/e)+a)/3.48)+pi)-b)-pi)-b)+a)+a)/e)*b))"
-"((((((((((0.75+(((3.86+((a/(((((e*((((a-((e/b)+b))/pi)+a)/3.71))*1.10)+0.38)-e)+a))-2.56))+0.78)*a))-b)-a)+b)+1.98)/b)+2.69)+b)+e)-1.90)"
-"(pi+(a+(tan((sin((((sin((cos(((a+((((((tan(sin(((sin(((a-cos(tan(a)))-e))/b)/b)))/a)+a)-a)/e)-pi)/e))-b))+a))*1.23)*3.86)+pi))+b))+pi)))"
-"((sin((0.45-(cos((((cos(((((cos((((tan(((0.27*((cos(((b+(b/a))*b))+e)-a))+a))-a)+1.36)/2.15))*a)*0.62)+pi)+b))/e)*b)/2.76))+3.55)))/a)+a)"
-"(1.95/(((b-(sin((((((cos((e/((0.35+(tan((sin((b-sin(((sin(((tan(3.04)/pi)+a))-pi)/pi))))*0.10))+a))/0.97)))+a)+pi)-e)+b)/e))+a))+pi)+pi))"
-"sin((tan((a*(((((((b/((sin((b-((cos((sin((((sin((((((b/pi)+b)/b)+b)+a))+pi)/pi)+a))/b))/pi)+1.24)))+0.12)*b))+a)+0.27)+pi)*a)+b)+b)))/a))"
-"(((((((((1.57/((((((((((((((pi/((3.22*((b+b)*a))*b))+pi)+pi)*3.95)+b)-b)/b)+e)+a)+a)+b)-3.33)/b)+a))*b)/pi)+e)+1.46)/0.09)*2.78)/pi)/3.85)"
-"((((b-(((((1.88+(((e-(2.19*(((((((pi*(((((((a+pi)/b)/pi)/b)/a)+3.33)/a))-b)/a)*pi)+a)/e)*pi)))-a)+b))*0.55)+b)-1.99)*3.57))+0.28)+e)-1.31)"
-"(((a+(((pi+sin(((cos((((((((2.27/(sin(cos((((tan(((tan(((b/b)+3.73))*a)*3.17))*b)*pi)*b)))+e))-pi)-2.06)/b)-e)/a)+e))/b)+a)))/b)+a))*e)*a)"
-"((((((((((((((((((((a*(((((b/(((((b-3.86)-pi)+pi)+pi)-3.94))/b)+pi)+2.51)/pi))+b)+1.74)+b)-b)/e)+pi)+b)+b)/b)+e)*b)+b)+a)+a)+a)/b)+b)+b)-a)"
-"((((((e+(((((((e-(((((b+((((((((e+(2.83+((b*a)*a)))+b)+a)-pi)+3.91)-e)-e)*b))+b)*a)-b)/0.83))+pi)-a)-0.27)+pi)/1.95)+1.93))*e)+b)+b)+a)-pi)"
-"(sin(((((((a*((cos((((((((((a+(cos((((a+sin(((e+0.21)-b)))/0.25)/0.96))*e))-e)/a)+e)+b)/b)*b)/pi)-b))+0.93)/3.90))+0.67)+a)*a)*e)/e))+1.67)"
-"((((((((((((((((((((((((((((a/a)-b)+b)-b)/3.07)-b)*0.79)/b)*b)/2.94)+0.76)-0.04)*0.60)/a)+a)+b)/1.05)-a)+b)/a)/e)-2.16)+b)+e)*a)*e)+e)*0.87)"
-"(((((((((1.43-((((((((((((((b-((((b+b)-b)/pi)/b))+pi)-pi)+pi)*b)+1.34)-a)/b)*3.87)+1.81)/2.91)+a)-b)+3.62))-e)+b)+3.03)/a)+0.68)+a)+1.51)*e)"
-"(((((b+((((((((((((((((((((((a/pi)/a)/a)/0.82)*e)-e)*1.67)*pi)+pi)-a)-b)+e)-a)+pi)+2.45)-b)+2.72)+3.72)+a)*b)/3.78)+b))+0.94)-0.47)/1.03)*b)"
-"(((((tan(((((tan((sin((((((pi*((b-(sin(((((pi*e)*0.86)-pi)+3.04))/a))+a))+e)+3.81)*e)+b))+a))+pi)+a)-3.18)*2.67))/b)-1.90)+2.89)+1.25)+3.93)"
-"((((((((((b+(((((((((((((((((0.75*pi)+2.45)/pi)+b)-e)+3.63)*pi)/2.47)-b)-2.80)-a)-b)*e)+pi)/b)+b)-2.78))+e)/2.20)-a)*pi)/pi)-b)+1.99)-pi)-pi)"
-"((((pi*((((((((3.85/(((((((((((((((((b+a)/pi)+pi)-a)+a)/b)+a)-0.68)/b)/3.05)/a)+a)+3.72)*a)-e)*a)+e))-e)+a)/1.96)-e)*a)-b)-b))+0.81)-e)/2.79)"
-"(a+cos((((pi-(cos((((((cos((((2.07/((((tan(tan((sin((sin(tan(((b*2.18)-pi)))+a))*pi)))+pi)-b)/a)+a))+a)/e))+2.96)/a)+1.92)*a)-a))-e))+b)/b)))"
-"cos(((cos(((cos(tan(sin(sin((((((((((sin(cos((2.38+(((((pi-a)*2.96)-a)/e)+b))))/2.60)+3.41)+pi)+b)/a)/a)-1.86)*3.57)+e)))))/pi)-2.41))+b)/a))"
-"cos(((tan(((tan((b+(b+(((sin(((a+cos(cos((tan(tan((2.70+(0.15*(((2.37-cos(cos(b)))/b)/a)))))/a))))-1.15))+b)+1.96)+pi))))*1.40)+a))*1.62)+b))"
-"sin(((pi-((tan((cos((((((cos((sin(((tan((((((pi+(((3.17*(a*3.32))+pi)*b))/b)+a)+a)*3.87))+a)-2.05))*e))-b)-b)+b)+b)/0.96))+b))+pi)+1.89))+b))"
-"((b+((((((((((((a+(b-((((e-(pi*(((((((((b-b)+pi)-pi)-b)*1.77)*2.53)*3.35)+a)+a)))*e)+pi)+b)))-b)+b)-a)+pi)+pi)/a)+a)*1.31)/1.16)*a)-pi))*3.69)"
-"(((((((((((((((((((((((((((((((3.05*2.33)-e)+a)-a)*1.81)-2.57)+a)*b)/2.89)/e)/a)*pi)+pi)+b)-a)*pi)-b)/a)/b)/b)/e)+b)/b)+b)-b)+e)*b)/b)/b)-a)-b)"
-"((((1.59/((((((3.51-((((((((((((((((((1.99-a)-a)+a)*b)+a)/e)+2.74)/pi)*e)*3.74)+e)+e)/3.87)*3.78)+e)/b)/b)*b))-0.12)*a)-2.37)+pi)*a))+a)+e)+pi)"
-"cos((sin(sin(((sin((((((((((sin((((e+sin(((pi*tan((((((tan(2.85)+e)+0.96)/a)-b)*a)))+b)))+a)*a))+b)/1.65)/e)+b)+e)-b)+1.55)*pi)/a))+a)+a)))-b))"
-"tan((((1.95-((pi/tan((((3.37+(a-((((sin((sin(sin(((tan(tan((((a/(((1.01+1.22)*b)/b))-a)+a)))+1.55)+b)))*2.05))-b)+b)+b)-a)))/e)+a)))+b))+e)-a))"
-"(((((((b+(((((((b+(((((((a-(((((e+(((((a/b)*b)+b)+b)+b))+3.15)-a)*b)/e))+b)/e)*pi)-a)+b)/a))*2.28)+b)-e)+1.90)+e)+a))-a)-2.81)+a)-0.75)+e)-3.43)"
-"((((b-((((((((e+((((((((((((((2.28*(((0.51/((pi*a)*e))+a)-b))+pi)+b)+pi)*b)*b)*1.49)/b)*e)/b)-e)*a)/b)/b))*b)/e)-0.66)+e)+b)*e)+e))+pi)-a)*1.78)"
-"(0.70/((a+tan((((sin(((cos(((pi*(((((b+(((sin(((((((a+pi)+3.07)+b)+3.52)-0.55)*a))-b)-1.65)+a))-1.92)+b)/2.80)+a))+0.20))+a)+a))/pi)+b)/a)))/a))"
-"(b/(cos(((((((a-((tan(((((b+sin(cos((cos((tan(tan(((cos((0.30-(((b+a)+pi)+a)))+pi)+a)))*a))+1.02))))/a)/1.09)/b))-a)/b))+b)-0.98)*e)/a)/a))-pi))"
-"((((((((((((((((((2.05*((((((b+((((pi*b)+b)*a)-3.89))+a)+0.31)*pi)-2.86)+a))*0.74)/e)/1.93)+a)-e)+b)/3.44)*b)*0.50)*2.06)/b)+e)-e)*a)+2.28)/a)/e)"
-"(((((((a+(((((b+((b+(((b+((b+((((((((((a-b)+b)+1.54)+3.69)*0.85)+0.54)+a)*a)-b)-1.01))+a))/pi)-b))*a))*a)/a)+0.23)-3.29))/2.04)*e)+1.04)/a)+b)-a)"
-"(b*(((b+(((((((((((((((((((((((((((pi+a)/e)+e)+b)/pi)-pi)/a)+0.85)/b)*3.94)/pi)-a)*pi)-a)-a)+pi)*pi)+b)*a)+a)+b)+pi)-a)-2.49)+a)-0.28)/a))-b)+b))"
-"((((((((((((((((((((e+(((e/(a+(((((b+b)*e)+b)*pi)*3.48)))-b)-3.41))-a)/2.12)*e)+e)-b)+a)*3.00)-a)/a)-pi)-1.11)-a)-a)+2.44)+0.04)-3.79)-a)+2.01)-a)"
-"(((((((((((((((((1.17-(pi-(b-((((((((((1.38+b)+a)+b)+e)-a)+0.89)+a)*2.38)*pi)+a))))-b)-a)+b)-b)/a)+pi)/4.00)-a)/2.66)/b)*b)+pi)+2.29)+2.05)*pi)*a)"
-"(((((2.17-(pi*((((((((((((((((((((a/(((((b+b)-e)*b)*a)-b))/a)+b)+a)+a)/1.88)-3.41)-e)*1.51)*a)/e)-a)+b)/1.83)/a)-pi)*a)/1.31)+b)+b)))*e)/e)*a)*pi)"
-"(((b-((((((2.17+((((((((((((((((((b/(((a+0.63)/b)+pi))-pi)/a)*0.11)-e)+a)/a)+3.51)+pi)*e)+e)+pi)-3.04)/1.94)-a)*a)/a)-a))-e)/e)/b)*a)/0.27))+e)/b)"
-"((1.34+((((a-((((((((a-(((((((1.68+(((((((((e+e)+e)+0.82)+a)+e)+e)+b)+b)/a))*a)/a)-a)+e)-e)/1.63))*0.14)*a)+a)*a)/3.72)-0.13)*b))-pi)-3.00)-a))-b)"
-"(pi-sin(((cos(tan(((2.73+cos(tan(((((((((((((((sin(sin((((b+b)+a)-b)))-a)+pi)+b)*3.31)+3.68)/b)-3.28)+a)-b)*a)-1.77)+a)/e)*2.39))))+b)))+a)*1.51)))"
-"tan((3.80*cos(((((((2.52-(sin((a+((sin((tan((((b-(1.24*((cos((((((b-0.38)*a)+a)+0.73)-a))-b)+a)))+a)*pi))+1.20))+b)/a)))-b))*pi)+0.37)+a)-pi)*b))))"
-"tan(tan(((((tan((((((((tan(cos(cos((((e-((((((cos((((b+(e*a))-a)/pi))+b)/b)/b)+0.47)-b)*b))-b)-pi))))/1.94)+a)/a)-pi)*3.99)+0.31)+e))*a)+a)+b)+b)))"
-"(a+(((((e/((((((2.42+((((e*(1.24+((((((2.78/((((3.53+(a-((b/b)*b)))*b)*a)*3.14))+a)*b)+b)-1.75)+pi)))*b)+e)-pi))+0.87)*e)+pi)+a)*b))*1.21)+a)-a)+b))"
-"((((((((((((((((((((((((2.14+((((a+((3.62-pi)+2.46))*2.18)+b)-a))+e)+0.96)+a)+pi)*2.09)*a)*e)+a)/2.72)/a)+a)/e)+b)*a)+a)/a)+a)*b)+0.28)+b)/pi)*a)+pi)"
-"(((((((((((pi+((e+(a*((((a-(((((((((((pi/pi)/0.75)-pi)-1.56)+b)/1.40)/a)/a)*a)*a)*pi))-3.24)+a)*b)))+3.43))-0.66)/a)+1.42)*0.01)-0.06)/a)-b)-a)*e)+a)"
-"((((((((((b+(((((((e+(((3.30+(b*(((1.54*((3.80*(pi+a))+1.89))/0.32)/a)))+3.98)-b))-b)/b)-b)-1.91)-3.06)+1.71))/e)+b)/1.90)+0.75)-a)-a)+0.82)+0.26)*b)"
-"(((a*((((a+(b+(((b+((tan((((b*(b+sin(((((a/(((b+tan((tan((((cos(a)*1.25)*a)+pi))-pi)))-b)/b))+b)*b)+e))))+a)-a))+b)*a))*e)*2.97)))*b)*b)/pi))/pi)-pi)"
-"((tan((tan(tan((((((((((((tan(((pi-(a-(tan(tan((e+(tan(((3.13+1.42)+a))+b))))+a)))+0.03))+b)+pi)+a)*pi)-pi)-1.61)*e)-a)*pi)*pi)*1.59)))/pi))-3.30)+b)"
-"((3.18-(tan(((cos((pi-((b-(2.13-((((((((cos(((pi+((sin(((tan(3.97)+0.11)/0.68))-b)/a))+a))*b)+1.61)*e)+0.01)/b)*b)-1.36)/a)))+1.11)))-b)-b))*a))-1.54)"
-"(3.71/((((tan(sin((sin((cos((((a+((((((((cos((((cos(sin(cos(b)))+b)-2.53)+3.33))*pi)-pi)+1.78)+2.02)*pi)-b)-2.86)+b))+a)*e))/e))+b)))+3.13)*a)*e)/pi))"
-"(b+((sin((a+sin((((tan(((tan((((cos((tan((a*(2.30/((((cos(cos((((a+b)+0.08)-a)))/2.02)-b)-2.19)/b))))/a))-b)*e)/pi))*b)+0.53))/a)+1.98)+pi))))+pi)+a))"
-"(cos(((tan(sin(((tan(tan((cos(cos(((b+(tan(cos(((sin(((((sin(cos((((0.05/3.18)/0.05)-b)))+e)+a)/pi)-3.10))-pi)+a)))/b))+a)))*a)))-1.53)-b)))+e)+a))*a)"
-"(((2.41-(cos(((((a*((((((1.25-((((((tan(((((b+tan((b/((((a*2.06)-a)*b)/b))))*a)+a)+1.26))+a)*b)-e)/b)-b)+a))-e)+a)/3.71)*3.27)*pi))-e)*e)/b))/b))/e)+b)"
-"(((tan(cos(((((tan((((pi*(b+cos(tan((((((((((((((((e-2.36)+b)-b)+0.93)+3.52)+a)*a)+pi)/3.61)/a)+e)+a)-pi)/1.95)+b)))))+a)/a))+a)/b)-b)+a)))/2.99)+b)-e)"
-"(pi*(((((((((((((((b+(3.48-((((((((2.17*((((b*e)-1.20)-pi)/b))*b)/0.59)-e)+1.70)+pi)/b)+pi)))*e)-b)/e)/pi)*0.61)+pi)/2.92)*pi)-b)*a)-2.53)+b)+1.09)+e))"
-"((cos(sin(((b-(cos(((b*(1.36*tan(((((cos((a*tan((pi/(e+(a/((((b+((cos((((b+e)*3.56)+b))+pi)-2.92))/a)/pi)+3.68)))))))*b)/e)+b)+b))))-b))*a))*a)))*pi)+e)"
-"((a+(tan(((3.44/(((b-(tan(((((((((2.31/((tan((pi/(cos((cos(((((((3.76*b)*pi)*b)/a)+e)*pi))-b))+a)))/e)*b))/a)/b)+a)-a)*b)+a)/a))/b))+e)*b))/a))+b))*3.78)"
-"((b/(tan((b+(tan((((b-tan(((((((cos((((cos(sin(((((sin(tan(((a/b)+3.58)))/a)+b)+2.69)+0.06)))+a)+a)+b))-pi)*3.68)+pi)+a)+b)+3.89)))/e)/e))/2.72)))*b))*b)"
-"tan(sin((((tan((((sin(cos((((tan((a+tan((((3.88+(3.63/(tan(sin((((a+(((a+b)/b)-a))/1.71)/1.69)))*0.71)))-pi)*b))))+3.90)/pi)-b)))*b)+b)+b))+1.09)+b)-a)))"
-"((a-cos((((a+tan((tan((cos(((((((((((1.47+((((((tan(tan((e-a)))/1.27)*b)*a)-0.10)*1.54)-pi))+0.35)*1.97)+pi)+b)/e)*b)+0.09)-pi)/b))-1.73))+a)))+b)/a)))+e)"
-"((((cos(tan(((a*cos((0.20+cos((2.66+tan((cos(((e*cos((1.36+((cos((((tan((0.66/(((1.42*0.01)-0.06)/a)))-b)-a)*e))+a)/b))))+e))-b)))))))/pi)))+e)+b)*b)+1.01)"
-"(b-(((((sin((sin(((0.89+tan((cos((((pi*(((e+((b/(a/((sin(cos(cos((tan(((1.81+pi)*a))/1.04))))*e)+2.05)))+a))+e)*b))+e)/a))-b)))+b))*0.48))+b)/a)*a)*pi)-a))"
-"(((tan(((tan(tan(((3.48+(sin(((((((tan((e+(((a+(((a-((cos((1.93*b))/3.31)*1.39))+b)-0.84))-b)-0.58)))+pi)+3.05)*e)+3.85)/b)+e))+b))*pi)))+0.26)*a))+e)+a)-e)"
-"((sin(cos((cos(((((((((a*((((sin(cos((((((sin((((sin(e)/1.51)+a)+1.34))*pi)+a)*3.00)-1.64)*e)))/a)*2.85)+b)*a))+b)*b)+2.44)+b)*0.18)/b)-b))/3.69)))-1.10)*b)"
-"(cos((e*cos((b-cos((sin((pi/tan(tan(((((((((((b+(((3.52+((cos(((((b*3.66)-a)/2.90)+a))*b)+0.35))*1.02)/1.43))*b)/b)*1.64)-pi)-a)+a)+a)-a)+b)))))-a))))))*pi)"
-"(e+cos(sin((cos(((((((sin((tan((cos((((sin(cos(tan(cos(cos(((1.88-((((((1.96/pi)+e)/e)/b)-b)+a))+a))))))/pi)*a)/e))*b))-a))+b)/e)*b)+2.12)*3.30)*pi))*pi))))"
-"((((((3.123*y)*z)-w)/((3.123+y)+(z*w)))/(((3.123+y)-(z/w))-((3.123*y)+(z-w))))/((((3.123+y)+(z*w))*((3.123/y)+(z-w)))*(((3.123*y)+(z-w))+((3.123/y)*(z-w)))))"
-"((((((3.123*y)/z)-w)/((3.123-y)-(z*w)))/(((3.123-y)+(z/w))-((3.123+y)*(z*w))))/((((3.123-y)-(z*w))*((3.123+y)*(z/w)))*(((3.123+y)*(z*w))+(3.123-(y/(z*w))))))"
-"((((((3.123+y)*z)-w)-((3.123+y)-(z*w)))-((3.123*(y-(z*w)))/((3.123*y)+(z+w))))-((((3.123+y)-(z*w))+((3.123/y)+(z+w)))+(((3.123*y)+(z+w))*((3.123/y)/(z-w)))))"
-"((((((3.123+y)/z)-w)-((3.123-y)+(z*w)))-(((3.123+y)+(z/w))/((3.123*y)-(z-w))))-((((3.123-y)+(z*w))+((3.123/y)-(z-w)))+(((3.123*y)-(z-w))*(3.123-(y*(z/w))))))"
-"((((((3.123-y)*z)-w)*((3.123+y)-(z/w)))*(((3.123+y)-(z*w))+((3.123/y)+(z+w))))*((((3.123+y)-(z/w))-((3.123*y)+(z-w)))-(((3.123/y)+(z+w))/((3.123*y)*(z-w)))))"
-"((((((3.123-y)/z)-w)*((3.123-y)+(z/w)))*(((3.123-y)+(z*w))+((3.123/y)-(z-w))))*((((3.123-y)+(z/w))-((3.123+y)*(z*w)))-(((3.123/y)-(z-w))/(3.123+(y/(z*w))))))"
-"((((((3.123/y)*z)-w)+((3.123+y)+(z/w)))+(((3.123+y)+(z*w))*((3.123/y)+(z-w))))+((((3.123+y)+(z/w))/((3.123*y)-(z-w)))/(((3.123/y)+(z-w))-(3.123+(y*(z/w))))))"
-"((((((3.123/y)/z)-w)+((3.123-y)-(z/w)))+(((3.123-y)-(z*w))*((3.123+y)*(z/w))))+((((3.123-y)-(z/w))/((3.123+y)/(z*w)))/(((3.123+y)*(z/w))-(3.123+((y+z)/w)))))"
-"((((((x*5.123)*z)-w)/((x+5.123)+(z*w)))/(((x+5.123)-(z/w))-((x*5.123)+(z-w))))/((((x+5.123)+(z*w))*((x/5.123)+(z-w)))*(((x*5.123)+(z-w))+((x/5.123)*(z-w)))))"
-"((((((x*5.123)/z)-w)/((x-5.123)-(z*w)))/(((x-5.123)+(z/w))-((x+5.123)*(z*w))))/((((x-5.123)-(z*w))*((x+5.123)*(z/w)))*(((x+5.123)*(z*w))+(x-(5.123/(z*w))))))"
-"((((((x*y)*7.123)-w)/((x+y)+(7.123*w)))/(((x+y)-(7.123/w))-((x*y)+(7.123-w))))/((((x+y)+(7.123*w))*((x/y)+(7.123-w)))*(((x*y)+(7.123-w))+((x/y)*(7.123-w)))))"
-"((((((x*y)*z)-9.123)/((x+y)+(z*9.123)))/(((x+y)-(z/9.123))-((x*y)+(z-9.123))))/((((x+y)+(z*9.123))*((x/y)+(z-9.123)))*(((x*y)+(z-9.123))+((x/y)*(z-9.123)))))"
-"((((((x*y)/7.123)-w)/((x-y)-(7.123*w)))/(((x-y)+(7.123/w))-((x+y)*(7.123*w))))/((((x-y)-(7.123*w))*((x+y)*(7.123/w)))*(((x+y)*(7.123*w))+(x-(y/(7.123*w))))))"
-"((((((x*y)/z)-9.123)/((x-y)-(z*9.123)))/(((x-y)+(z/9.123))-((x+y)*(z*9.123))))/((((x-y)-(z*9.123))*((x+y)*(z/9.123)))*(((x+y)*(z*9.123))+(x-(y/(z*9.123))))))"
-"((((((x+5.123)*z)-w)-((x+5.123)-(z*w)))-((x*(5.123-(z*w)))/((x*5.123)+(z+w))))-((((x+5.123)-(z*w))+((x/5.123)+(z+w)))+(((x*5.123)+(z+w))*((x/5.123)/(z-w)))))"
-"((((((x+5.123)/z)-w)-((x-5.123)+(z*w)))-(((x+5.123)+(z/w))/((x*5.123)-(z-w))))-((((x-5.123)+(z*w))+((x/5.123)-(z-w)))+(((x*5.123)-(z-w))*(x-(5.123*(z/w))))))"
-"((((((x+y)*7.123)-w)-((x+y)-(7.123*w)))-((x*(y-(7.123*w)))/((x*y)+(7.123+w))))-((((x+y)-(7.123*w))+((x/y)+(7.123+w)))+(((x*y)+(7.123+w))*((x/y)/(7.123-w)))))"
-"((((((x+y)*z)-9.123)-((x+y)-(z*9.123)))-((x*(y-(z*9.123)))/((x*y)+(z+9.123))))-((((x+y)-(z*9.123))+((x/y)+(z+9.123)))+(((x*y)+(z+9.123))*((x/y)/(z-9.123)))))"
-"((((((x+y)/7.123)-w)-((x-y)+(7.123*w)))-(((x+y)+(7.123/w))/((x*y)-(7.123-w))))-((((x-y)+(7.123*w))+((x/y)-(7.123-w)))+(((x*y)-(7.123-w))*(x-(y*(7.123/w))))))"
-"((((((x+y)/z)-9.123)-((x-y)+(z*9.123)))-(((x+y)+(z/9.123))/((x*y)-(z-9.123))))-((((x-y)+(z*9.123))+((x/y)-(z-9.123)))+(((x*y)-(z-9.123))*(x-(y*(z/9.123))))))"
-"((((((x-5.123)*z)-w)*((x+5.123)-(z/w)))*(((x+5.123)-(z*w))+((x/5.123)+(z+w))))*((((x+5.123)-(z/w))-((x*5.123)+(z-w)))-(((x/5.123)+(z+w))/((x*5.123)*(z-w)))))"
-"((((((x-5.123)/z)-w)*((x-5.123)+(z/w)))*(((x-5.123)+(z*w))+((x/5.123)-(z-w))))*((((x-5.123)+(z/w))-((x+5.123)*(z*w)))-(((x/5.123)-(z-w))/(x+(5.123/(z*w))))))"
-"((((((x-y)*7.123)-w)*((x+y)-(7.123/w)))*(((x+y)-(7.123*w))+((x/y)+(7.123+w))))*((((x+y)-(7.123/w))-((x*y)+(7.123-w)))-(((x/y)+(7.123+w))/((x*y)*(7.123-w)))))"
-"((((((x-y)*z)-9.123)*((x+y)-(z/9.123)))*(((x+y)-(z*9.123))+((x/y)+(z+9.123))))*((((x+y)-(z/9.123))-((x*y)+(z-9.123)))-(((x/y)+(z+9.123))/((x*y)*(z-9.123)))))"
-"((((((x-y)/7.123)-w)*((x-y)+(7.123/w)))*(((x-y)+(7.123*w))+((x/y)-(7.123-w))))*((((x-y)+(7.123/w))-((x+y)*(7.123*w)))-(((x/y)-(7.123-w))/(x+(y/(7.123*w))))))"
-"((((((x-y)/z)-9.123)*((x-y)+(z/9.123)))*(((x-y)+(z*9.123))+((x/y)-(z-9.123))))*((((x-y)+(z/9.123))-((x+y)*(z*9.123)))-(((x/y)-(z-9.123))/(x+(y/(z*9.123))))))"
-"((((((x/5.123)*z)-w)+((x+5.123)+(z/w)))+(((x+5.123)+(z*w))*((x/5.123)+(z-w))))+((((x+5.123)+(z/w))/((x*5.123)-(z-w)))/(((x/5.123)+(z-w))-(x+(5.123*(z/w))))))"
-"((((((x/5.123)/z)-w)+((x-5.123)-(z/w)))+(((x-5.123)-(z*w))*((x+5.123)*(z/w))))+((((x-5.123)-(z/w))/((x+5.123)/(z*w)))/(((x+5.123)*(z/w))-(x+((5.123+z)/w)))))"
-"((((((x/y)*7.123)-w)+((x+y)+(7.123/w)))+(((x+y)+(7.123*w))*((x/y)+(7.123-w))))+((((x+y)+(7.123/w))/((x*y)-(7.123-w)))/(((x/y)+(7.123-w))-(x+(y*(7.123/w))))))"
-"((((((x/y)*z)-9.123)+((x+y)+(z/9.123)))+(((x+y)+(z*9.123))*((x/y)+(z-9.123))))+((((x+y)+(z/9.123))/((x*y)-(z-9.123)))/(((x/y)+(z-9.123))-(x+(y*(z/9.123))))))"
-"((((((x/y)/7.123)-w)+((x-y)-(7.123/w)))+(((x-y)-(7.123*w))*((x+y)*(7.123/w))))+((((x-y)-(7.123/w))/((x+y)/(7.123*w)))/(((x+y)*(7.123/w))-(x+((y+7.123)/w)))))"
-"((((((x/y)/z)-9.123)+((x-y)-(z/9.123)))+(((x-y)-(z*9.123))*((x+y)*(z/9.123))))+((((x-y)-(z/9.123))/((x+y)/(z*9.123)))/(((x+y)*(z/9.123))-(x+((y+z)/9.123)))))"
-"(((((3.123*y)*(z+w))+(3.123+((y/z)/w)))+((3.123+((y/z)+w))*((3.123*y)+(z*w))))+(((3.123+((y/z)/w))/((3.123*y)-(z*w)))/(((3.123*y)+(z*w))-((3.123+y)-(z-w)))))"
-"(((((3.123*y)*(z-w))*(3.123-((y*z)/w)))*((3.123-((y-z)*w))+((3.123/y)-(z*w))))*(((3.123-((y*z)/w))-(3.123/(y+(z*w))))-(((3.123/y)-(z*w))/((3.123-y)*(z+w)))))"
-"(((((3.123*y)+(z*w))-((3.123+y)-(z-w)))-(((3.123-y)-(z/w))/((3.123+y)/(z*w))))-((((3.123+y)-(z-w))+((3.123+y)/(z/w)))+(((3.123+y)/(z*w))*(3.123+((y+z)*w)))))"
-"(((((3.123*y)+(z+w))*((3.123/y)/(z-w)))*(((3.123*y)/(z-w))+(3.123-((y-z)/w))))*((((3.123/y)/(z-w))-(3.123-((y-z)*w)))-((3.123-((y-z)/w))/((3.123/y)-(z/w)))))"
-"(((((3.123*y)+(z-w))+((3.123/y)*(z-w)))+(((3.123*y)*(z-w))*(3.123-((y*z)/w))))+((((3.123/y)*(z-w))/(3.123-((y*z)*w)))/((3.123-((y*z)/w))-(3.123/(y+(z*w))))))"
-"(((((3.123*y)+(z/w))/((3.123+y)*(z-w)))/(((3.123+y)+(z-w))-((3.123-y)/(z*w))))/((((3.123+y)*(z-w))*((3.123-y)/(z/w)))*(((3.123-y)/(z*w))+(3.123+((y-z)*w)))))"
-"(((((3.123*y)-(z*w))*((3.123+y)+(z-w)))*(((3.123+y)-(z-w))+((3.123+y)/(z/w))))*((((3.123+y)+(z-w))-((3.123-y)/(z*w)))-(((3.123+y)/(z/w))/(3.123+((y-z)/w)))))"
-"(((((3.123*y)-(z+w))+((3.123/y)/(z+w)))+(((3.123*y)/(z+w))*(3.123-((y+z)/w))))+((((3.123/y)/(z+w))/(3.123-((y+z)*w)))/((3.123-((y+z)/w))-((3.123*y)-(z/w)))))"
-"(((((3.123*y)-(z-w))*(3.123-(y*(z/w))))*((3.123+(y*(z/w)))+(3.123-((y/z)/w))))*(((3.123-(y*(z/w)))-(3.123-((y/z)*w)))-((3.123-((y/z)/w))/(3.123*(y+(z*w))))))"
-"(((((3.123*y)-(z/w))+((3.123+y)/(z-w)))+(((3.123+y)*(z-w))*((3.123-y)/(z/w))))+((((3.123+y)/(z-w))/((3.123-y)*(z*w)))/(((3.123-y)/(z/w))-(3.123+((y*z)/w)))))"
-"(((((3.123*y)/(z+w))*(3.123-((y+z)/w)))*((3.123+((y/z)*w))+((3.123*y)+(z/w))))*(((3.123-((y+z)/w))-((3.123*y)-(z/w)))-(((3.123*y)+(z/w))/((3.123+y)*(z-w)))))"
-"(((((3.123*y)/(z-w))+(3.123-((y-z)/w)))+((3.123-((y+z)*w))*((3.123/y)+(z/w))))+(((3.123-((y-z)/w))/((3.123/y)-(z/w)))/(((3.123/y)+(z/w))-((3.123-y)-(z+w)))))"
-"(((((3.123+y)*(z*w))+(3.123-(y/(z*w))))+((3.123+(y/(z*w)))*(((3.123+y)*z)-w)))+(((3.123-(y/(z*w)))/(((3.123-y)*z)-w))/((((3.123+y)*z)-w)-((3.123+y)-(z*w)))))"
-"(((((3.123+y)*(z-w))*((3.123-y)/(z/w)))*(((3.123-y)/(z*w))+(3.123+((y-z)*w))))*((((3.123-y)/(z/w))-(3.123+((y*z)/w)))-((3.123+((y-z)*w))/(((3.123-y)/z)-w))))"
-"(((((3.123+y)*(z/w))-(3.123+((y+z)/w)))-((3.123-(y/(z*w)))/(((3.123-y)*z)-w)))-(((3.123+((y+z)/w))+(((3.123*y)*z)-w))+((((3.123-y)*z)-w)*((3.123+y)-(z/w)))))"
-"(((((3.123+y)+(z*w))*((3.123/y)+(z-w)))*(((3.123*y)+(z-w))+((3.123/y)*(z-w))))*((((3.123/y)+(z-w))-(3.123+(y*(z/w))))-(((3.123/y)*(z-w))/(3.123-((y*z)*w)))))"
-"(((((3.123+y)+(z-w))-((3.123-y)/(z*w)))-(((3.123+y)/(z/w))/(3.123+((y-z)/w))))-((((3.123-y)/(z*w))+(3.123+((y-z)*w)))+((3.123+((y-z)/w))*(((3.123+y)/z)-w))))"
-"(((((3.123+y)+(z/w))/((3.123*y)-(z-w)))/(((3.123/y)+(z-w))-(3.123+(y*(z/w)))))/((((3.123*y)-(z-w))*(3.123-(y*(z/w))))*((3.123+(y*(z/w)))+(3.123-((y/z)/w)))))"
-"(((((3.123+y)-(z*w))+((3.123/y)+(z+w)))+(((3.123*y)+(z+w))*((3.123/y)/(z-w))))+((((3.123/y)+(z+w))/((3.123*y)*(z-w)))/(((3.123/y)/(z-w))-(3.123-((y-z)*w)))))"
-"(((((3.123+y)-(z-w))+((3.123+y)/(z/w)))+(((3.123+y)/(z*w))*(3.123+((y+z)*w))))+((((3.123+y)/(z/w))/(3.123+((y-z)/w)))/((3.123+((y+z)*w))-(((3.123/y)*z)-w))))"
-"(((((3.123+y)-(z/w))-((3.123*y)+(z-w)))-(((3.123/y)+(z+w))/((3.123*y)*(z-w))))-((((3.123*y)+(z-w))+((3.123/y)*(z-w)))+(((3.123*y)*(z-w))*(3.123-((y*z)/w)))))"
-"(((((3.123+y)/(z*w))*(3.123+((y+z)*w)))*((3.123+((y+z)/w))+(((3.123*y)*z)-w)))*(((3.123+((y+z)*w))-(((3.123/y)*z)-w))-((((3.123*y)*z)-w)/((3.123+y)+(z*w)))))"
-"(((((3.123+y)/(z-w))/((3.123-y)*(z*w)))/(((3.123-y)/(z/w))-(3.123+((y*z)/w))))/((((3.123-y)*(z*w))*(3.123+((y*z)*w)))*((3.123+((y*z)/w))+(((3.123*y)/z)-w))))"
-"(((((3.123+y)/(z/w))/(3.123+((y-z)/w)))/((3.123+((y+z)*w))-(((3.123/y)*z)-w)))/(((3.123+((y-z)/w))*(((3.123+y)/z)-w))*((((3.123/y)*z)-w)+((3.123+y)+(z/w)))))"
-"(((((3.123-y)*(z*w))*(3.123+((y*z)*w)))*((3.123+((y*z)/w))+(((3.123*y)/z)-w)))*(((3.123+((y*z)*w))-(((3.123/y)/z)-w))-((((3.123*y)/z)-w)/((3.123-y)-(z*w)))))"
-"(((((3.123-y)*(z+w))*((3.123/y)*(z+w)))*(((3.123*y)*(z+w))+(3.123+((y/z)/w))))*((((3.123/y)*(z+w))-(3.123+((y/z)*w)))-((3.123+((y/z)/w))/((3.123*y)-(z*w)))))"
-"(((((3.123-y)*(z/w))/(3.123+((y/z)+w)))/((3.123+((y*z)*w))-(((3.123/y)/z)-w)))/(((3.123+((y/z)+w))*((3.123*y)+(z*w)))*((((3.123/y)/z)-w)+((3.123-y)-(z/w)))))"
-"(((((3.123-y)+(z*w))+((3.123/y)-(z-w)))+(((3.123*y)-(z-w))*(3.123-(y*(z/w)))))+((((3.123/y)-(z-w))/(3.123+(y/(z*w))))/((3.123-(y*(z/w)))-(3.123-((y/z)*w)))))"
-"(((((3.123-y)+(z+w))-((3.123*y)*(z+w)))-(((3.123-y)*(z/w))/(3.123+((y/z)+w))))-((((3.123*y)*(z+w))+(3.123+((y/z)/w)))+((3.123+((y/z)+w))*((3.123*y)+(z*w)))))"
-"(((((3.123-y)+(z/w))-((3.123+y)*(z*w)))-(((3.123/y)-(z-w))/(3.123+(y/(z*w)))))-((((3.123+y)*(z*w))+(3.123-(y/(z*w))))+((3.123+(y/(z*w)))*(((3.123+y)*z)-w))))"
-"(((((3.123-y)-(z*w))*((3.123+y)*(z/w)))*(((3.123+y)*(z*w))+(3.123-(y/(z*w)))))*((((3.123+y)*(z/w))-(3.123+((y+z)/w)))-((3.123-(y/(z*w)))/(((3.123-y)*z)-w))))"
-"(((((3.123-y)-(z+w))+((3.123-y)*(z/w)))+(((3.123-y)*(z*w))*(3.123+((y*z)*w))))+((((3.123-y)*(z/w))/(3.123+((y/z)+w)))/((3.123+((y*z)*w))-(((3.123/y)/z)-w))))"
-"(((((3.123-y)-(z/w))/((3.123+y)/(z*w)))/(((3.123+y)*(z/w))-(3.123+((y+z)/w))))/((((3.123+y)/(z*w))*(3.123+((y+z)*w)))*((3.123+((y+z)/w))+(((3.123*y)*z)-w))))"
-"(((((3.123-y)/(z*w))+(3.123+((y-z)*w)))+((3.123+((y-z)/w))*(((3.123+y)/z)-w)))+(((3.123+((y-z)*w))/(((3.123-y)/z)-w))/((((3.123+y)/z)-w)-((3.123-y)+(z*w)))))"
-"(((((3.123-y)/(z+w))/((3.123*y)/(z+w)))/(((3.123/y)*(z+w))-(3.123+((y/z)*w))))/((((3.123*y)/(z+w))*(3.123-((y+z)/w)))*((3.123+((y/z)*w))+((3.123*y)+(z/w)))))"
-"(((((3.123-y)/(z/w))-(3.123+((y*z)/w)))-((3.123+((y-z)*w))/(((3.123-y)/z)-w)))-(((3.123+((y*z)/w))+(((3.123*y)/z)-w))+((((3.123-y)/z)-w)*((3.123-y)+(z/w)))))"
-"(((((3.123/y)*(z+w))-(3.123+((y/z)*w)))-((3.123+((y/z)/w))/((3.123*y)-(z*w))))-(((3.123+((y/z)*w))+((3.123*y)+(z/w)))+(((3.123*y)-(z*w))*((3.123+y)+(z-w)))))"
-"(((((3.123/y)*(z-w))/(3.123-((y*z)*w)))/((3.123-((y*z)/w))-(3.123/(y+(z*w)))))/(((3.123-((y*z)*w))*(3.123/(y-(z*w))))*((3.123/(y+(z*w)))+((3.123-y)/(z+w)))))"
-"(((((3.123/y)+(z+w))/((3.123*y)*(z-w)))/(((3.123/y)/(z-w))-(3.123-((y-z)*w))))/((((3.123*y)*(z-w))*(3.123-((y*z)/w)))*((3.123-((y-z)*w))+((3.123/y)-(z*w)))))"
-"(((((3.123/y)+(z-w))-(3.123+(y*(z/w))))-(((3.123/y)*(z-w))/(3.123-((y*z)*w))))-(((3.123+(y*(z/w)))+(3.123-((y/z)/w)))+((3.123-((y*z)*w))*(3.123/(y-(z*w))))))"
-"(((((3.123/y)+(z/w))-((3.123-y)-(z+w)))-(((3.123+y)/(z-w))/((3.123-y)*(z*w))))-((((3.123-y)-(z+w))+((3.123-y)*(z/w)))+(((3.123-y)*(z*w))*(3.123+((y*z)*w)))))"
-"(((((3.123/y)-(z*w))/((3.123-y)*(z+w)))/(((3.123-y)+(z+w))-((3.123*y)*(z+w))))/((((3.123-y)*(z+w))*((3.123/y)*(z+w)))*(((3.123*y)*(z+w))+(3.123+((y/z)/w)))))"
-"(((((3.123/y)-(z+w))-((3.123*y)/(z-w)))-(((3.123/y)/(z+w))/(3.123-((y+z)*w))))-((((3.123*y)/(z-w))+(3.123-((y-z)/w)))+((3.123-((y+z)*w))*((3.123/y)+(z/w)))))"
-"(((((3.123/y)-(z-w))/(3.123+(y/(z*w))))/((3.123-(y*(z/w)))-(3.123-((y/z)*w))))/(((3.123+(y/(z*w)))*(((3.123+y)*z)-w))*((3.123-((y/z)*w))+(3.123*(y-(z*w))))))"
-"(((((3.123/y)-(z/w))*((3.123-y)+(z+w)))*(((3.123-y)-(z+w))+((3.123-y)*(z/w))))*((((3.123-y)+(z+w))-((3.123*y)*(z+w)))-(((3.123-y)*(z/w))/(3.123+((y/z)+w)))))"
-"(((((3.123/y)/(z+w))/(3.123-((y+z)*w)))/((3.123-((y+z)/w))-((3.123*y)-(z/w))))/(((3.123-((y+z)*w))*((3.123/y)+(z/w)))*(((3.123*y)-(z/w))+((3.123+y)/(z-w)))))"
-"(((((3.123/y)/(z-w))-(3.123-((y-z)*w)))-((3.123-((y-z)/w))/((3.123/y)-(z/w))))-(((3.123-((y-z)*w))+((3.123/y)-(z*w)))+(((3.123/y)-(z/w))*((3.123-y)+(z+w)))))"
-"(((((x*5.123)*(z+w))+(x+((5.123/z)/w)))+((x+((5.123/z)+w))*((x*5.123)+(z*w))))+(((x+((5.123/z)/w))/((x*5.123)-(z*w)))/(((x*5.123)+(z*w))-((x+5.123)-(z-w)))))"
-"(((((x*5.123)*(z-w))*(x-((5.123*z)/w)))*((x-((5.123-z)*w))+((x/5.123)-(z*w))))*(((x-((5.123*z)/w))-(x/(5.123+(z*w))))-(((x/5.123)-(z*w))/((x-5.123)*(z+w)))))"
-"(((((x*5.123)+(z*w))-((x+5.123)-(z-w)))-(((x-5.123)-(z/w))/((x+5.123)/(z*w))))-((((x+5.123)-(z-w))+((x+5.123)/(z/w)))+(((x+5.123)/(z*w))*(x+((5.123+z)*w)))))"
-"(((((x*5.123)+(z+w))*((x/5.123)/(z-w)))*(((x*5.123)/(z-w))+(x-((5.123-z)/w))))*((((x/5.123)/(z-w))-(x-((5.123-z)*w)))-((x-((5.123-z)/w))/((x/5.123)-(z/w)))))"
-"(((((x*5.123)+(z-w))+((x/5.123)*(z-w)))+(((x*5.123)*(z-w))*(x-((5.123*z)/w))))+((((x/5.123)*(z-w))/(x-((5.123*z)*w)))/((x-((5.123*z)/w))-(x/(5.123+(z*w))))))"
-"(((((x*5.123)+(z/w))/((x+5.123)*(z-w)))/(((x+5.123)+(z-w))-((x-5.123)/(z*w))))/((((x+5.123)*(z-w))*((x-5.123)/(z/w)))*(((x-5.123)/(z*w))+(x+((5.123-z)*w)))))"
-"(((((x*5.123)-(z*w))*((x+5.123)+(z-w)))*(((x+5.123)-(z-w))+((x+5.123)/(z/w))))*((((x+5.123)+(z-w))-((x-5.123)/(z*w)))-(((x+5.123)/(z/w))/(x+((5.123-z)/w)))))"
-"(((((x*5.123)-(z+w))+((x/5.123)/(z+w)))+(((x*5.123)/(z+w))*(x-((5.123+z)/w))))+((((x/5.123)/(z+w))/(x-((5.123+z)*w)))/((x-((5.123+z)/w))-((x*5.123)-(z/w)))))"
-"(((((x*5.123)-(z-w))*(x-(5.123*(z/w))))*((x+(5.123*(z/w)))+(x-((5.123/z)/w))))*(((x-(5.123*(z/w)))-(x-((5.123/z)*w)))-((x-((5.123/z)/w))/(x*(5.123+(z*w))))))"
-"(((((x*5.123)-(z/w))+((x+5.123)/(z-w)))+(((x+5.123)*(z-w))*((x-5.123)/(z/w))))+((((x+5.123)/(z-w))/((x-5.123)*(z*w)))/(((x-5.123)/(z/w))-(x+((5.123*z)/w)))))"
-"(((((x*5.123)/(z+w))*(x-((5.123+z)/w)))*((x+((5.123/z)*w))+((x*5.123)+(z/w))))*(((x-((5.123+z)/w))-((x*5.123)-(z/w)))-(((x*5.123)+(z/w))/((x+5.123)*(z-w)))))"
-"(((((x*5.123)/(z-w))+(x-((5.123-z)/w)))+((x-((5.123+z)*w))*((x/5.123)+(z/w))))+(((x-((5.123-z)/w))/((x/5.123)-(z/w)))/(((x/5.123)+(z/w))-((x-5.123)-(z+w)))))"
-"(((((x*y)*(7.123+w))+(x+((y/7.123)/w)))+((x+((y/7.123)+w))*((x*y)+(7.123*w))))+(((x+((y/7.123)/w))/((x*y)-(7.123*w)))/(((x*y)+(7.123*w))-((x+y)-(7.123-w)))))"
-"(((((x*y)*(7.123-w))*(x-((y*7.123)/w)))*((x-((y-7.123)*w))+((x/y)-(7.123*w))))*(((x-((y*7.123)/w))-(x/(y+(7.123*w))))-(((x/y)-(7.123*w))/((x-y)*(7.123+w)))))"
-"(((((x*y)*(z+9.123))+(x+((y/z)/9.123)))+((x+((y/z)+9.123))*((x*y)+(z*9.123))))+(((x+((y/z)/9.123))/((x*y)-(z*9.123)))/(((x*y)+(z*9.123))-((x+y)-(z-9.123)))))"
-"(((((x*y)*(z-9.123))*(x-((y*z)/9.123)))*((x-((y-z)*9.123))+((x/y)-(z*9.123))))*(((x-((y*z)/9.123))-(x/(y+(z*9.123))))-(((x/y)-(z*9.123))/((x-y)*(z+9.123)))))"
-"(((((x*y)+(7.123*w))-((x+y)-(7.123-w)))-(((x-y)-(7.123/w))/((x+y)/(7.123*w))))-((((x+y)-(7.123-w))+((x+y)/(7.123/w)))+(((x+y)/(7.123*w))*(x+((y+7.123)*w)))))"
-"(((((x*y)+(7.123+w))*((x/y)/(7.123-w)))*(((x*y)/(7.123-w))+(x-((y-7.123)/w))))*((((x/y)/(7.123-w))-(x-((y-7.123)*w)))-((x-((y-7.123)/w))/((x/y)-(7.123/w)))))"
-"(((((x*y)+(7.123-w))+((x/y)*(7.123-w)))+(((x*y)*(7.123-w))*(x-((y*7.123)/w))))+((((x/y)*(7.123-w))/(x-((y*7.123)*w)))/((x-((y*7.123)/w))-(x/(y+(7.123*w))))))"
-"(((((x*y)+(7.123/w))/((x+y)*(7.123-w)))/(((x+y)+(7.123-w))-((x-y)/(7.123*w))))/((((x+y)*(7.123-w))*((x-y)/(7.123/w)))*(((x-y)/(7.123*w))+(x+((y-7.123)*w)))))"
-"(((((x*y)+(z*9.123))-((x+y)-(z-9.123)))-(((x-y)-(z/9.123))/((x+y)/(z*9.123))))-((((x+y)-(z-9.123))+((x+y)/(z/9.123)))+(((x+y)/(z*9.123))*(x+((y+z)*9.123)))))"
-"(((((x*y)+(z+9.123))*((x/y)/(z-9.123)))*(((x*y)/(z-9.123))+(x-((y-z)/9.123))))*((((x/y)/(z-9.123))-(x-((y-z)*9.123)))-((x-((y-z)/9.123))/((x/y)-(z/9.123)))))"
-"(((((x*y)+(z-9.123))+((x/y)*(z-9.123)))+(((x*y)*(z-9.123))*(x-((y*z)/9.123))))+((((x/y)*(z-9.123))/(x-((y*z)*9.123)))/((x-((y*z)/9.123))-(x/(y+(z*9.123))))))"
-"(((((x*y)+(z/9.123))/((x+y)*(z-9.123)))/(((x+y)+(z-9.123))-((x-y)/(z*9.123))))/((((x+y)*(z-9.123))*((x-y)/(z/9.123)))*(((x-y)/(z*9.123))+(x+((y-z)*9.123)))))"
-"(((((x*y)-(7.123*w))*((x+y)+(7.123-w)))*(((x+y)-(7.123-w))+((x+y)/(7.123/w))))*((((x+y)+(7.123-w))-((x-y)/(7.123*w)))-(((x+y)/(7.123/w))/(x+((y-7.123)/w)))))"
-"(((((x*y)-(7.123+w))+((x/y)/(7.123+w)))+(((x*y)/(7.123+w))*(x-((y+7.123)/w))))+((((x/y)/(7.123+w))/(x-((y+7.123)*w)))/((x-((y+7.123)/w))-((x*y)-(7.123/w)))))"
-"(((((x*y)-(7.123-w))*(x-(y*(7.123/w))))*((x+(y*(7.123/w)))+(x-((y/7.123)/w))))*(((x-(y*(7.123/w)))-(x-((y/7.123)*w)))-((x-((y/7.123)/w))/(x*(y+(7.123*w))))))"
-"(((((x*y)-(7.123/w))+((x+y)/(7.123-w)))+(((x+y)*(7.123-w))*((x-y)/(7.123/w))))+((((x+y)/(7.123-w))/((x-y)*(7.123*w)))/(((x-y)/(7.123/w))-(x+((y*7.123)/w)))))"
-"(((((x*y)-(z*9.123))*((x+y)+(z-9.123)))*(((x+y)-(z-9.123))+((x+y)/(z/9.123))))*((((x+y)+(z-9.123))-((x-y)/(z*9.123)))-(((x+y)/(z/9.123))/(x+((y-z)/9.123)))))"
-"(((((x*y)-(z+9.123))+((x/y)/(z+9.123)))+(((x*y)/(z+9.123))*(x-((y+z)/9.123))))+((((x/y)/(z+9.123))/(x-((y+z)*9.123)))/((x-((y+z)/9.123))-((x*y)-(z/9.123)))))"
-"(((((x*y)-(z-9.123))*(x-(y*(z/9.123))))*((x+(y*(z/9.123)))+(x-((y/z)/9.123))))*(((x-(y*(z/9.123)))-(x-((y/z)*9.123)))-((x-((y/z)/9.123))/(x*(y+(z*9.123))))))"
-"(((((x*y)-(z/9.123))+((x+y)/(z-9.123)))+(((x+y)*(z-9.123))*((x-y)/(z/9.123))))+((((x+y)/(z-9.123))/((x-y)*(z*9.123)))/(((x-y)/(z/9.123))-(x+((y*z)/9.123)))))"
-"(((((x*y)/(7.123+w))*(x-((y+7.123)/w)))*((x+((y/7.123)*w))+((x*y)+(7.123/w))))*(((x-((y+7.123)/w))-((x*y)-(7.123/w)))-(((x*y)+(7.123/w))/((x+y)*(7.123-w)))))"
-"(((((x*y)/(7.123-w))+(x-((y-7.123)/w)))+((x-((y+7.123)*w))*((x/y)+(7.123/w))))+(((x-((y-7.123)/w))/((x/y)-(7.123/w)))/(((x/y)+(7.123/w))-((x-y)-(7.123+w)))))"
-"(((((x*y)/(z+9.123))*(x-((y+z)/9.123)))*((x+((y/z)*9.123))+((x*y)+(z/9.123))))*(((x-((y+z)/9.123))-((x*y)-(z/9.123)))-(((x*y)+(z/9.123))/((x+y)*(z-9.123)))))"
-"(((((x*y)/(z-9.123))+(x-((y-z)/9.123)))+((x-((y+z)*9.123))*((x/y)+(z/9.123))))+(((x-((y-z)/9.123))/((x/y)-(z/9.123)))/(((x/y)+(z/9.123))-((x-y)-(z+9.123)))))"
-"(((((x+5.123)*(z*w))+(x-(5.123/(z*w))))+((x+(5.123/(z*w)))*(((x+5.123)*z)-w)))+(((x-(5.123/(z*w)))/(((x-5.123)*z)-w))/((((x+5.123)*z)-w)-((x+5.123)-(z*w)))))"
-"(((((x+5.123)*(z-w))*((x-5.123)/(z/w)))*(((x-5.123)/(z*w))+(x+((5.123-z)*w))))*((((x-5.123)/(z/w))-(x+((5.123*z)/w)))-((x+((5.123-z)*w))/(((x-5.123)/z)-w))))"
-"(((((x+5.123)*(z/w))-(x+((5.123+z)/w)))-((x-(5.123/(z*w)))/(((x-5.123)*z)-w)))-(((x+((5.123+z)/w))+(((x*5.123)*z)-w))+((((x-5.123)*z)-w)*((x+5.123)-(z/w)))))"
-"(((((x+5.123)+(z*w))*((x/5.123)+(z-w)))*(((x*5.123)+(z-w))+((x/5.123)*(z-w))))*((((x/5.123)+(z-w))-(x+(5.123*(z/w))))-(((x/5.123)*(z-w))/(x-((5.123*z)*w)))))"
-"(((((x+5.123)+(z-w))-((x-5.123)/(z*w)))-(((x+5.123)/(z/w))/(x+((5.123-z)/w))))-((((x-5.123)/(z*w))+(x+((5.123-z)*w)))+((x+((5.123-z)/w))*(((x+5.123)/z)-w))))"
-"(((((x+5.123)+(z/w))/((x*5.123)-(z-w)))/(((x/5.123)+(z-w))-(x+(5.123*(z/w)))))/((((x*5.123)-(z-w))*(x-(5.123*(z/w))))*((x+(5.123*(z/w)))+(x-((5.123/z)/w)))))"
-"(((((x+5.123)-(z*w))+((x/5.123)+(z+w)))+(((x*5.123)+(z+w))*((x/5.123)/(z-w))))+((((x/5.123)+(z+w))/((x*5.123)*(z-w)))/(((x/5.123)/(z-w))-(x-((5.123-z)*w)))))"
-"(((((x+5.123)-(z-w))+((x+5.123)/(z/w)))+(((x+5.123)/(z*w))*(x+((5.123+z)*w))))+((((x+5.123)/(z/w))/(x+((5.123-z)/w)))/((x+((5.123+z)*w))-(((x/5.123)*z)-w))))"
-"(((((x+5.123)-(z/w))-((x*5.123)+(z-w)))-(((x/5.123)+(z+w))/((x*5.123)*(z-w))))-((((x*5.123)+(z-w))+((x/5.123)*(z-w)))+(((x*5.123)*(z-w))*(x-((5.123*z)/w)))))"
-"(((((x+5.123)/(z*w))*(x+((5.123+z)*w)))*((x+((5.123+z)/w))+(((x*5.123)*z)-w)))*(((x+((5.123+z)*w))-(((x/5.123)*z)-w))-((((x*5.123)*z)-w)/((x+5.123)+(z*w)))))"
-"(((((x+5.123)/(z-w))/((x-5.123)*(z*w)))/(((x-5.123)/(z/w))-(x+((5.123*z)/w))))/((((x-5.123)*(z*w))*(x+((5.123*z)*w)))*((x+((5.123*z)/w))+(((x*5.123)/z)-w))))"
-"(((((x+5.123)/(z/w))/(x+((5.123-z)/w)))/((x+((5.123+z)*w))-(((x/5.123)*z)-w)))/(((x+((5.123-z)/w))*(((x+5.123)/z)-w))*((((x/5.123)*z)-w)+((x+5.123)+(z/w)))))"
-"(((((x+y)*(7.123*w))+(x-(y/(7.123*w))))+((x+(y/(7.123*w)))*(((x+y)*7.123)-w)))+(((x-(y/(7.123*w)))/(((x-y)*7.123)-w))/((((x+y)*7.123)-w)-((x+y)-(7.123*w)))))"
-"(((((x+y)*(7.123-w))*((x-y)/(7.123/w)))*(((x-y)/(7.123*w))+(x+((y-7.123)*w))))*((((x-y)/(7.123/w))-(x+((y*7.123)/w)))-((x+((y-7.123)*w))/(((x-y)/7.123)-w))))"
-"(((((x+y)*(7.123/w))-(x+((y+7.123)/w)))-((x-(y/(7.123*w)))/(((x-y)*7.123)-w)))-(((x+((y+7.123)/w))+(((x*y)*7.123)-w))+((((x-y)*7.123)-w)*((x+y)-(7.123/w)))))"
-"(((((x+y)*(z*9.123))+(x-(y/(z*9.123))))+((x+(y/(z*9.123)))*(((x+y)*z)-9.123)))+(((x-(y/(z*9.123)))/(((x-y)*z)-9.123))/((((x+y)*z)-9.123)-((x+y)-(z*9.123)))))"
-"(((((x+y)*(z-9.123))*((x-y)/(z/9.123)))*(((x-y)/(z*9.123))+(x+((y-z)*9.123))))*((((x-y)/(z/9.123))-(x+((y*z)/9.123)))-((x+((y-z)*9.123))/(((x-y)/z)-9.123))))"
-"(((((x+y)*(z/9.123))-(x+((y+z)/9.123)))-((x-(y/(z*9.123)))/(((x-y)*z)-9.123)))-(((x+((y+z)/9.123))+(((x*y)*z)-9.123))+((((x-y)*z)-9.123)*((x+y)-(z/9.123)))))"
-"(((((x+y)+(7.123*w))*((x/y)+(7.123-w)))*(((x*y)+(7.123-w))+((x/y)*(7.123-w))))*((((x/y)+(7.123-w))-(x+(y*(7.123/w))))-(((x/y)*(7.123-w))/(x-((y*7.123)*w)))))"
-"(((((x+y)+(7.123-w))-((x-y)/(7.123*w)))-(((x+y)/(7.123/w))/(x+((y-7.123)/w))))-((((x-y)/(7.123*w))+(x+((y-7.123)*w)))+((x+((y-7.123)/w))*(((x+y)/7.123)-w))))"
-"(((((x+y)+(7.123/w))/((x*y)-(7.123-w)))/(((x/y)+(7.123-w))-(x+(y*(7.123/w)))))/((((x*y)-(7.123-w))*(x-(y*(7.123/w))))*((x+(y*(7.123/w)))+(x-((y/7.123)/w)))))"
-"(((((x+y)+(z*9.123))*((x/y)+(z-9.123)))*(((x*y)+(z-9.123))+((x/y)*(z-9.123))))*((((x/y)+(z-9.123))-(x+(y*(z/9.123))))-(((x/y)*(z-9.123))/(x-((y*z)*9.123)))))"
-"(((((x+y)+(z-9.123))-((x-y)/(z*9.123)))-(((x+y)/(z/9.123))/(x+((y-z)/9.123))))-((((x-y)/(z*9.123))+(x+((y-z)*9.123)))+((x+((y-z)/9.123))*(((x+y)/z)-9.123))))"
-"(((((x+y)+(z/9.123))/((x*y)-(z-9.123)))/(((x/y)+(z-9.123))-(x+(y*(z/9.123)))))/((((x*y)-(z-9.123))*(x-(y*(z/9.123))))*((x+(y*(z/9.123)))+(x-((y/z)/9.123)))))"
-"(((((x+y)-(7.123*w))+((x/y)+(7.123+w)))+(((x*y)+(7.123+w))*((x/y)/(7.123-w))))+((((x/y)+(7.123+w))/((x*y)*(7.123-w)))/(((x/y)/(7.123-w))-(x-((y-7.123)*w)))))"
-"(((((x+y)-(7.123-w))+((x+y)/(7.123/w)))+(((x+y)/(7.123*w))*(x+((y+7.123)*w))))+((((x+y)/(7.123/w))/(x+((y-7.123)/w)))/((x+((y+7.123)*w))-(((x/y)*7.123)-w))))"
-"(((((x+y)-(7.123/w))-((x*y)+(7.123-w)))-(((x/y)+(7.123+w))/((x*y)*(7.123-w))))-((((x*y)+(7.123-w))+((x/y)*(7.123-w)))+(((x*y)*(7.123-w))*(x-((y*7.123)/w)))))"
-"(((((x+y)-(z*9.123))+((x/y)+(z+9.123)))+(((x*y)+(z+9.123))*((x/y)/(z-9.123))))+((((x/y)+(z+9.123))/((x*y)*(z-9.123)))/(((x/y)/(z-9.123))-(x-((y-z)*9.123)))))"
-"(((((x+y)-(z-9.123))+((x+y)/(z/9.123)))+(((x+y)/(z*9.123))*(x+((y+z)*9.123))))+((((x+y)/(z/9.123))/(x+((y-z)/9.123)))/((x+((y+z)*9.123))-(((x/y)*z)-9.123))))"
-"(((((x+y)-(z/9.123))-((x*y)+(z-9.123)))-(((x/y)+(z+9.123))/((x*y)*(z-9.123))))-((((x*y)+(z-9.123))+((x/y)*(z-9.123)))+(((x*y)*(z-9.123))*(x-((y*z)/9.123)))))"
-"(((((x+y)/(7.123*w))*(x+((y+7.123)*w)))*((x+((y+7.123)/w))+(((x*y)*7.123)-w)))*(((x+((y+7.123)*w))-(((x/y)*7.123)-w))-((((x*y)*7.123)-w)/((x+y)+(7.123*w)))))"
-"(((((x+y)/(7.123-w))/((x-y)*(7.123*w)))/(((x-y)/(7.123/w))-(x+((y*7.123)/w))))/((((x-y)*(7.123*w))*(x+((y*7.123)*w)))*((x+((y*7.123)/w))+(((x*y)/7.123)-w))))"
-"(((((x+y)/(7.123/w))/(x+((y-7.123)/w)))/((x+((y+7.123)*w))-(((x/y)*7.123)-w)))/(((x+((y-7.123)/w))*(((x+y)/7.123)-w))*((((x/y)*7.123)-w)+((x+y)+(7.123/w)))))"
-"(((((x+y)/(z*9.123))*(x+((y+z)*9.123)))*((x+((y+z)/9.123))+(((x*y)*z)-9.123)))*(((x+((y+z)*9.123))-(((x/y)*z)-9.123))-((((x*y)*z)-9.123)/((x+y)+(z*9.123)))))"
-"(((((x+y)/(z-9.123))/((x-y)*(z*9.123)))/(((x-y)/(z/9.123))-(x+((y*z)/9.123))))/((((x-y)*(z*9.123))*(x+((y*z)*9.123)))*((x+((y*z)/9.123))+(((x*y)/z)-9.123))))"
-"(((((x+y)/(z/9.123))/(x+((y-z)/9.123)))/((x+((y+z)*9.123))-(((x/y)*z)-9.123)))/(((x+((y-z)/9.123))*(((x+y)/z)-9.123))*((((x/y)*z)-9.123)+((x+y)+(z/9.123)))))"
-"(((((x-5.123)*(z*w))*(x+((5.123*z)*w)))*((x+((5.123*z)/w))+(((x*5.123)/z)-w)))*(((x+((5.123*z)*w))-(((x/5.123)/z)-w))-((((x*5.123)/z)-w)/((x-5.123)-(z*w)))))"
-"(((((x-5.123)*(z+w))*((x/5.123)*(z+w)))*(((x*5.123)*(z+w))+(x+((5.123/z)/w))))*((((x/5.123)*(z+w))-(x+((5.123/z)*w)))-((x+((5.123/z)/w))/((x*5.123)-(z*w)))))"
-"(((((x-5.123)*(z/w))/(x+((5.123/z)+w)))/((x+((5.123*z)*w))-(((x/5.123)/z)-w)))/(((x+((5.123/z)+w))*((x*5.123)+(z*w)))*((((x/5.123)/z)-w)+((x-5.123)-(z/w)))))"
-"(((((x-5.123)+(z*w))+((x/5.123)-(z-w)))+(((x*5.123)-(z-w))*(x-(5.123*(z/w)))))+((((x/5.123)-(z-w))/(x+(5.123/(z*w))))/((x-(5.123*(z/w)))-(x-((5.123/z)*w)))))"
-"(((((x-5.123)+(z+w))-((x*5.123)*(z+w)))-(((x-5.123)*(z/w))/(x+((5.123/z)+w))))-((((x*5.123)*(z+w))+(x+((5.123/z)/w)))+((x+((5.123/z)+w))*((x*5.123)+(z*w)))))"
-"(((((x-5.123)+(z/w))-((x+5.123)*(z*w)))-(((x/5.123)-(z-w))/(x+(5.123/(z*w)))))-((((x+5.123)*(z*w))+(x-(5.123/(z*w))))+((x+(5.123/(z*w)))*(((x+5.123)*z)-w))))"
-"(((((x-5.123)-(z*w))*((x+5.123)*(z/w)))*(((x+5.123)*(z*w))+(x-(5.123/(z*w)))))*((((x+5.123)*(z/w))-(x+((5.123+z)/w)))-((x-(5.123/(z*w)))/(((x-5.123)*z)-w))))"
-"(((((x-5.123)-(z+w))+((x-5.123)*(z/w)))+(((x-5.123)*(z*w))*(x+((5.123*z)*w))))+((((x-5.123)*(z/w))/(x+((5.123/z)+w)))/((x+((5.123*z)*w))-(((x/5.123)/z)-w))))"
-"(((((x-5.123)-(z/w))/((x+5.123)/(z*w)))/(((x+5.123)*(z/w))-(x+((5.123+z)/w))))/((((x+5.123)/(z*w))*(x+((5.123+z)*w)))*((x+((5.123+z)/w))+(((x*5.123)*z)-w))))"
-"(((((x-5.123)/(z*w))+(x+((5.123-z)*w)))+((x+((5.123-z)/w))*(((x+5.123)/z)-w)))+(((x+((5.123-z)*w))/(((x-5.123)/z)-w))/((((x+5.123)/z)-w)-((x-5.123)+(z*w)))))"
-"(((((x-5.123)/(z+w))/((x*5.123)/(z+w)))/(((x/5.123)*(z+w))-(x+((5.123/z)*w))))/((((x*5.123)/(z+w))*(x-((5.123+z)/w)))*((x+((5.123/z)*w))+((x*5.123)+(z/w)))))"
-"(((((x-5.123)/(z/w))-(x+((5.123*z)/w)))-((x+((5.123-z)*w))/(((x-5.123)/z)-w)))-(((x+((5.123*z)/w))+(((x*5.123)/z)-w))+((((x-5.123)/z)-w)*((x-5.123)+(z/w)))))"
-"(((((x-y)*(7.123*w))*(x+((y*7.123)*w)))*((x+((y*7.123)/w))+(((x*y)/7.123)-w)))*(((x+((y*7.123)*w))-(((x/y)/7.123)-w))-((((x*y)/7.123)-w)/((x-y)-(7.123*w)))))"
-"(((((x-y)*(7.123+w))*((x/y)*(7.123+w)))*(((x*y)*(7.123+w))+(x+((y/7.123)/w))))*((((x/y)*(7.123+w))-(x+((y/7.123)*w)))-((x+((y/7.123)/w))/((x*y)-(7.123*w)))))"
-"(((((x-y)*(7.123/w))/(x+((y/7.123)+w)))/((x+((y*7.123)*w))-(((x/y)/7.123)-w)))/(((x+((y/7.123)+w))*((x*y)+(7.123*w)))*((((x/y)/7.123)-w)+((x-y)-(7.123/w)))))"
-"(((((x-y)*(z*9.123))*(x+((y*z)*9.123)))*((x+((y*z)/9.123))+(((x*y)/z)-9.123)))*(((x+((y*z)*9.123))-(((x/y)/z)-9.123))-((((x*y)/z)-9.123)/((x-y)-(z*9.123)))))"
-"(((((x-y)*(z+9.123))*((x/y)*(z+9.123)))*(((x*y)*(z+9.123))+(x+((y/z)/9.123))))*((((x/y)*(z+9.123))-(x+((y/z)*9.123)))-((x+((y/z)/9.123))/((x*y)-(z*9.123)))))"
-"(((((x-y)*(z/9.123))/(x+((y/z)+9.123)))/((x+((y*z)*9.123))-(((x/y)/z)-9.123)))/(((x+((y/z)+9.123))*((x*y)+(z*9.123)))*((((x/y)/z)-9.123)+((x-y)-(z/9.123)))))"
-"(((((x-y)+(7.123*w))+((x/y)-(7.123-w)))+(((x*y)-(7.123-w))*(x-(y*(7.123/w)))))+((((x/y)-(7.123-w))/(x+(y/(7.123*w))))/((x-(y*(7.123/w)))-(x-((y/7.123)*w)))))"
-"(((((x-y)+(7.123+w))-((x*y)*(7.123+w)))-(((x-y)*(7.123/w))/(x+((y/7.123)+w))))-((((x*y)*(7.123+w))+(x+((y/7.123)/w)))+((x+((y/7.123)+w))*((x*y)+(7.123*w)))))"
-"(((((x-y)+(7.123/w))-((x+y)*(7.123*w)))-(((x/y)-(7.123-w))/(x+(y/(7.123*w)))))-((((x+y)*(7.123*w))+(x-(y/(7.123*w))))+((x+(y/(7.123*w)))*(((x+y)*7.123)-w))))"
-"(((((x-y)+(z*9.123))+((x/y)-(z-9.123)))+(((x*y)-(z-9.123))*(x-(y*(z/9.123)))))+((((x/y)-(z-9.123))/(x+(y/(z*9.123))))/((x-(y*(z/9.123)))-(x-((y/z)*9.123)))))"
-"(((((x-y)+(z+9.123))-((x*y)*(z+9.123)))-(((x-y)*(z/9.123))/(x+((y/z)+9.123))))-((((x*y)*(z+9.123))+(x+((y/z)/9.123)))+((x+((y/z)+9.123))*((x*y)+(z*9.123)))))"
-"(((((x-y)+(z/9.123))-((x+y)*(z*9.123)))-(((x/y)-(z-9.123))/(x+(y/(z*9.123)))))-((((x+y)*(z*9.123))+(x-(y/(z*9.123))))+((x+(y/(z*9.123)))*(((x+y)*z)-9.123))))"
-"(((((x-y)-(7.123*w))*((x+y)*(7.123/w)))*(((x+y)*(7.123*w))+(x-(y/(7.123*w)))))*((((x+y)*(7.123/w))-(x+((y+7.123)/w)))-((x-(y/(7.123*w)))/(((x-y)*7.123)-w))))"
-"(((((x-y)-(7.123+w))+((x-y)*(7.123/w)))+(((x-y)*(7.123*w))*(x+((y*7.123)*w))))+((((x-y)*(7.123/w))/(x+((y/7.123)+w)))/((x+((y*7.123)*w))-(((x/y)/7.123)-w))))"
-"(((((x-y)-(7.123/w))/((x+y)/(7.123*w)))/(((x+y)*(7.123/w))-(x+((y+7.123)/w))))/((((x+y)/(7.123*w))*(x+((y+7.123)*w)))*((x+((y+7.123)/w))+(((x*y)*7.123)-w))))"
-"(((((x-y)-(z*9.123))*((x+y)*(z/9.123)))*(((x+y)*(z*9.123))+(x-(y/(z*9.123)))))*((((x+y)*(z/9.123))-(x+((y+z)/9.123)))-((x-(y/(z*9.123)))/(((x-y)*z)-9.123))))"
-"(((((x-y)-(z+9.123))+((x-y)*(z/9.123)))+(((x-y)*(z*9.123))*(x+((y*z)*9.123))))+((((x-y)*(z/9.123))/(x+((y/z)+9.123)))/((x+((y*z)*9.123))-(((x/y)/z)-9.123))))"
-"(((((x-y)-(z/9.123))/((x+y)/(z*9.123)))/(((x+y)*(z/9.123))-(x+((y+z)/9.123))))/((((x+y)/(z*9.123))*(x+((y+z)*9.123)))*((x+((y+z)/9.123))+(((x*y)*z)-9.123))))"
-"(((((x-y)/(7.123*w))+(x+((y-7.123)*w)))+((x+((y-7.123)/w))*(((x+y)/7.123)-w)))+(((x+((y-7.123)*w))/(((x-y)/7.123)-w))/((((x+y)/7.123)-w)-((x-y)+(7.123*w)))))"
-"(((((x-y)/(7.123+w))/((x*y)/(7.123+w)))/(((x/y)*(7.123+w))-(x+((y/7.123)*w))))/((((x*y)/(7.123+w))*(x-((y+7.123)/w)))*((x+((y/7.123)*w))+((x*y)+(7.123/w)))))"
-"(((((x-y)/(7.123/w))-(x+((y*7.123)/w)))-((x+((y-7.123)*w))/(((x-y)/7.123)-w)))-(((x+((y*7.123)/w))+(((x*y)/7.123)-w))+((((x-y)/7.123)-w)*((x-y)+(7.123/w)))))"
-"(((((x-y)/(z*9.123))+(x+((y-z)*9.123)))+((x+((y-z)/9.123))*(((x+y)/z)-9.123)))+(((x+((y-z)*9.123))/(((x-y)/z)-9.123))/((((x+y)/z)-9.123)-((x-y)+(z*9.123)))))"
-"(((((x-y)/(z+9.123))/((x*y)/(z+9.123)))/(((x/y)*(z+9.123))-(x+((y/z)*9.123))))/((((x*y)/(z+9.123))*(x-((y+z)/9.123)))*((x+((y/z)*9.123))+((x*y)+(z/9.123)))))"
-"(((((x-y)/(z/9.123))-(x+((y*z)/9.123)))-((x+((y-z)*9.123))/(((x-y)/z)-9.123)))-(((x+((y*z)/9.123))+(((x*y)/z)-9.123))+((((x-y)/z)-9.123)*((x-y)+(z/9.123)))))"
-"(((((x/5.123)*(z+w))-(x+((5.123/z)*w)))-((x+((5.123/z)/w))/((x*5.123)-(z*w))))-(((x+((5.123/z)*w))+((x*5.123)+(z/w)))+(((x*5.123)-(z*w))*((x+5.123)+(z-w)))))"
-"(((((x/5.123)*(z-w))/(x-((5.123*z)*w)))/((x-((5.123*z)/w))-(x/(5.123+(z*w)))))/(((x-((5.123*z)*w))*(x/(5.123-(z*w))))*((x/(5.123+(z*w)))+((x-5.123)/(z+w)))))"
-"(((((x/5.123)+(z+w))/((x*5.123)*(z-w)))/(((x/5.123)/(z-w))-(x-((5.123-z)*w))))/((((x*5.123)*(z-w))*(x-((5.123*z)/w)))*((x-((5.123-z)*w))+((x/5.123)-(z*w)))))"
-"(((((x/5.123)+(z-w))-(x+(5.123*(z/w))))-(((x/5.123)*(z-w))/(x-((5.123*z)*w))))-(((x+(5.123*(z/w)))+(x-((5.123/z)/w)))+((x-((5.123*z)*w))*(x/(5.123-(z*w))))))"
-"(((((x/5.123)+(z/w))-((x-5.123)-(z+w)))-(((x+5.123)/(z-w))/((x-5.123)*(z*w))))-((((x-5.123)-(z+w))+((x-5.123)*(z/w)))+(((x-5.123)*(z*w))*(x+((5.123*z)*w)))))"
-"(((((x/5.123)-(z*w))/((x-5.123)*(z+w)))/(((x-5.123)+(z+w))-((x*5.123)*(z+w))))/((((x-5.123)*(z+w))*((x/5.123)*(z+w)))*(((x*5.123)*(z+w))+(x+((5.123/z)/w)))))"
-"(((((x/5.123)-(z+w))-((x*5.123)/(z-w)))-(((x/5.123)/(z+w))/(x-((5.123+z)*w))))-((((x*5.123)/(z-w))+(x-((5.123-z)/w)))+((x-((5.123+z)*w))*((x/5.123)+(z/w)))))"
-"(((((x/5.123)-(z-w))/(x+(5.123/(z*w))))/((x-(5.123*(z/w)))-(x-((5.123/z)*w))))/(((x+(5.123/(z*w)))*(((x+5.123)*z)-w))*((x-((5.123/z)*w))+(x*(5.123-(z*w))))))"
-"(((((x/5.123)-(z/w))*((x-5.123)+(z+w)))*(((x-5.123)-(z+w))+((x-5.123)*(z/w))))*((((x-5.123)+(z+w))-((x*5.123)*(z+w)))-(((x-5.123)*(z/w))/(x+((5.123/z)+w)))))"
-"(((((x/5.123)/(z+w))/(x-((5.123+z)*w)))/((x-((5.123+z)/w))-((x*5.123)-(z/w))))/(((x-((5.123+z)*w))*((x/5.123)+(z/w)))*(((x*5.123)-(z/w))+((x+5.123)/(z-w)))))"
-"(((((x/5.123)/(z-w))-(x-((5.123-z)*w)))-((x-((5.123-z)/w))/((x/5.123)-(z/w))))-(((x-((5.123-z)*w))+((x/5.123)-(z*w)))+(((x/5.123)-(z/w))*((x-5.123)+(z+w)))))"
-"(((((x/y)*(7.123+w))-(x+((y/7.123)*w)))-((x+((y/7.123)/w))/((x*y)-(7.123*w))))-(((x+((y/7.123)*w))+((x*y)+(7.123/w)))+(((x*y)-(7.123*w))*((x+y)+(7.123-w)))))"
-"(((((x/y)*(7.123-w))/(x-((y*7.123)*w)))/((x-((y*7.123)/w))-(x/(y+(7.123*w)))))/(((x-((y*7.123)*w))*(x/(y-(7.123*w))))*((x/(y+(7.123*w)))+((x-y)/(7.123+w)))))"
-"(((((x/y)*(z+9.123))-(x+((y/z)*9.123)))-((x+((y/z)/9.123))/((x*y)-(z*9.123))))-(((x+((y/z)*9.123))+((x*y)+(z/9.123)))+(((x*y)-(z*9.123))*((x+y)+(z-9.123)))))"
-"(((((x/y)*(z-9.123))/(x-((y*z)*9.123)))/((x-((y*z)/9.123))-(x/(y+(z*9.123)))))/(((x-((y*z)*9.123))*(x/(y-(z*9.123))))*((x/(y+(z*9.123)))+((x-y)/(z+9.123)))))"
-"(((((x/y)+(7.123+w))/((x*y)*(7.123-w)))/(((x/y)/(7.123-w))-(x-((y-7.123)*w))))/((((x*y)*(7.123-w))*(x-((y*7.123)/w)))*((x-((y-7.123)*w))+((x/y)-(7.123*w)))))"
-"(((((x/y)+(7.123-w))-(x+(y*(7.123/w))))-(((x/y)*(7.123-w))/(x-((y*7.123)*w))))-(((x+(y*(7.123/w)))+(x-((y/7.123)/w)))+((x-((y*7.123)*w))*(x/(y-(7.123*w))))))"
-"(((((x/y)+(7.123/w))-((x-y)-(7.123+w)))-(((x+y)/(7.123-w))/((x-y)*(7.123*w))))-((((x-y)-(7.123+w))+((x-y)*(7.123/w)))+(((x-y)*(7.123*w))*(x+((y*7.123)*w)))))"
-"(((((x/y)+(z+9.123))/((x*y)*(z-9.123)))/(((x/y)/(z-9.123))-(x-((y-z)*9.123))))/((((x*y)*(z-9.123))*(x-((y*z)/9.123)))*((x-((y-z)*9.123))+((x/y)-(z*9.123)))))"
-"(((((x/y)+(z-9.123))-(x+(y*(z/9.123))))-(((x/y)*(z-9.123))/(x-((y*z)*9.123))))-(((x+(y*(z/9.123)))+(x-((y/z)/9.123)))+((x-((y*z)*9.123))*(x/(y-(z*9.123))))))"
-"(((((x/y)+(z/9.123))-((x-y)-(z+9.123)))-(((x+y)/(z-9.123))/((x-y)*(z*9.123))))-((((x-y)-(z+9.123))+((x-y)*(z/9.123)))+(((x-y)*(z*9.123))*(x+((y*z)*9.123)))))"
-"(((((x/y)-(7.123*w))/((x-y)*(7.123+w)))/(((x-y)+(7.123+w))-((x*y)*(7.123+w))))/((((x-y)*(7.123+w))*((x/y)*(7.123+w)))*(((x*y)*(7.123+w))+(x+((y/7.123)/w)))))"
-"(((((x/y)-(7.123+w))-((x*y)/(7.123-w)))-(((x/y)/(7.123+w))/(x-((y+7.123)*w))))-((((x*y)/(7.123-w))+(x-((y-7.123)/w)))+((x-((y+7.123)*w))*((x/y)+(7.123/w)))))"
-"(((((x/y)-(7.123-w))/(x+(y/(7.123*w))))/((x-(y*(7.123/w)))-(x-((y/7.123)*w))))/(((x+(y/(7.123*w)))*(((x+y)*7.123)-w))*((x-((y/7.123)*w))+(x*(y-(7.123*w))))))"
-"(((((x/y)-(7.123/w))*((x-y)+(7.123+w)))*(((x-y)-(7.123+w))+((x-y)*(7.123/w))))*((((x-y)+(7.123+w))-((x*y)*(7.123+w)))-(((x-y)*(7.123/w))/(x+((y/7.123)+w)))))"
-"(((((x/y)-(z*9.123))/((x-y)*(z+9.123)))/(((x-y)+(z+9.123))-((x*y)*(z+9.123))))/((((x-y)*(z+9.123))*((x/y)*(z+9.123)))*(((x*y)*(z+9.123))+(x+((y/z)/9.123)))))"
-"(((((x/y)-(z+9.123))-((x*y)/(z-9.123)))-(((x/y)/(z+9.123))/(x-((y+z)*9.123))))-((((x*y)/(z-9.123))+(x-((y-z)/9.123)))+((x-((y+z)*9.123))*((x/y)+(z/9.123)))))"
-"(((((x/y)-(z-9.123))/(x+(y/(z*9.123))))/((x-(y*(z/9.123)))-(x-((y/z)*9.123))))/(((x+(y/(z*9.123)))*(((x+y)*z)-9.123))*((x-((y/z)*9.123))+(x*(y-(z*9.123))))))"
-"(((((x/y)-(z/9.123))*((x-y)+(z+9.123)))*(((x-y)-(z+9.123))+((x-y)*(z/9.123))))*((((x-y)+(z+9.123))-((x*y)*(z+9.123)))-(((x-y)*(z/9.123))/(x+((y/z)+9.123)))))"
-"(((((x/y)/(7.123+w))/(x-((y+7.123)*w)))/((x-((y+7.123)/w))-((x*y)-(7.123/w))))/(((x-((y+7.123)*w))*((x/y)+(7.123/w)))*(((x*y)-(7.123/w))+((x+y)/(7.123-w)))))"
-"(((((x/y)/(7.123-w))-(x-((y-7.123)*w)))-((x-((y-7.123)/w))/((x/y)-(7.123/w))))-(((x-((y-7.123)*w))+((x/y)-(7.123*w)))+(((x/y)-(7.123/w))*((x-y)+(7.123+w)))))"
-"(((((x/y)/(z+9.123))/(x-((y+z)*9.123)))/((x-((y+z)/9.123))-((x*y)-(z/9.123))))/(((x-((y+z)*9.123))*((x/y)+(z/9.123)))*(((x*y)-(z/9.123))+((x+y)/(z-9.123)))))"
-"(((((x/y)/(z-9.123))-(x-((y-z)*9.123)))-((x-((y-z)/9.123))/((x/y)-(z/9.123))))-(((x-((y-z)*9.123))+((x/y)-(z*9.123)))+(((x/y)-(z/9.123))*((x-y)+(z+9.123)))))"
-"((((3.123*(y+(z*w)))*((3.123/y)-(z+w)))*(((3.123*y)-(z+w))+((3.123/y)/(z+w))))*((((3.123/y)-(z+w))-((3.123*y)/(z-w)))-(((3.123/y)/(z+w))/(3.123-((y+z)*w)))))"
-"((((3.123*(y-(z*w)))/((3.123*y)+(z+w)))/(((3.123/y)-(z+w))-((3.123*y)/(z-w))))/((((3.123*y)+(z+w))*((3.123/y)/(z-w)))*(((3.123*y)/(z-w))+(3.123-((y-z)/w)))))"
-"((((3.123+((y*z)*w))-(((3.123/y)/z)-w))-((((3.123*y)/z)-w)/((3.123-y)-(z*w))))-(((((3.123/y)/z)-w)+((3.123-y)-(z/w)))+(((3.123-y)-(z*w))*((3.123+y)*(z/w)))))"
-"((((3.123+((y*z)/w))+(((3.123*y)/z)-w))+((((3.123-y)/z)-w)*((3.123-y)+(z/w))))+(((((3.123*y)/z)-w)/((3.123-y)-(z*w)))/(((3.123-y)+(z/w))-((3.123+y)*(z*w)))))"
-"((((3.123+((y+z)*w))-(((3.123/y)*z)-w))-((((3.123*y)*z)-w)/((3.123+y)+(z*w))))-(((((3.123/y)*z)-w)+((3.123+y)+(z/w)))+(((3.123+y)+(z*w))*((3.123/y)+(z-w)))))"
-"((((3.123+((y+z)/w))+(((3.123*y)*z)-w))+((((3.123-y)*z)-w)*((3.123+y)-(z/w))))+(((((3.123*y)*z)-w)/((3.123+y)+(z*w)))/(((3.123+y)-(z/w))-((3.123*y)+(z-w)))))"
-"((((3.123+((y-z)*w))/(((3.123-y)/z)-w))/((((3.123+y)/z)-w)-((3.123-y)+(z*w))))/(((((3.123-y)/z)-w)*((3.123-y)+(z/w)))*(((3.123-y)+(z*w))+((3.123/y)-(z-w)))))"
-"((((3.123+((y-z)/w))*(((3.123+y)/z)-w))*((((3.123/y)*z)-w)+((3.123+y)+(z/w))))*(((((3.123+y)/z)-w)-((3.123-y)+(z*w)))-(((3.123+y)+(z/w))/((3.123*y)-(z-w)))))"
-"((((3.123+((y/z)*w))+((3.123*y)+(z/w)))+(((3.123*y)-(z*w))*((3.123+y)+(z-w))))+((((3.123*y)+(z/w))/((3.123+y)*(z-w)))/(((3.123+y)+(z-w))-((3.123-y)/(z*w)))))"
-"((((3.123+((y/z)+w))*((3.123*y)+(z*w)))*((((3.123/y)/z)-w)+((3.123-y)-(z/w))))*((((3.123*y)+(z*w))-((3.123+y)-(z-w)))-(((3.123-y)-(z/w))/((3.123+y)/(z*w)))))"
-"((((3.123+((y/z)/w))/((3.123*y)-(z*w)))/(((3.123*y)+(z*w))-((3.123+y)-(z-w))))/((((3.123*y)-(z*w))*((3.123+y)+(z-w)))*(((3.123+y)-(z-w))+((3.123+y)/(z/w)))))"
-"((((3.123+(y*(z/w)))+(3.123-((y/z)/w)))+((3.123-((y*z)*w))*(3.123/(y-(z*w)))))+(((3.123-((y/z)/w))/(3.123*(y+(z*w))))/((3.123/(y-(z*w)))-((3.123*y)-(z+w)))))"
-"((((3.123+(y/(z*w)))*(((3.123+y)*z)-w))*((3.123-((y/z)*w))+(3.123*(y-(z*w)))))*(((((3.123+y)*z)-w)-((3.123+y)-(z*w)))-((3.123*(y-(z*w)))/((3.123*y)+(z+w)))))"
-"((((3.123-((y*z)*w))*(3.123/(y-(z*w))))*((3.123/(y+(z*w)))+((3.123-y)/(z+w))))*(((3.123/(y-(z*w)))-((3.123*y)-(z+w)))-(((3.123-y)/(z+w))/((3.123*y)/(z+w)))))"
-"((((3.123-((y*z)/w))-(3.123/(y+(z*w))))-(((3.123/y)-(z*w))/((3.123-y)*(z+w))))-(((3.123/(y+(z*w)))+((3.123-y)/(z+w)))+(((3.123-y)*(z+w))*((3.123/y)*(z+w)))))"
-"((((3.123-((y+z)*w))*((3.123/y)+(z/w)))*(((3.123*y)-(z/w))+((3.123+y)/(z-w))))*((((3.123/y)+(z/w))-((3.123-y)-(z+w)))-(((3.123+y)/(z-w))/((3.123-y)*(z*w)))))"
-"((((3.123-((y+z)/w))-((3.123*y)-(z/w)))-(((3.123*y)+(z/w))/((3.123+y)*(z-w))))-((((3.123*y)-(z/w))+((3.123+y)/(z-w)))+(((3.123+y)*(z-w))*((3.123-y)/(z/w)))))"
-"((((3.123-((y-z)*w))+((3.123/y)-(z*w)))+(((3.123/y)-(z/w))*((3.123-y)+(z+w))))+((((3.123/y)-(z*w))/((3.123-y)*(z+w)))/(((3.123-y)+(z+w))-((3.123*y)*(z+w)))))"
-"((((3.123-((y-z)/w))/((3.123/y)-(z/w)))/(((3.123/y)+(z/w))-((3.123-y)-(z+w))))/((((3.123/y)-(z/w))*((3.123-y)+(z+w)))*(((3.123-y)-(z+w))+((3.123-y)*(z/w)))))"
-"((((3.123-((y/z)*w))+(3.123*(y-(z*w))))+((3.123*(y+(z*w)))*((3.123/y)-(z+w))))+(((3.123*(y-(z*w)))/((3.123*y)+(z+w)))/(((3.123/y)-(z+w))-((3.123*y)/(z-w)))))"
-"((((3.123-((y/z)/w))/(3.123*(y+(z*w))))/((3.123/(y-(z*w)))-((3.123*y)-(z+w))))/(((3.123*(y+(z*w)))*((3.123/y)-(z+w)))*(((3.123*y)-(z+w))+((3.123/y)/(z+w)))))"
-"((((3.123-(y*(z/w)))-(3.123-((y/z)*w)))-((3.123-((y/z)/w))/(3.123*(y+(z*w)))))-(((3.123-((y/z)*w))+(3.123*(y-(z*w))))+((3.123*(y+(z*w)))*((3.123/y)-(z+w)))))"
-"((((3.123-(y/(z*w)))/(((3.123-y)*z)-w))/((((3.123+y)*z)-w)-((3.123+y)-(z*w))))/(((((3.123-y)*z)-w)*((3.123+y)-(z/w)))*(((3.123+y)-(z*w))+((3.123/y)+(z+w)))))"
-"((((3.123/(y+(z*w)))+((3.123-y)/(z+w)))+(((3.123-y)*(z+w))*((3.123/y)*(z+w))))+((((3.123-y)/(z+w))/((3.123*y)/(z+w)))/(((3.123/y)*(z+w))-(3.123+((y/z)*w)))))"
-"((((3.123/(y-(z*w)))-((3.123*y)-(z+w)))-(((3.123-y)/(z+w))/((3.123*y)/(z+w))))-((((3.123*y)-(z+w))+((3.123/y)/(z+w)))+(((3.123*y)/(z+w))*(3.123-((y+z)/w)))))"
-"((((x*(5.123+(z*w)))*((x/5.123)-(z+w)))*(((x*5.123)-(z+w))+((x/5.123)/(z+w))))*((((x/5.123)-(z+w))-((x*5.123)/(z-w)))-(((x/5.123)/(z+w))/(x-((5.123+z)*w)))))"
-"((((x*(5.123-(z*w)))/((x*5.123)+(z+w)))/(((x/5.123)-(z+w))-((x*5.123)/(z-w))))/((((x*5.123)+(z+w))*((x/5.123)/(z-w)))*(((x*5.123)/(z-w))+(x-((5.123-z)/w)))))"
-"((((x*(y+(7.123*w)))*((x/y)-(7.123+w)))*(((x*y)-(7.123+w))+((x/y)/(7.123+w))))*((((x/y)-(7.123+w))-((x*y)/(7.123-w)))-(((x/y)/(7.123+w))/(x-((y+7.123)*w)))))"
-"((((x*(y+(z*9.123)))*((x/y)-(z+9.123)))*(((x*y)-(z+9.123))+((x/y)/(z+9.123))))*((((x/y)-(z+9.123))-((x*y)/(z-9.123)))-(((x/y)/(z+9.123))/(x-((y+z)*9.123)))))"
-"((((x*(y-(7.123*w)))/((x*y)+(7.123+w)))/(((x/y)-(7.123+w))-((x*y)/(7.123-w))))/((((x*y)+(7.123+w))*((x/y)/(7.123-w)))*(((x*y)/(7.123-w))+(x-((y-7.123)/w)))))"
-"((((x*(y-(z*9.123)))/((x*y)+(z+9.123)))/(((x/y)-(z+9.123))-((x*y)/(z-9.123))))/((((x*y)+(z+9.123))*((x/y)/(z-9.123)))*(((x*y)/(z-9.123))+(x-((y-z)/9.123)))))"
-"((((x+((5.123*z)*w))-(((x/5.123)/z)-w))-((((x*5.123)/z)-w)/((x-5.123)-(z*w))))-(((((x/5.123)/z)-w)+((x-5.123)-(z/w)))+(((x-5.123)-(z*w))*((x+5.123)*(z/w)))))"
-"((((x+((5.123*z)/w))+(((x*5.123)/z)-w))+((((x-5.123)/z)-w)*((x-5.123)+(z/w))))+(((((x*5.123)/z)-w)/((x-5.123)-(z*w)))/(((x-5.123)+(z/w))-((x+5.123)*(z*w)))))"
-"((((x+((5.123+z)*w))-(((x/5.123)*z)-w))-((((x*5.123)*z)-w)/((x+5.123)+(z*w))))-(((((x/5.123)*z)-w)+((x+5.123)+(z/w)))+(((x+5.123)+(z*w))*((x/5.123)+(z-w)))))"
-"((((x+((5.123+z)/w))+(((x*5.123)*z)-w))+((((x-5.123)*z)-w)*((x+5.123)-(z/w))))+(((((x*5.123)*z)-w)/((x+5.123)+(z*w)))/(((x+5.123)-(z/w))-((x*5.123)+(z-w)))))"
-"((((x+((5.123-z)*w))/(((x-5.123)/z)-w))/((((x+5.123)/z)-w)-((x-5.123)+(z*w))))/(((((x-5.123)/z)-w)*((x-5.123)+(z/w)))*(((x-5.123)+(z*w))+((x/5.123)-(z-w)))))"
-"((((x+((5.123-z)/w))*(((x+5.123)/z)-w))*((((x/5.123)*z)-w)+((x+5.123)+(z/w))))*(((((x+5.123)/z)-w)-((x-5.123)+(z*w)))-(((x+5.123)+(z/w))/((x*5.123)-(z-w)))))"
-"((((x+((5.123/z)*w))+((x*5.123)+(z/w)))+(((x*5.123)-(z*w))*((x+5.123)+(z-w))))+((((x*5.123)+(z/w))/((x+5.123)*(z-w)))/(((x+5.123)+(z-w))-((x-5.123)/(z*w)))))"
-"((((x+((5.123/z)+w))*((x*5.123)+(z*w)))*((((x/5.123)/z)-w)+((x-5.123)-(z/w))))*((((x*5.123)+(z*w))-((x+5.123)-(z-w)))-(((x-5.123)-(z/w))/((x+5.123)/(z*w)))))"
-"((((x+((5.123/z)/w))/((x*5.123)-(z*w)))/(((x*5.123)+(z*w))-((x+5.123)-(z-w))))/((((x*5.123)-(z*w))*((x+5.123)+(z-w)))*(((x+5.123)-(z-w))+((x+5.123)/(z/w)))))"
-"((((x+((y*7.123)*w))-(((x/y)/7.123)-w))-((((x*y)/7.123)-w)/((x-y)-(7.123*w))))-(((((x/y)/7.123)-w)+((x-y)-(7.123/w)))+(((x-y)-(7.123*w))*((x+y)*(7.123/w)))))"
-"((((x+((y*7.123)/w))+(((x*y)/7.123)-w))+((((x-y)/7.123)-w)*((x-y)+(7.123/w))))+(((((x*y)/7.123)-w)/((x-y)-(7.123*w)))/(((x-y)+(7.123/w))-((x+y)*(7.123*w)))))"
-"((((x+((y*z)*9.123))-(((x/y)/z)-9.123))-((((x*y)/z)-9.123)/((x-y)-(z*9.123))))-(((((x/y)/z)-9.123)+((x-y)-(z/9.123)))+(((x-y)-(z*9.123))*((x+y)*(z/9.123)))))"
-"((((x+((y*z)/9.123))+(((x*y)/z)-9.123))+((((x-y)/z)-9.123)*((x-y)+(z/9.123))))+(((((x*y)/z)-9.123)/((x-y)-(z*9.123)))/(((x-y)+(z/9.123))-((x+y)*(z*9.123)))))"
-"((((x+((y+7.123)*w))-(((x/y)*7.123)-w))-((((x*y)*7.123)-w)/((x+y)+(7.123*w))))-(((((x/y)*7.123)-w)+((x+y)+(7.123/w)))+(((x+y)+(7.123*w))*((x/y)+(7.123-w)))))"
-"((((x+((y+7.123)/w))+(((x*y)*7.123)-w))+((((x-y)*7.123)-w)*((x+y)-(7.123/w))))+(((((x*y)*7.123)-w)/((x+y)+(7.123*w)))/(((x+y)-(7.123/w))-((x*y)+(7.123-w)))))"
-"((((x+((y+z)*9.123))-(((x/y)*z)-9.123))-((((x*y)*z)-9.123)/((x+y)+(z*9.123))))-(((((x/y)*z)-9.123)+((x+y)+(z/9.123)))+(((x+y)+(z*9.123))*((x/y)+(z-9.123)))))"
-"((((x+((y+z)/9.123))+(((x*y)*z)-9.123))+((((x-y)*z)-9.123)*((x+y)-(z/9.123))))+(((((x*y)*z)-9.123)/((x+y)+(z*9.123)))/(((x+y)-(z/9.123))-((x*y)+(z-9.123)))))"
-"((((x+((y-7.123)*w))/(((x-y)/7.123)-w))/((((x+y)/7.123)-w)-((x-y)+(7.123*w))))/(((((x-y)/7.123)-w)*((x-y)+(7.123/w)))*(((x-y)+(7.123*w))+((x/y)-(7.123-w)))))"
-"((((x+((y-7.123)/w))*(((x+y)/7.123)-w))*((((x/y)*7.123)-w)+((x+y)+(7.123/w))))*(((((x+y)/7.123)-w)-((x-y)+(7.123*w)))-(((x+y)+(7.123/w))/((x*y)-(7.123-w)))))"
-"((((x+((y-z)*9.123))/(((x-y)/z)-9.123))/((((x+y)/z)-9.123)-((x-y)+(z*9.123))))/(((((x-y)/z)-9.123)*((x-y)+(z/9.123)))*(((x-y)+(z*9.123))+((x/y)-(z-9.123)))))"
-"((((x+((y-z)/9.123))*(((x+y)/z)-9.123))*((((x/y)*z)-9.123)+((x+y)+(z/9.123))))*(((((x+y)/z)-9.123)-((x-y)+(z*9.123)))-(((x+y)+(z/9.123))/((x*y)-(z-9.123)))))"
-"((((x+((y/7.123)*w))+((x*y)+(7.123/w)))+(((x*y)-(7.123*w))*((x+y)+(7.123-w))))+((((x*y)+(7.123/w))/((x+y)*(7.123-w)))/(((x+y)+(7.123-w))-((x-y)/(7.123*w)))))"
-"((((x+((y/7.123)+w))*((x*y)+(7.123*w)))*((((x/y)/7.123)-w)+((x-y)-(7.123/w))))*((((x*y)+(7.123*w))-((x+y)-(7.123-w)))-(((x-y)-(7.123/w))/((x+y)/(7.123*w)))))"
-"((((x+((y/7.123)/w))/((x*y)-(7.123*w)))/(((x*y)+(7.123*w))-((x+y)-(7.123-w))))/((((x*y)-(7.123*w))*((x+y)+(7.123-w)))*(((x+y)-(7.123-w))+((x+y)/(7.123/w)))))"
-"((((x+((y/z)*9.123))+((x*y)+(z/9.123)))+(((x*y)-(z*9.123))*((x+y)+(z-9.123))))+((((x*y)+(z/9.123))/((x+y)*(z-9.123)))/(((x+y)+(z-9.123))-((x-y)/(z*9.123)))))"
-"((((x+((y/z)+9.123))*((x*y)+(z*9.123)))*((((x/y)/z)-9.123)+((x-y)-(z/9.123))))*((((x*y)+(z*9.123))-((x+y)-(z-9.123)))-(((x-y)-(z/9.123))/((x+y)/(z*9.123)))))"
-"((((x+((y/z)/9.123))/((x*y)-(z*9.123)))/(((x*y)+(z*9.123))-((x+y)-(z-9.123))))/((((x*y)-(z*9.123))*((x+y)+(z-9.123)))*(((x+y)-(z-9.123))+((x+y)/(z/9.123)))))"
-"((((x+(5.123*(z/w)))+(x-((5.123/z)/w)))+((x-((5.123*z)*w))*(x/(5.123-(z*w)))))+(((x-((5.123/z)/w))/(x*(5.123+(z*w))))/((x/(5.123-(z*w)))-((x*5.123)-(z+w)))))"
-"((((x+(5.123/(z*w)))*(((x+5.123)*z)-w))*((x-((5.123/z)*w))+(x*(5.123-(z*w)))))*(((((x+5.123)*z)-w)-((x+5.123)-(z*w)))-((x*(5.123-(z*w)))/((x*5.123)+(z+w)))))"
-"((((x+(y*(7.123/w)))+(x-((y/7.123)/w)))+((x-((y*7.123)*w))*(x/(y-(7.123*w)))))+(((x-((y/7.123)/w))/(x*(y+(7.123*w))))/((x/(y-(7.123*w)))-((x*y)-(7.123+w)))))"
-"((((x+(y*(z/9.123)))+(x-((y/z)/9.123)))+((x-((y*z)*9.123))*(x/(y-(z*9.123)))))+(((x-((y/z)/9.123))/(x*(y+(z*9.123))))/((x/(y-(z*9.123)))-((x*y)-(z+9.123)))))"
-"((((x+(y/(7.123*w)))*(((x+y)*7.123)-w))*((x-((y/7.123)*w))+(x*(y-(7.123*w)))))*(((((x+y)*7.123)-w)-((x+y)-(7.123*w)))-((x*(y-(7.123*w)))/((x*y)+(7.123+w)))))"
-"((((x+(y/(z*9.123)))*(((x+y)*z)-9.123))*((x-((y/z)*9.123))+(x*(y-(z*9.123)))))*(((((x+y)*z)-9.123)-((x+y)-(z*9.123)))-((x*(y-(z*9.123)))/((x*y)+(z+9.123)))))"
-"((((x-((5.123*z)*w))*(x/(5.123-(z*w))))*((x/(5.123+(z*w)))+((x-5.123)/(z+w))))*(((x/(5.123-(z*w)))-((x*5.123)-(z+w)))-(((x-5.123)/(z+w))/((x*5.123)/(z+w)))))"
-"((((x-((5.123*z)/w))-(x/(5.123+(z*w))))-(((x/5.123)-(z*w))/((x-5.123)*(z+w))))-(((x/(5.123+(z*w)))+((x-5.123)/(z+w)))+(((x-5.123)*(z+w))*((x/5.123)*(z+w)))))"
-"((((x-((5.123+z)*w))*((x/5.123)+(z/w)))*(((x*5.123)-(z/w))+((x+5.123)/(z-w))))*((((x/5.123)+(z/w))-((x-5.123)-(z+w)))-(((x+5.123)/(z-w))/((x-5.123)*(z*w)))))"
-"((((x-((5.123+z)/w))-((x*5.123)-(z/w)))-(((x*5.123)+(z/w))/((x+5.123)*(z-w))))-((((x*5.123)-(z/w))+((x+5.123)/(z-w)))+(((x+5.123)*(z-w))*((x-5.123)/(z/w)))))"
-"((((x-((5.123-z)*w))+((x/5.123)-(z*w)))+(((x/5.123)-(z/w))*((x-5.123)+(z+w))))+((((x/5.123)-(z*w))/((x-5.123)*(z+w)))/(((x-5.123)+(z+w))-((x*5.123)*(z+w)))))"
-"((((x-((5.123-z)/w))/((x/5.123)-(z/w)))/(((x/5.123)+(z/w))-((x-5.123)-(z+w))))/((((x/5.123)-(z/w))*((x-5.123)+(z+w)))*(((x-5.123)-(z+w))+((x-5.123)*(z/w)))))"
-"((((x-((5.123/z)*w))+(x*(5.123-(z*w))))+((x*(5.123+(z*w)))*((x/5.123)-(z+w))))+(((x*(5.123-(z*w)))/((x*5.123)+(z+w)))/(((x/5.123)-(z+w))-((x*5.123)/(z-w)))))"
-"((((x-((5.123/z)/w))/(x*(5.123+(z*w))))/((x/(5.123-(z*w)))-((x*5.123)-(z+w))))/(((x*(5.123+(z*w)))*((x/5.123)-(z+w)))*(((x*5.123)-(z+w))+((x/5.123)/(z+w)))))"
-"((((x-((y*7.123)*w))*(x/(y-(7.123*w))))*((x/(y+(7.123*w)))+((x-y)/(7.123+w))))*(((x/(y-(7.123*w)))-((x*y)-(7.123+w)))-(((x-y)/(7.123+w))/((x*y)/(7.123+w)))))"
-"((((x-((y*7.123)/w))-(x/(y+(7.123*w))))-(((x/y)-(7.123*w))/((x-y)*(7.123+w))))-(((x/(y+(7.123*w)))+((x-y)/(7.123+w)))+(((x-y)*(7.123+w))*((x/y)*(7.123+w)))))"
-"((((x-((y*z)*9.123))*(x/(y-(z*9.123))))*((x/(y+(z*9.123)))+((x-y)/(z+9.123))))*(((x/(y-(z*9.123)))-((x*y)-(z+9.123)))-(((x-y)/(z+9.123))/((x*y)/(z+9.123)))))"
-"((((x-((y*z)/9.123))-(x/(y+(z*9.123))))-(((x/y)-(z*9.123))/((x-y)*(z+9.123))))-(((x/(y+(z*9.123)))+((x-y)/(z+9.123)))+(((x-y)*(z+9.123))*((x/y)*(z+9.123)))))"
-"((((x-((y+7.123)*w))*((x/y)+(7.123/w)))*(((x*y)-(7.123/w))+((x+y)/(7.123-w))))*((((x/y)+(7.123/w))-((x-y)-(7.123+w)))-(((x+y)/(7.123-w))/((x-y)*(7.123*w)))))"
-"((((x-((y+7.123)/w))-((x*y)-(7.123/w)))-(((x*y)+(7.123/w))/((x+y)*(7.123-w))))-((((x*y)-(7.123/w))+((x+y)/(7.123-w)))+(((x+y)*(7.123-w))*((x-y)/(7.123/w)))))"
-"((((x-((y+z)*9.123))*((x/y)+(z/9.123)))*(((x*y)-(z/9.123))+((x+y)/(z-9.123))))*((((x/y)+(z/9.123))-((x-y)-(z+9.123)))-(((x+y)/(z-9.123))/((x-y)*(z*9.123)))))"
-"((((x-((y+z)/9.123))-((x*y)-(z/9.123)))-(((x*y)+(z/9.123))/((x+y)*(z-9.123))))-((((x*y)-(z/9.123))+((x+y)/(z-9.123)))+(((x+y)*(z-9.123))*((x-y)/(z/9.123)))))"
-"((((x-((y-7.123)*w))+((x/y)-(7.123*w)))+(((x/y)-(7.123/w))*((x-y)+(7.123+w))))+((((x/y)-(7.123*w))/((x-y)*(7.123+w)))/(((x-y)+(7.123+w))-((x*y)*(7.123+w)))))"
-"((((x-((y-7.123)/w))/((x/y)-(7.123/w)))/(((x/y)+(7.123/w))-((x-y)-(7.123+w))))/((((x/y)-(7.123/w))*((x-y)+(7.123+w)))*(((x-y)-(7.123+w))+((x-y)*(7.123/w)))))"
-"((((x-((y-z)*9.123))+((x/y)-(z*9.123)))+(((x/y)-(z/9.123))*((x-y)+(z+9.123))))+((((x/y)-(z*9.123))/((x-y)*(z+9.123)))/(((x-y)+(z+9.123))-((x*y)*(z+9.123)))))"
-"((((x-((y-z)/9.123))/((x/y)-(z/9.123)))/(((x/y)+(z/9.123))-((x-y)-(z+9.123))))/((((x/y)-(z/9.123))*((x-y)+(z+9.123)))*(((x-y)-(z+9.123))+((x-y)*(z/9.123)))))"
-"((((x-((y/7.123)*w))+(x*(y-(7.123*w))))+((x*(y+(7.123*w)))*((x/y)-(7.123+w))))+(((x*(y-(7.123*w)))/((x*y)+(7.123+w)))/(((x/y)-(7.123+w))-((x*y)/(7.123-w)))))"
-"((((x-((y/7.123)/w))/(x*(y+(7.123*w))))/((x/(y-(7.123*w)))-((x*y)-(7.123+w))))/(((x*(y+(7.123*w)))*((x/y)-(7.123+w)))*(((x*y)-(7.123+w))+((x/y)/(7.123+w)))))"
-"((((x-((y/z)*9.123))+(x*(y-(z*9.123))))+((x*(y+(z*9.123)))*((x/y)-(z+9.123))))+(((x*(y-(z*9.123)))/((x*y)+(z+9.123)))/(((x/y)-(z+9.123))-((x*y)/(z-9.123)))))"
-"((((x-((y/z)/9.123))/(x*(y+(z*9.123))))/((x/(y-(z*9.123)))-((x*y)-(z+9.123))))/(((x*(y+(z*9.123)))*((x/y)-(z+9.123)))*(((x*y)-(z+9.123))+((x/y)/(z+9.123)))))"
-"((((x-(5.123*(z/w)))-(x-((5.123/z)*w)))-((x-((5.123/z)/w))/(x*(5.123+(z*w)))))-(((x-((5.123/z)*w))+(x*(5.123-(z*w))))+((x*(5.123+(z*w)))*((x/5.123)-(z+w)))))"
-"((((x-(5.123/(z*w)))/(((x-5.123)*z)-w))/((((x+5.123)*z)-w)-((x+5.123)-(z*w))))/(((((x-5.123)*z)-w)*((x+5.123)-(z/w)))*(((x+5.123)-(z*w))+((x/5.123)+(z+w)))))"
-"((((x-(y*(7.123/w)))-(x-((y/7.123)*w)))-((x-((y/7.123)/w))/(x*(y+(7.123*w)))))-(((x-((y/7.123)*w))+(x*(y-(7.123*w))))+((x*(y+(7.123*w)))*((x/y)-(7.123+w)))))"
-"((((x-(y*(z/9.123)))-(x-((y/z)*9.123)))-((x-((y/z)/9.123))/(x*(y+(z*9.123)))))-(((x-((y/z)*9.123))+(x*(y-(z*9.123))))+((x*(y+(z*9.123)))*((x/y)-(z+9.123)))))"
-"((((x-(y/(7.123*w)))/(((x-y)*7.123)-w))/((((x+y)*7.123)-w)-((x+y)-(7.123*w))))/(((((x-y)*7.123)-w)*((x+y)-(7.123/w)))*(((x+y)-(7.123*w))+((x/y)+(7.123+w)))))"
-"((((x-(y/(z*9.123)))/(((x-y)*z)-9.123))/((((x+y)*z)-9.123)-((x+y)-(z*9.123))))/(((((x-y)*z)-9.123)*((x+y)-(z/9.123)))*(((x+y)-(z*9.123))+((x/y)+(z+9.123)))))"
-"((((x/(5.123+(z*w)))+((x-5.123)/(z+w)))+(((x-5.123)*(z+w))*((x/5.123)*(z+w))))+((((x-5.123)/(z+w))/((x*5.123)/(z+w)))/(((x/5.123)*(z+w))-(x+((5.123/z)*w)))))"
-"((((x/(5.123-(z*w)))-((x*5.123)-(z+w)))-(((x-5.123)/(z+w))/((x*5.123)/(z+w))))-((((x*5.123)-(z+w))+((x/5.123)/(z+w)))+(((x*5.123)/(z+w))*(x-((5.123+z)/w)))))"
-"((((x/(y+(7.123*w)))+((x-y)/(7.123+w)))+(((x-y)*(7.123+w))*((x/y)*(7.123+w))))+((((x-y)/(7.123+w))/((x*y)/(7.123+w)))/(((x/y)*(7.123+w))-(x+((y/7.123)*w)))))"
-"((((x/(y+(z*9.123)))+((x-y)/(z+9.123)))+(((x-y)*(z+9.123))*((x/y)*(z+9.123))))+((((x-y)/(z+9.123))/((x*y)/(z+9.123)))/(((x/y)*(z+9.123))-(x+((y/z)*9.123)))))"
-"((((x/(y-(7.123*w)))-((x*y)-(7.123+w)))-(((x-y)/(7.123+w))/((x*y)/(7.123+w))))-((((x*y)-(7.123+w))+((x/y)/(7.123+w)))+(((x*y)/(7.123+w))*(x-((y+7.123)/w)))))"
-"((((x/(y-(z*9.123)))-((x*y)-(z+9.123)))-(((x-y)/(z+9.123))/((x*y)/(z+9.123))))-((((x*y)-(z+9.123))+((x/y)/(z+9.123)))+(((x*y)/(z+9.123))*(x-((y+z)/9.123)))))"
-"(((tan((tan(((((cos(((((cos(cos((cos(cos((((((sin(cos((0.90-(((cos((b-e))/b)-b)/e))))*3.88)+e)+1.87)/a)+b)))+b)))+pi)+pi)/a)+b))+e)+pi)+pi)/a))+pi))+b)+a)+a)"
-"(tan((tan((((a+cos((((pi+cos(tan((cos((pi+((b+(cos(cos((((((a*sin(sin(cos((((e/1.91)/1.01)+a)))))-e)/2.90)/a)+e)))+b))-pi)))+pi))))*b)+a)))+pi)/b))-3.28))/a)"
-"(tan(tan(((b+((b/(e+(sin((sin((b/((((a-((3.84-(e*(pi/(((((cos((cos(((cos(e)+b)/3.18))+pi))*0.41)-b)+e)/b)*0.45))))-e))*b)/1.93)+3.79)))-pi))+a)))/b))/b)))+b)"
-"(sin(sin((((((((((cos((cos(cos((((cos((((((((b/((b/(tan(((3.10+1.04)+a))-pi))/b))+a)+e)/2.22)/a)/a)/b))/e)/a)+pi)))+e))/a)/b)/b)-pi)-a)+1.75)*e)+3.51)*b)))/e)"
-"(tan(((cos((((sin(cos((sin((((cos(tan((pi/tan((sin(cos((((((2.87+(e+(((1.14/pi)+a)*b)))+a)+b)/e)+a)))-0.34)))))+a)+a)+b))/b)))+b)+b)+1.12))+0.70)/3.73))/0.37)"
-"(e+tan(((((sin((sin((sin(((2.77+((sin(((cos(((cos(((((((3.51+(cos(((0.96*a)/pi))+a))+3.79)-a)*e)*a)-a))/b)+b))+b)+b))+1.84)-pi))+e))-pi))/a))/a)*2.85)*pi)-e)))"
-"2.2+y+z/w+2.2+y+z*w+2.2+y-z/w-2.2+y-z*w+2.2+y*z/w*2.2+y*z*w-2.2+y/z+w+2.2+y/z/w+2.2+y/z*w-2.2-y+z/w*2.2-y+z*w*2.2-y-z/w-2.2-y-z*w+2.2-y*z/w+2.2-y*z*w-2.2-y/z/w"
-"2.2-y-z+w+2.2-y-z+w+2.2-y+z+w-2.2-y+z+w+2.2*y-z+w*2.2/y-z+w-2.2*y+z+w+2.2/y+z+w+2.2*y+z-w-2.2/y+z-w*2.2*y-z-w*2.2/y-z-w-2.2+y*z*w+2.2+y*z/w+2.2+y/z*w-2.2+y/z/w"
-"2.2-y/z*w*2.2+y*z-w-2.2-y*z-w+2.2*y*z-w*2.2/y*z-w-2.2+y/z-w*2.2-y/z-w*2.2*y/z-w-2.2/y/z-w+2.2*y+z*w+2.2*y-z*w-2.2*y+z/w+2.2*y-z/w*2.2/y+z/w-2.2/y-z/w+2.2/y-z*w"
-"2.2/y+z*w-2.2/y-z*w*2.2*y+z*w*2.2*y-z*w-2.2+y-z*w+2.2+y-z/w+2.2+y+z*w-2.2+y+z/w*2.2-y+z*w*2.2-y+z/w-2.2-y-z*w+2.2-y-z/w*2.2+y-z-w-2.2+y-z-w*2.2+y+z-w*2.2+y+z-w"
-"sin((((((a+sin(tan(cos((((tan(((((((sin(((sin(sin(((cos(((tan(tan(0.79))/e)+a))+3.81)+pi)))+a)*3.33))/1.89)/pi)*a)+a)/3.08)-a))/e)+0.34)*b)))))*a)+b)+3.70)+a))"
-"x+3.3+z/w+x+3.3+z*w+x+3.3-z/w-x+3.3-z*w+x+3.3*z/w*x+3.3*z*w-x+3.3/z+w+x+3.3/z/w+x+3.3/z*w-x-3.3+z/w*x-3.3+z*w*x-3.3-z/w-x-3.3-z*w+x-3.3*z/w+x-3.3*z*w-x-3.3/z/w"
-"x+y+4.4/w+x+y+4.4*w+x+y-4.4/w-x+y-4.4*w+x+y*4.4/w*x+y*4.4*w-x+y/4.4+w+x+y/4.4/w+x+y/4.4*w-x-y+4.4/w*x-y+4.4*w*x-y-4.4/w-x-y-4.4*w+x-y*4.4/w+x-y*4.4*w-x-y/4.4/w"
-"x+y+z/5.5+x+y+z*5.5+x+y-z/5.5-x+y-z*5.5+x+y*z/5.5*x+y*z*5.5-x+y/z+5.5+x+y/z/5.5+x+y/z*5.5-x-y+z/5.5*x-y+z*5.5*x-y-z/5.5-x-y-z*5.5+x-y*z/5.5+x-y*z*5.5-x-y/z/5.5"
-"x-3.3-z+w+x-3.3-z+w+x-3.3+z+w-x-3.3+z+w+x*3.3-z+w*x/3.3-z+w-x*3.3+z+w+x/3.3+z+w+x*3.3+z-w-x/3.3+z-w*x*3.3-z-w*x/3.3-z-w-x+3.3*z*w+x+3.3*z/w+x+3.3/z*w-x+3.3/z/w"
-"x-3.3/z*w*x+3.3*z-w-x-3.3*z-w+x*3.3*z-w*x/3.3*z-w-x+3.3/z-w*x-3.3/z-w*x*3.3/z-w-x/3.3/z-w+x*3.3+z*w+x*3.3-z*w-x*3.3+z/w+x*3.3-z/w*x/3.3+z/w-x/3.3-z/w+x/3.3-z*w"
-"x-y-4.4+w+x-y-4.4+w+x-y+4.4+w-x-y+4.4+w+x*y-4.4+w*x/y-4.4+w-x*y+4.4+w+x/y+4.4+w+x*y+4.4-w-x/y+4.4-w*x*y-4.4-w*x/y-4.4-w-x+y*4.4*w+x+y*4.4/w+x+y/4.4*w-x+y/4.4/w"
-"x-y-z+5.5+x-y-z+5.5+x-y+z+5.5-x-y+z+5.5+x*y-z+5.5*x/y-z+5.5-x*y+z+5.5+x/y+z+5.5+x*y+z-5.5-x/y+z-5.5*x*y-z-5.5*x/y-z-5.5-x+y*z*5.5+x+y*z/5.5+x+y/z*5.5-x+y/z/5.5"
-"x-y/4.4*w*x+y*4.4-w-x-y*4.4-w+x*y*4.4-w*x/y*4.4-w-x+y/4.4-w*x-y/4.4-w*x*y/4.4-w-x/y/4.4-w+x*y+4.4*w+x*y-4.4*w-x*y+4.4/w+x*y-4.4/w*x/y+4.4/w-x/y-4.4/w+x/y-4.4*w"
-"x-y/z*5.5*x+y*z-5.5-x-y*z-5.5+x*y*z-5.5*x/y*z-5.5-x+y/z-5.5*x-y/z-5.5*x*y/z-5.5-x/y/z-5.5+x*y+z*5.5+x*y-z*5.5-x*y+z/5.5+x*y-z/5.5*x/y+z/5.5-x/y-z/5.5+x/y-z*5.5"
-"x/3.3+z*w-x/3.3-z*w*x*3.3+z*w*x*3.3-z*w-x+3.3-z*w+x+3.3-z/w+x+3.3+z*w-x+3.3+z/w*x-3.3+z*w*x-3.3+z/w-x-3.3-z*w+x-3.3-z/w*x+3.3-z-w-x+3.3-z-w*x+3.3+z-w*x+3.3+z-w"
-"x/y+4.4*w-x/y-4.4*w*x*y+4.4*w*x*y-4.4*w-x+y-4.4*w+x+y-4.4/w+x+y+4.4*w-x+y+4.4/w*x-y+4.4*w*x-y+4.4/w-x-y-4.4*w+x-y-4.4/w*x+y-4.4-w-x+y-4.4-w*x+y+4.4-w*x+y+4.4-w"
-"x/y+z*5.5-x/y-z*5.5*x*y+z*5.5*x*y-z*5.5-x+y-z*5.5+x+y-z/5.5+x+y+z*5.5-x+y+z/5.5*x-y+z*5.5*x-y+z/5.5-x-y-z*5.5+x-y-z/5.5*x+y-z-5.5-x+y-z-5.5*x+y+z-5.5*x+y+z-5.5"
-"(sin(((sin((cos(((b-(((sin(tan(tan(((sin((tan(cos((e+(((tan((((tan(((3.51/b)+2.91))*1.47)/a)/a))+b)*e)/pi))))*2.44))+b)+pi))))-b)+a)*3.23))/0.97))+b))+e)*a))+e)"
-"sin(cos((((cos((((((((((sin((tan((cos(((((b-(((sin((cos((e*cos((a-pi))))+a))+e)+b)-1.65))+b)*1.55)/2.57))+b))+b))+pi)/b)/b)+a)+pi)-b)/b)-1.70)/0.40))+e)+pi)-e)))"
-"sin((((((((sin(((tan(tan(((((((((((((sin((((pi-(((a/b)/2.49)+e))+a)-e))/1.49)+e)+0.42)*pi)+3.68)-a)+b)+2.60)*a)/0.80)-a)+a)))+b)/0.59))*1.22)/a)+a)+e)*0.46)+a)/b))"
-"((((3.65-(cos(sin(((b+((((((((cos((((((pi/((tan((sin(((((1.15+(((b+a)+b)/b))+a)+a)+pi))-2.20))/1.83)+b))+a)+b)*pi)+e))*b)*b)+a)-3.53)+e)-a)-b)+a))*a)))+b))+e)*b)+b)"
-"tan(((tan((a+((((sin((cos(cos((((pi*(tan(cos((tan((cos(tan(sin(cos(((tan(cos(sin((((a/1.32)-a)-e))))+b)+e)))))*pi))/b)))+pi))-a)+b)))/2.99))-b)-e)*a)+e)))+3.95)+b))"
-"tan((b/tan((e+((((((b-(((e+((tan((sin(((cos((cos(((sin((cos((((a*a)*0.25)/e))+1.46))+b)*1.76))-3.16))-2.32)+0.23))*e))*a)/b))+e)+b))*3.77)/1.73)-pi)*3.02)-2.26)))))"
-"((((((tan(((pi+(((b+((((a+(sin(((pi-(sin(((((((sin(((tan(((e*((e+a)*3.95))+b))-a)*pi))-e)-pi)+pi)+pi)+b)*a))+b))-b))-e))*b)/1.51)*pi))+a)*a))*pi))+pi)*b)/a)/b)-b)*e)"
-"((((cos(tan(((a+(cos(((a+tan(sin((tan((cos((cos((sin((tan((a*tan(cos((tan(tan(tan((sin((1.72/a))*b))))+b)))))-3.86))+pi))/b))*a))*a))))-1.18))+2.23))+a)))*e)+b)-e)/e)"
-"(tan(tan((((cos((((((((sin((((((sin((cos(((b/sin(cos((((sin(((1.92/a)-b))+a)*pi)*b))))/b))-1.44))+0.28)-b)+e)+2.00)-pi))+b)+2.55)+b)+pi)+3.80)*a)-e))+b)-a)*3.22)))/b)"
-"tan(sin(sin(cos(((cos((((((tan((((e*((b+(cos((a-cos(sin(((pi-((tan((((((a+b)*a)*2.70)+0.72)/3.46))/e)+b))+b)))))+1.36))+a))/pi)-b))-b)+2.41)-e)*3.80)/e))/0.20)+b)))))"
-"(2.10+sin((sin(tan((cos((cos((((sin((pi-((cos(cos(cos(cos((((((((2.83*(tan(((a+e)+e))+b))*a)*b)-3.86)+2.02)-2.50)-2.13)))))+1.31)/2.33)))*a)/a)+b))+1.81))/2.56)))+a)))"
-"(sin((cos((((((((a+(e*sin((((tan(cos(cos(((a+(0.53+cos(((((tan(((3.12*(cos(cos(pi))-b))+e))+a)+b)/b)*b))))*3.87))))+b)+4.00)+0.40))))/pi)+e)-0.44)+pi)-a)+pi))+pi))+pi)"
-"sin(((((tan((((tan(sin(((tan(((((((((tan((cos((sin(((pi+(((e+(1.98-(2.62+a)))-b)+b))/b))*b))/a))-pi)/pi)+b)*a)*1.59)-0.23)/pi)/b))*b)/a)))+b)+a)*a))*e)*0.11)*b)+2.50))"
-"(b*((sin(tan((((sin((tan(cos(sin((tan((((cos((a-(sin((cos(tan(cos(sin(tan((tan((((((tan(b)/e)+b)-e)/b)-pi))+a))))))/e))/b)))*e)+b)*0.02))+a))))+a))/a)+a)+b)))/1.76)+a))"
-"cos((((b+((((((3.00-(a*(sin(((b-cos((cos((tan((((e-(0.34-((((1.52/((e+(a/tan((((b/a)*a)/e))))-e))/a)+a)+e)))-a)*b))*2.32))*3.61)))/0.01))+b)))*a)/3.11)/b)/pi)-b))/b)/e))"
-"((cos(((b*cos((((cos((cos((cos((((((((((((tan(((0.30*(((((0.70-pi)+e)+b)*e)-b))*pi))+a)/a)/a)+1.31)/b)+2.74)-pi)+a)-pi)/a)-3.93))*e))+0.33))/a)-pi)-1.15)))/1.12))-b)+1.37)"
-"(((cos(((((tan(sin(cos(((sin(((a-(((((cos(sin(cos(cos(((cos(((((2.48+((b*b)+e))+0.72)-b)/e))+b)*3.38)))))/a)/e)+0.61)+b)-b))/2.54))/pi)*0.89))))*3.32)+a)+pi)*a))-a)+pi)+pi)"
-"tan((cos(((tan((sin((tan((((((((sin(((cos(tan(cos((tan((3.17*(sin(((((e*((b*a)-a))*0.42)-a)+a))-pi)))/pi))))+3.86)*2.26))+b)+b)/e)+a)*2.61)+pi)+e))+a))-1.27))-b)+2.97))/b))"
-"(b*(sin((b/((cos((cos((((((sin(((cos(tan(sin((tan((((sin((3.78+(((((sin((tan(((pi-pi)+b))*b))-a)+pi)+pi)-e)+b)))-b)-a)-pi))/b))))+a)*b))+e)-e)/b)+3.43)/pi))+a))+a)-pi)))-b))"
-"(((pi+(tan((((cos((pi+(((sin((((((cos((cos((cos(((sin(sin(sin(cos((tan((tan((1.06+0.35))+3.92))*b)))))/a)+b))+e))/e))*a)-1.37)+0.33)/a)/e))*b)*a)+a)))-0.23)+pi)*b))+b))+a)+e)"
-"((cos(cos((cos((tan(((e+sin((sin(tan((0.32+((cos(((((((sin(((((tan(cos((((cos(((a-b)+pi))+1.56)+pi)*b)))-a)+b)/a)+2.26))*b)+b)-pi)/b)*pi)/b))/a)-e))))/b)))-a))+a))+pi)))-b)/a)"
-"(tan(sin(((((((((((cos(cos(((((0.23+((((((((((2.27-(cos((((e-b)*a)+e))*0.41))+b)+pi)*3.47)-a)+3.78)-a)+pi)/b)+pi))/b)/e)+pi)))-1.84)-a)+pi)/0.86)-0.35)*a)-b)+b)-e)-3.10)))*pi)"
-"(tan(((b+((3.41/(a+(sin(((sin((sin(cos((((((((((((((((sin((tan((sin(sin(pi))/b))/b))/b)*e)+b)-pi)-2.26)-a)+pi)*a)/0.92)/a)+pi)/b)+a)-pi)+a)))+2.56))-pi)*b))-a)))+2.11))/pi))+e)"
-"cos((sin((((((((((((pi-sin((((cos((((tan((pi*(tan((((cos((b+(((tan((pi/a))-a)+0.61)/b)))+pi)-b)-b))+b)))-e)/a)-1.31))+b)+e)/e)))-b)-a)+e)+2.73)*3.13)*b)-b)+b)-pi)*2.98))/3.63))"
-"(((a*((1.22-(b+((((cos((sin(tan((((tan(tan(((a/sin(cos(((((2.68+(((((tan(tan(b))+3.93)-pi)+e)/pi)/pi))+b)/e)-a))))+a)))+3.04)*0.85)+a)))*b))/1.70)-b)-0.20)-2.46)))-pi))+b)*0.41)"
-"((((((((b-cos(((cos(cos((((tan(((((((0.97/(0.56/(cos((cos(((((((((b*(pi-b))/e)+a)-e)/b)+a)-e)-2.93))+a))*b)))/b)/a)+a)/b)/3.64))-a)+a)+b)))/3.44)-a)))/b)+2.48)*a)/0.59)+a)/a)+pi)"
-"((((tan(sin((1.27*(cos(((((sin((((a+sin((((e*cos((tan((2.10-((((((cos(sin((((sin(a)+a)/b)+1.96)))/pi)*0.16)*a)+a)+b)+e)))*pi)))/a)+pi)))+a)/a))+e)+0.69)-e)/b))/e))))+pi)*b)+b)*b)"
-"(cos(((((((sin((cos((e*sin((((((cos((((cos(sin((((sin(cos(sin((tan((e/((b+3.61)*1.43)))*e))))*2.74)-0.86)+1.45)))+pi)+e)-a))-e)+b)-a)-e)*a))))-a))/b)/b)*0.49)+pi)/1.47)*b))*1.83)"
-"((((2.80/(((cos(((tan((cos(cos(((((((cos(((((b+tan(sin((((tan((a+(((((a+e)-b)+e)*b)-a)))+b)-2.38)+a))))+e)/pi)+a))*b)+e)*a)*1.97)+e)/e)))+0.63))/e)+1.23))/1.39)+a)+a))+0.88)+a)+a)"
-"((((a+(sin((a+(pi*(((cos(sin(sin((((cos(((((sin(cos(((3.79+(((sin((((b*((((b+a)+a)+e)+pi))+a)+b))*1.40)+3.98)/3.45))/0.68)))+a)/e)-b)-b))/a)-a)/e))))/pi)-b)+b))))*a))+a)/pi)+1.29)"
-"(((e+tan((e+(((((sin((((((sin(sin(tan((sin(((cos((tan(sin(tan((e/((b+(((0.59+3.04)+b)+b))-1.51)))))+pi))*a)-pi))/2.14))))+3.03)-a)+e)+3.51)*a))/3.55)/b)+0.59)+a)-a))))+1.99)/2.62)"
-"((0.20+((((((((2.84-(((sin(((cos(((cos(((((a+tan(((((((1.83-sin(((((a+b)-pi)-b)+pi)))/3.16)+a)/a)+a)/e)))/0.84)-a)+3.56))-b)+b))*b)+b))/0.49)+b)-b))/pi)+2.42)-a)+2.80)+a)-b)*b))*b)"
-"((2.63*((tan((cos((((((((((tan(((((((pi-(pi-(1.85+((b+((tan(((sin((3.09+(a*b)))+b)*a))/a)+a))*pi))))-b)/3.67)+e)*3.23)-2.21))-b)+b)-b)+b)+3.55)-e)/1.57)-1.99)*b))*0.01))+pi)/a))+b)"
-"sin((((b+sin(tan((cos((tan((((tan(((((cos((2.57-(3.77+(b/(a-(((a*(b*cos((sin((((b*sin((0.74-(b-(pi+b)))))*a)+b))-0.95))))-b)-a))))))*a)+e)-1.85)+pi))/b)*b)-e))+b))/pi))))+a)+1.26))"
-"(((((tan(cos(((cos(((((((sin(sin((sin((((((sin((((tan((((a/sin((1.09/pi)))+a)/b))-b)+0.94)*0.24))/pi)+b)-a)+0.94)*b))/0.82)))*a)+1.26)+a)*2.96)-b)/pi))+b)+a)))*pi)*a)*0.68)+a)-0.25)"
-"((((cos((b*(sin(tan((((((e+(3.01+(((((((sin((((((b+tan((sin(((cos(tan((b/pi)))/pi)/e))/a)))+b)+b)-0.40)/pi))*a)+b)+a)*1.18)/1.51)/a)/b)))+1.02)-b)+a)+a)))-a)))*pi)-2.01)+0.35)+3.46)"
-"sin((((b*(1.97+((tan(((tan(((cos(cos(((((e+(1.92/(b-(((a-(b-sin(tan(cos(((e/sin(((sin(cos(cos(((a/b)/3.17))))+a)/a)))+e))))))-a)+a))))*b)*3.19)*b)))*b)-b))/a)-a))+a)-a)))*pi)+0.95))"
-"(((((sin(((cos(cos((((cos((((2.51/tan((a+sin((((b+((2.80/((3.84+sin(sin((((sin((a/e))+a)*pi)-pi))))-b))/0.90))+2.50)/1.02)))))*b)-pi))*3.56)*pi)+b)))*b)+pi))+e)+3.96)+1.29)-pi)+3.05)"
-"((cos(((tan((((((3.95+(((3.49+((tan(((tan((((((0.95+((((b/(e+tan(sin(cos((((b+0.48)*0.95)+2.21))))))+b)+a)/pi))*a)+pi)-a)*0.86))/b)+a))/b)-a))-1.30)+e))+a)/3.34)+a)-a))+a)/a))-pi)/e)"
-"((pi/(b/((((1.40/((((sin((((((2.13-((((((e*(cos(((((cos((((a/((a*a)+pi))*b)+a))+e)+e)+2.33)-e))+e))+b)-3.99)+1.63)/b)*b))-1.42)/a)/1.09)+2.38))-0.97)/a)-2.93)-1.50))*2.88)/b)/b)))+b)"
-"tan(((((3.17-(3.66+((b-(((sin(sin((((b/cos((a/((0.58*(e*(((sin((b+sin(sin(sin(cos(tan(((sin((e-0.53))+3.14)/b))))))))+3.99)+0.63)+b)))*a))))-1.72)/b)))+e)-a)*0.87))+b)))-3.79)+a)*b))"
-"(pi+tan((((((cos((((3.06*cos((((a+((((tan((3.99-((((sin((b-(((sin(((b/((1.61*(b+a))+3.74))*pi))+a)+1.64)+0.56)))*b)-1.49)+2.41)+e)))*a)-b)/b)/a))/a)/b)))+a)*pi))/pi)-a)+a)+pi)-0.49)))"
-"((((sin(tan((((cos((((a/(((b+cos((sin((a-tan((e/(((((cos(sin(((sin((a+tan((sin((e/(pi*a)))+pi))))/a)+2.25)))/b)*1.71)/b)+b)*0.01)))))+e)))/a)-e))+pi)*a))*b)-0.64)-1.26)))-e)*0.84)+a)*b)"
-"((b+(1.73*(a+(tan((((((cos((((sin((tan(tan(((3.19*sin((tan((((a-((tan((sin(sin((a+((cos(pi)+a)+a))))-a))+a)*1.83))-b)/pi))/2.37)))/a)))/pi))+e)/2.14)*b))/b)*3.91)+2.43)/pi)-a))/a))))*b)"
-"cos(sin((1.01/sin(((((sin((cos(((tan((cos((tan(tan(((a-(tan(cos((tan((((((a+(((sin((1.62-0.90))+pi)+b)+b))-b)/a)-1.22)+a))*1.82)))-e))/pi)))/e))+3.31))+b)*a))+a))*a)+pi)+3.26)/3.57)))))"
-"(((((1.79*sin(((tan(sin((((((b+(tan(((cos(((((b/sin((cos(((tan((cos(((tan(e)+1.15)/a))/a))*2.93)+1.84))+a)))/0.44)+3.75)-2.12))+1.75)+b))/1.82))+a)-pi)*pi)+2.23)))+a)*b)))/b)/a)+1.06)+a)"
-"(((pi-((((sin(((((cos((sin((sin((cos(((((((((a+((b/(((e/(((cos((sin(((b+a)/2.85))/b))-b)*a)/a))*a)/e))+a))*b)*a)+e)*b)-b)+a)*e))/1.56))+1.28))+b))/1.79)+0.57)*a)+pi))-3.98)+a)*e)*b))-e)+a)"
-"((((cos(sin(sin(((cos((tan(cos(tan(cos(cos(cos((cos(((tan(((b-((2.78+((((((b*((((cos(((((b/e)-b)+b)*e))+a)/e)-a)-b))-a)+b)/b)+pi)-a))/b))+pi))+e)+pi))*a)))))))-2.47))/pi)+pi))))-e)+a)-a)+b)"
-"(((b+tan(((tan((cos(((cos(cos((((((((cos(sin((tan((a+(((((((((b*cos(((0.90*b)*3.43)))/a)-a)+pi)*b)-3.40)+b)+a)+0.35)))/a)))-0.75)+b)/b)-1.67)+pi)/b)+1.74)))*1.74)+pi))+pi))*1.90)/e)))/e)-a)"
-"(((((cos((((a*((a-((((((sin(((tan((((((cos((sin(((tan(((1.02*((tan(cos(e))*3.41)*b))+3.95))*2.52)-0.11))+b))+pi)/e)-0.07)/a)+a))/a)*b))*b)/a)/a)/a)+2.39)+a))+b))*a)+b))*0.54)+1.05)/a)+b)+pi)"
-"((cos((sin(((((pi*((b+(sin((b/(pi+((a-(pi+sin(sin(sin(sin(((cos((sin(((sin(((sin((b-(cos(sin(((3.25*2.01)/a)))*pi)))+a)-b))-pi)+a))+a))-a)+a)))))))*1.43))))/e))*3.89))+a)+e)-a))+a))+b)+0.97)"
-"sin(((e+(tan(((((tan(cos((b-((b-(sin(((tan((tan((pi/((a/(cos((a+cos((((sin(sin(((((((a+1.20)/b)*2.62)+0.84)*3.15)/e)))+3.69)+a)+b))))*a))+a)))-b))+a)-2.95))*a))*b))))+a)/b)+b)+a))/b))+3.45))"
-"(2.74+((((((sin((((((cos((((((((tan(sin((tan(cos((tan((((sin((1.67+sin((cos(tan(tan(e)))/1.44))))+b)-2.91)+b))-a)))+a)))-e)+0.82)+a)+a)/b)*b)-b))-a)-e)+b)+0.32)+pi))+a)/e)/1.08)/pi)/2.99)+b))"
-"(cos((((((a/sin((tan(((sin((((sin((cos(((((e+((tan(cos(((cos(cos(((cos((((((a+(a*b))+pi)-b)/3.53)+b))+2.27)+a)))-b)/b)))+a)*2.54))+a)/a)+e))/0.68))+0.05)+b)-a))/e)+b))-a)))-b)*a)+b)+a))+2.46)"
-"cos((sin(((e-cos(((tan((((((a*(((((((((cos(((((b/(((((cos((tan((e*((tan(e)+b)*b)))*a))*e)+pi)-e)/a)*a))-1.40)*b)*2.92))/0.17)+a)+0.24)/a)*b)+e)+b)*1.73)/b))+a)/b)+2.19)-a))+a)+b)))+1.01))+a))"
-"(((0.57-(((((a*((sin(cos((a+cos((((((sin(((sin(((((b/(b+((((((((((3.81-e)/0.34)+e)*0.45)+e)/a)-pi)*a)-e)+2.79)))+1.17)*e)/e))-b)-b))+e)/e)+a)+b)+a)))))/2.86)+0.55))+e)/0.22)+b)-e))/2.11)*2.18)"
-"cos((((b+((e*(sin(((b*tan((pi+((((((((((((((((sin((((((a+(((((sin((b-0.10))/a)*a)+e)/a)-0.04))*e)*a)*b)+pi))+a)+a)-pi)/1.03)+pi)+3.89)/e)+e)+a)+e)*e)*a)/pi)-2.85)+pi)+b))))/b))*e))*b))/b)-pi))"
-"tan((((((((tan(cos((b/sin((((((cos(((sin(tan(cos(sin(tan((e/((cos(cos(tan(cos((e+tan((e+sin((tan(((pi/b)*e))-b)))))))))+pi)+1.13)))))))/a)*b))/a)/a)/0.04)+a)/b)))))+b)+e)+2.20)+a)/0.30)*b)-pi))"
-"(((tan((2.10+(1.40/(e+(a/(((((((tan((tan((((tan((((sin(((tan((2.57/(((cos(((((1.78+a)+a)+b)/0.73))+b)+a)-b)))+a)+1.24))-0.68)*pi)/e))+0.01)-b)*a))/e))+3.27)+b)+3.39)*b)+2.35)+b)+b))))))/a)+pi)/a)"
-"((tan((0.70*(0.09*(0.08*(((tan((tan(((((cos(tan(((a-sin(cos((((((sin((((a-cos(cos((sin(tan(cos(((3.22-pi)/a))))-a))))-a)/b))/a)*pi)/a)*2.82)*a))))+pi)))*e)-b)*a)+2.63))+0.67))+b)+b)+e)))))*pi)-b)"
-"cos((((tan(((a/(b-sin((e/((((tan(((((sin(cos((((a*((sin(tan((tan((((((2.14-(((((a*tan(e))-pi)-pi)*3.70)-b))-a)*2.91)*a)/a))+a)))+a)+3.54))+3.88)/a)))-pi)-b)-b)+a))-b)/a)-pi)+pi)))))*a))-b)*e)/e))"
-"((((((0.51+(((((e+(sin(tan(((1.66/(((((a/(a-((((cos(((cos(((((((cos(sin(1.02))+pi)-1.76)+e)-b)+b)/e))+a)*b))*a)/3.14)*a)-b)))-3.60)+1.66)/a)+a))+a)))+pi))*pi)*b)*3.58)*b))+2.20)-pi)*2.79)*e)+1.40)"
-"((((3.40+(tan(cos((((tan((cos((sin(sin((b/sin((a-((((0.03+(tan(tan((a+(((((((tan(((((e*pi)/pi)/b)*e))-b)-2.62)-pi)*pi)+3.67)*b)*0.63))))+a))+a)+0.05)+a))))))*a))/pi))+b)*e)+a)))-2.26))+b)-1.34)+a)"
-"((tan(cos(((3.82+(sin((cos(((1.49/(sin((((((tan(((sin(((((tan((tan(sin(((((((cos(a)+1.23)+b)/pi)-pi)+a)+b)))*b))+b)*pi)+a)/1.02))-1.75)/e))+pi)*e)/b)/pi)-a))-3.28))+b))+3.45))+0.78))/a)))/2.19)+e)"
-"(a*((a/((a+cos((((((((((pi/(a-(((((b-(a*sin((b-tan(((pi+((((((pi/cos(cos((tan(tan((tan(tan(3.30))*2.76)))-b))))*2.98)/b)-b)+pi)+e))+pi))))))+a)+3.08)+e)-b)))-a)*0.18)/a)-pi)+pi)+b)*b)+a)))-e))-b))"
-"cos(cos((((((sin(((((3.94+((sin(((tan(tan(((sin((((tan((((sin(((cos(((((1.89/(3.75+a))*b)/pi)/a))+a)/e))+e)+0.44)-b))+b)-e)*b))*b)/1.32)))*3.89)+3.65))+pi)+b))*b)*3.89)*3.18))+1.43)-e)-a)*pi)+b)))"
-"sin(((e+(((sin((b+cos((((((pi/(sin((b/cos((sin((1.19/(2.01*(e*((0.92-(1.01-(tan((((((((((((3.39+a)-b)/a)/2.82)-e)-pi)+2.47)+a)+pi)-a)*b))-pi)))/a)))))*a))))+3.01))*a)*pi)+b)+b))))-e)+pi)-e))/3.27))"
-"((tan(((tan((cos((tan((((1.17-(cos(cos(sin(sin(((a+(((sin(sin(((((((0.28+(((((((((a/b)+b)*0.82)*3.26)+pi)-e)+a)-pi)+pi))-b)*a)*a)/a)+b)))+1.49)+a)-3.54))*a)))))*a))+b)-b))/a))-e))-b)-e))+3.37)+3.99)"
-"((((tan(((1.17*cos(((2.48+(((((((b+((b/((sin((cos(((1.40-sin(cos(cos((sin(tan(tan((((sin(((3.54-b)+a))+b)-0.79)*3.78))))-3.22)))))+b))-1.54))-e)-0.34))*a))+a)+a)/b)+pi)+e)-a))/3.66)))*e))/b)+b)-b)/a)"
-"(((cos(cos((((b*(((pi-tan((0.14-((cos(sin((sin((cos(((0.95/((tan((e+(((cos((cos(((2.51*tan(((a-cos(cos(b)))-0.49)))*a))+a))*b)+b)*b)))-a)/a))*a))+0.26))-pi)))-pi)+1.19))))+pi)-2.53))+b)/b)))+b)+a)*a)"
-"tan((cos((((tan(((e*(a-(((b/(((((cos((sin(cos((b+((2.54-((0.21*(cos(((cos(cos(sin(cos((((cos((a+b))*a)/b)-b)))))+b)/pi))-pi))+0.56))/a))))-a))/pi)+b)-2.31)/pi)-pi))+a)*pi)))+0.64))+2.78)-b)+a))+2.36))"
-"(cos(((b/((0.85*((tan(((((((tan(((((((((2.36/sin(sin((cos(((cos((a*((sin((((b+(b/(b/(1.37-pi))))*a)+a))/a)/0.45)))+pi)/pi))/b))))-b)+e)/2.54)+a)*b)/0.79)/b))+b)*b)+e)/e)+b)+b))+b)+e))+pi))+2.27))*1.70)"
-"(sin(((b-(sin(((b+cos((((cos(tan((((sin(sin(sin((((cos(((b*((tan(((((b/((((a*((pi*((b*b)/b))+b))-e)+b)+a))+e)+1.51)-b))-pi)+a))*a))+2.54)-2.36)-0.90))))*e)+b)/b)))/b)*3.23)+3.84)))+b))+2.12))+3.99))+a)"
-"sin(cos(((0.50-((((((b/tan((((((((e*(cos((sin((e+(cos((a-((e*((cos(((((((b-tan(((((pi*e)+e)-2.87)*b)))+a)*b)+e)*e)-1.39))*e)*a))+b)))*3.16)))*1.01))*a))+0.95)+b)/a)/e)*pi)*b)))/2.81)-b)+b)-e)+a))/pi)))"
-"(2.71/((sin((cos((tan(((a+(b-(((((b+(e-(sin(tan((sin((b-cos((2.58+(cos((((((2.57/(tan(((((1.54*(b+a))+b)-a)+b))/2.58))/2.19)/1.05)+pi)+0.23))+b)))))+b)))/b)))-a)+pi)-e)-a)))+2.34))*b))+pi))*2.87)+2.07))"
-"(a*(a/cos(sin((((a+sin((sin((((b/cos(cos(((2.08+(((sin(((((((((cos((((tan(((((pi+(((tan(e)-b)+pi)/pi))-a)*e)/e))-2.17)-2.66)-0.97))/a)/pi)+pi)*a)+b)+a)-a)/a))*b)/b)+a))/2.19))))-b)+1.49))+b)))+a)/b)))))"
-"(sin(((sin((1.99-cos(sin((pi*(1.22/((0.12-((1.04/cos(tan(((2.62*((((a+(cos(((cos((pi/(((cos(((sin((sin(cos((e/b)))+b))*b)+b))*a)/a)*b)))/pi)/e))*0.23))+b)*3.78)*a))+2.48))))+2.93))-a)))))))+a)+b))+2.74)"
-"(((((sin((tan((tan((pi+sin(((((tan(tan(((2.69-(cos(tan(sin((((((sin((((((((((((((pi*e)/a)+a)*pi)+a)+a)+a)/e)+e)*e)/0.98)/pi)/2.21))-b)+b)/a)/b)-b))))/pi))+pi)))-e)-b)+0.48)-pi))))*b))-a))+pi)+b)+b)-b)+a)"
-"(sin((cos(((tan((1.16+((((cos(cos((cos(sin(tan(tan(((tan(((((tan((((((((((sin(sin(((2.05/0.46)-0.96)))+a)-0.96)-b)+0.65)+pi)+b)/b)/b)+e))*e)+1.68)-e)/a))/b)-0.64)))))+b)))-a)-a)*a)-a)))-e)-3.82))/a))+pi)"
-"sin(tan(((((((sin(((pi*((sin(sin((cos((sin((((tan(((((((((((0.43-cos(cos(((e+((e+((((a+b)*1.12)/e)+b))+b))+1.07))))*b)+pi)/b)+a)*e)/b)/b)-pi)/3.44))+a)*b)+2.37))+b))+e)))*a)/b))+a))-pi)+b)-pi)+e)*a)*a)))"
-"((((sin(cos(((cos(tan((b/((tan(tan(((a*(sin(((((b+(sin(tan((sin((((cos(tan((sin((sin(sin(tan((2.02*e))))*2.47))-b)))/b)*a)+b))+1.71)))+a))+pi)+pi)/b))+2.53))*b)))+pi)+1.05))))+a)+1.76)))+3.09)-e)+e)-2.51)"
-"(((sin(((((tan((cos((((tan(((cos(((2.51+cos((b+(cos((e/sin((b/((((sin((((((cos(((((cos((pi-3.64))+b)*e)/b)/e))*b)+e)*a)/b)+pi))*a)*b)+a)*pi)))))-a))))+a))*b)+pi))/b)*pi)+pi))/b))-a)+a)*a)+2.89))-pi)/e)/e)"
-"(((tan(((sin(((sin((((((b-((((3.62*((b-((tan(tan((((sin(((((sin((b+sin((tan((((b*sin(a))/2.89)+a))/1.29))))*b)*e)/a)/a))*a)+3.61)/1.83)))/a)+a))+b))+e)+b)+b))*a)-pi)+a)-b))-3.94)+3.21))+a)*b))+3.73)+b)-b)"
-"((b/((((((0.13/((cos((b/(((((sin(tan(cos((tan((a+((((sin(cos((((b+sin((tan(((((b/((pi/tan(cos(a)))/b))*e)+e)-b))+e)))*1.79)+e)))*b)+pi)*b)/a)))-b))))/b)+b)-pi)*pi)*a)))/1.19)*a))-3.43)*1.97)/pi)/e)*b))-a)"
-"(((sin((cos((sin(((cos((((cos((((((tan(((a-(cos(cos((sin((((e+((a+(sin((tan((((((e-(((e+b)+b)/b))+a)+a)-e)+a))+a))+b))+b))/2.15)/a))+a)))-b))+pi))*b)-0.61)+1.39)+b)+a))+a)+a)*b))/a)*a))*3.46))-e))/b)-b)+a)"
-"(sin((((0.91-cos((tan((((((a-(pi-(tan(sin(((sin((sin(((((((a/(0.70+(3.86-(tan(((b-(2.22*(tan(sin(sin(a)))/0.43)))+a))+e))))+1.76)/1.57)*0.68)+2.12)+e))/a))+b)/b)))+0.73)))+e)/e)+b)*b))*1.22)))*2.01)+b))+a)"
-"sin(((sin((b+cos((((b/tan(sin(sin(((2.61-(tan(cos(cos((a*((((e/((b-((b+((((a*cos((cos(sin((pi/sin(((sin(((((b*b)+b)*a)-2.28))/a)*pi)))))+b)))/a)+b)+a))+0.66))-a))+b)-a)+a)))))-a))+e)))))/3.16)/pi))))/a)*b))"
-"cos((((b+((pi/(cos((0.96/(cos((((((((((pi-(((((tan(((a*((((tan(((((((tan(((b-pi)/pi))+1.97)+a)*b)-b)*a)+pi))-0.29)*a)+3.18)+2.57))/0.28))+pi)/e)+2.22)+a)*b))/b)-b)*pi)*pi)/e)/b)-e)/a))*a)))-0.59))*b))*pi)+b))"
-"(cos((cos(((((tan(tan(((((cos(((sin(cos(((((tan(tan(sin(tan((sin((((sin((((cos((((b+(e+cos(1.14)))+a)*a))+b)+a)*1.93))/3.01)/a)+b))+3.90)))))/pi)-a)-pi)-b)))/e)/pi))+a)/b)+a)+0.96)))+2.84)-pi)-a)-0.52))-a))-b)"
-"((((((((((((((((tan((cos(cos((tan((b+sin(tan(((((cos(((((tan((cos(((((1.29/b)*3.26)+b)/a))/a))-a)+3.76)*pi)*3.00))+b)*0.32)*pi)/pi)))))-a)))+0.33))/pi)/a)/e)+b)+pi)+b)+1.74)-a)-0.86)*b)/b)*b)+pi)/a)+3.45)+3.37)"
-"(sin((cos((((((3.76+((((((cos(((((a+((((cos((((((tan(((((e*((((b+((tan(((e+a)-a))*pi)*1.08))*3.94)/b)-1.33))+pi)*pi)/a))*2.90)+b)/e)-2.68)+b))*a)*b)*b)+a))+b)+pi)+b))+a)+pi)-a)/a)+e)+a))*b)+b)-1.29)-e))*a))+pi)"
-"(((3.47-(((e/(cos((((cos(((b/((a/(a*sin(sin((sin((sin(((((((tan(sin(((tan((tan(((cos(cos(cos(sin(b))))-a)-a))+3.05))*a)+a)))/e)+b)-2.98)/b)*0.94)+b))/b))-e)))))-e))/b))/b)+2.93)*0.04))*pi))+1.10)/1.30))*b)-1.19)"
-"((pi*sin((pi+(sin(((cos((sin(((cos((((((((sin(((((((cos(sin(sin(tan((cos((b/((b+(b*((cos(((a+b)/a))/a)*1.35)))-a)))/b)))))/b)/b)-b)-b)+a)-1.27))/b)/3.78)-b)/0.32)/b)/a)+b))-b)-0.24))-b))*0.32)+2.23))*3.64))))/b)"
-"(((b+(tan(((cos((((((((((e*(((tan((cos(((sin(((((((cos((tan((((tan((((cos(pi)-pi)+2.65)+3.87))+3.01)/2.57)*a))/a))+a)+b)*1.52)/a)/e)-b))-e)*a))+e))/b)-e)-b))/0.08)*1.98)/pi)+2.88)*b)+b)*b)-a))*a)/0.58))*b))+e)+b)"
-"(((sin((((((((tan(cos(tan((a+(cos((((b*(1.00-((((((((0.71+tan((a+(2.72-tan(sin((((b+(sin(((b+b)*a))+3.87))-2.62)*pi)))))))-0.93)-a)-b)+2.18)/e)*2.12)/pi)))/b)+a))+b)))))+3.28)*pi)+a)+pi)*e)/0.23)/0.13))+e)+pi)*a)"
-"((b+((1.43*((e*cos(sin((e+(a+((((3.19/sin(cos(sin((pi-(((((cos((tan(sin(tan((cos(((1.51+cos((((tan((a+cos(sin(tan(((e+a)/e))))))-b)*2.29)/b)))*b))/a))))+pi))+a)+3.60)*pi)*a)*e))))))+1.06)*a)/e))))))+a))-2.52))*b)"
-"((sin((3.73+(((tan(sin((1.00/tan((tan((((((((((((cos(((pi+(((((((((cos((cos(((pi+(b-0.01))/pi))-a))/3.09)+b)+b)-0.30)+b)-a)+3.48)/3.91)-b))*pi))/a)+b)*pi)+0.18)+a)+e)/b)/a)/1.55)-1.96)+b))+a)))))+b)+a)+a)))/b)*a)"
-"(2.54*((((tan((sin((((cos((b/((3.95-cos((tan((cos(((3.58*(1.71+((tan(((cos((tan((((2.28*cos((b*(sin(sin((((1.04+e)+e)*a)))+b))))*b)+b))*pi))+0.27)-a))-1.42)+2.36)))/b))-b))-b)))/a)))-a)*b)-b))+3.68))-a)*b)-e)/a))"
-"(a/((cos((((1.77-((b-((((((1.57/(((((((cos(sin((((pi/((3.22*sin((sin(((sin((sin(((((b*cos((b+a)))+a)*b)*b))-b))+b)*a))+e)))+b))+0.61)+pi)))*b)+a)-e)+1.77)/pi)+pi)+e))/0.97)+a)*0.86)+pi)/pi))+a))*pi)+b))+e)+0.55))"
-"sin((sin(sin((tan((1.75/((cos((((((tan(sin(((((((sin((sin((((((cos((((pi+(((tan(((b+tan(b))-0.19))*0.13)+a)+2.51))*a)/1.20))/pi)-pi)*b)*1.43)/a))+b))+a)-b)-pi)+a)/b)*2.63)))/e)/b)+3.47)+e)-a))-pi)*b)))*a)))+3.38))"
-"tan(((b-(sin(((pi+(e/(((3.02+((cos(sin((((tan((cos(sin(cos(((cos((a+((sin((((((tan(sin((0.38+(cos(sin(2.21))+1.11))))/0.14)+a)/pi)-b)*pi))+b)*pi)))+pi)/e))))+1.62))+pi)+a)*3.74)))*pi)*b))/a)/b)))+b))*1.87))-0.30))"
-"(2.18-((((b/((cos((b/cos((sin((b*((1.53*((b-(2.44+sin(((2.96*(((((pi*(((pi+cos(((((pi*(e*((((tan((b+((1.28+a)-b)))+2.84)*b)+pi)+0.12)))*a)-a)*a)))+e)*b))-pi)-b)*e)+1.62))/0.32))))+b))+1.48)))+a))))+a)-b))-b)+a)/b))"
-"((tan(((cos((sin(tan(((2.56/cos((((((tan((((((2.31+(sin(cos((((((pi+(b+cos(((a/(2.47*((e/tan((((2.11*cos((a+b)))/a)*e)))*pi)))-1.91))))+e)*b)+e)+b)))*a))+a)*3.78)-a)-pi))+pi)+pi)+a)+e)/0.71)))+a)))*b))*a)*a))/pi)*e)"
-"(e+cos((((((sin(((((((((3.02/(tan((2.42+((tan((((((((tan((sin((0.88-(b/((tan((tan(cos(((a/cos((e+b)))*b)))/pi))/b)+a))))*3.44))+b)/3.88)-pi)*a)+b)/pi)-1.28))/b)+a)))*a))*a)/pi)/1.57)+e)/pi)+pi)+pi))+a)/b)/a)+a)+1.50)))"
-"((((b-tan((sin(((sin(tan(tan((pi+((((sin(((((pi+tan(sin((tan(((b+((sin((cos(((a/((tan((cos(((sin(((a-b)/a))/a)-b))+0.47))-2.02)+e))+2.25))*e))/2.40)/pi))/b))-b))))-b)/a)-pi))/pi)/3.74)+pi)+a)))))*b)/b))+1.72)))+b)+b)+b)"
-"(cos(((0.68+(b*sin((tan(tan((2.36*((a/(sin((tan((((b*((((tan(((sin((((cos(((tan((((e*(pi+((a+(a/((((1.33*sin(a))+e)+b)+a)))*pi)))-e)*2.25))+b)+3.59))+b)*a)/a))-pi)+b))*b)*a)/a)-a))/2.34)*e))-pi))-a))-e))))+a))))-e))+pi)"
-"(((((cos((sin((((cos((cos(sin((e-(e*(((cos(((((((1.67*(cos(((a*(((tan(((((a*(sin((cos((a-(((0.51+a)/a)*a)))+2.73))+pi))+a)/e)+a))/e)/a)-a))*b))*2.94))+a)/b)-e)+b)+e))/a)+0.98)*pi)))))/b))-pi)-b)*1.03))/e))-a)+a)+a)+a)+b)"
-"((cos((pi-((3.01/(a-((((((((a+(b+tan((a-sin(tan(cos((cos(tan((cos(sin(((((((((((((sin(((3.31/(pi/(3.01*0.89)))+2.78))*e)*b)+e)+3.60)/b)+e)*b)+a)+a)+2.01)*b)*b)))/0.63)))+e))))))))-b)/1.46)/pi)+2.68)+a)+b)-b)))/b)))+a)*a)"
-"cos(tan(((pi-cos(((((tan((((a*tan((e+tan((sin((((0.73*((tan(sin((((((((b+(((((tan(((((sin(((tan(((a+b)+b))*e)-a))+a)/e)/e)+e))*b)/b)-pi)*e)/a))*2.03)+b)+e)/a)-e)-b)))/b)*e))*pi)/2.03))*e)))))*b)*b))+b)-0.19)/b)+b)))-a)))"
-"sin(tan(((a+tan((pi+tan(tan(cos((((tan(((tan(((2.99-(cos((a+((((((cos(((((cos(((sin(tan((a+(b+(a+(sin(cos((pi-(a+2.91))))/b))))))/b)+a))+e)/a)+0.73)*a))+pi)+3.40)+2.95)*pi)/b)-pi)))*a))/a))+a)+b))+pi)+2.81)/a)))))))-e)))"
-"cos(((sin((2.38+(cos((b+(tan(tan(cos((sin(sin(cos((3.28*(((cos((3.60*sin(((sin(((((((tan(((((((tan((cos(((a-a)/1.03))-pi))/pi)+0.67)*b)-e)*e)-0.71))/b)/b)-e)+e)/b)-a))*a)+1.36))))+e)*a)/1.81)))))+pi))))-e)))+b)))-b)*0.47))"
-"((e*((((2.17-(1.53-((((((((((((((2.86+((((b-(pi+(e+((((((((b/(cos(sin((((((((((b-b)+a)*e)-a)+b)/a)+a)*a)/e)))+a))*pi)/a)/pi)*a)*0.81)+1.42)+pi))))+b)+b)+b))/e)+e)-3.58)/pi)-b)/a)+1.91)*b)-e)-b)+a)*1.19)/a)))+a)-2.06)+e))*e)"
-"(((cos(((((sin(tan((((((tan(cos(((cos((cos(((tan(sin((tan((((((cos(((sin((((((tan((pi/a))+0.25)/b)/2.16)*a)+a))/a)/2.54))+b)+b)/a)+3.61)*a))*e)))+a)+3.97))*b))/b)+2.46)))/a)+b)-a)*a)/3.46)))+1.50)*2.67)*b)*0.61))*a)/a)*1.43)"
-"((sin((pi/((((((((sin(((a-cos((sin((tan(((sin(((cos(((((((cos(sin((((cos(sin(((tan(sin((tan((a/e))*b)))-e)+1.93)))+pi)/b)-a)))/b)-pi)/b)-a)-a)-pi))+b)-a))+e)+a))+1.36))*b)))+3.28))-2.14)+b)-2.89)/a)+e)/a)-0.96)-a)))/2.12)+a)"
-"(((cos(((cos((a/(((cos((((e+(cos(((3.92-(sin(((tan((sin(((((((b/(cos(((a*sin((((pi+((((cos(sin(b))-3.44)+a)-2.29)-a))/e)/b)))+a))+1.02))+3.38)-e)/a)+b)/pi))*a))-e)-pi))+b))+a))+e))-3.24)*a))/e)-a)+1.16)))*a)-2.32))/1.66)+a)+e)"
-"(cos(((sin(sin(((tan(sin(((((e-(((2.03-(cos((tan(((tan((tan((((cos((cos(sin((cos(((sin(((sin(((b-a)/0.05))-b)-b))-3.06)*a))/a)))+a))+2.42)-a)/2.88))/2.21))-b)*b))*3.23))+0.91))*0.68)+e))+a)*3.57)-pi)))+0.78)+a)))/1.55)/pi))*a)"
-"((((((b*(e-((((((((((((a+(((((cos((((((((((e-((tan(sin(((sin(((((((1.63-a)*0.64)-b)*1.09)*e)+b))+3.06)+e)))*b)+b))+pi)/e)/pi)+a)+pi)+b)-b)+pi))/e)+a)+b)-e)/a))/0.23)/a)/pi)/b)+pi)+b)+0.20)+b)+1.52)-a)*pi)))/b)+1.62)/b)-a)-0.12)"
-"(cos(sin(sin(sin(((((e+((cos(cos((((((cos(((cos(cos(((b+tan(cos(((((((tan(cos((b-sin(((pi+sin((((((a/(tan((b-pi))/a))*b)+1.88)-1.57)+2.70)))+e)))))/b)+a)*e)/a)*1.09)-b))))+e)))-b)+e))*b)+a)+b)+pi)+b)))-e)+0.64))+e)/b)-pi)))))-b)"
-"((((b-(cos(((cos(((cos(cos(sin(((a+(sin((b-tan((sin((((((0.09+cos((((b+((sin((((sin((2.69/cos(cos(sin((e*(((tan(tan(b))/pi)+b)/pi)))))))-b)*pi)*1.34))/b)/3.38))-e)*b)))+b)/b)+a)+pi))-a))))*b))*pi))))+a)*b))*e)+2.16))+a))+b)+e)*e)"
-"(((((pi/(a/((2.53+(1.11-(((a+(pi*((tan((((((pi+(tan((((((((b-(a+tan(sin(((pi-(a-((((b+tan(((((a-e)-e)*b)*a)))*2.79)*a)+3.38)))*2.67)))))+e)+1.96)+1.73)+a)*a)*a))/pi))+0.76)+e)+2.11)+b))*a)*0.27)))*b)*2.31)))*e)))/a)+2.82)+0.10)*b)"
-"tan(((((((b+cos(((b*cos(((cos(((tan(((sin((a+(((((((((e/sin((tan((2.93*(cos(((tan(tan(((b+sin((pi*((1.11/a)+e))))-3.08)))-b)-3.45))+a)))+2.37)))-b)+1.26)+b)/b)*a)-a)/2.02)+e)))/e)+pi))*b)/pi))/a)*e)))+0.77)))+pi)*pi)+pi)+b)+2.45))"
-"((((((b+((cos((((sin((((sin((e*(a+(pi-((((((sin(sin((tan(cos((e+(2.41-tan((1.26/(((sin((((sin(((pi/pi)/a))+pi)+a)+a))/a)+pi)+3.72)))))))-e)))/1.89)/3.01)-a)+2.67)+a)-a)))))+b)+b)*a))*b)+2.33)/pi))-3.93)-0.90))*3.86)+a)/a)*1.05)*pi)"
-"(((((b-(cos((((pi+tan((sin(tan(sin(((a*(((e*((cos(tan(cos(((((((cos(sin(((((tan(((((a+((0.04-(3.76+b))-1.97))*b)+e)-b))+b)-3.97)+b)+pi)))-1.69)+0.20)-b)+3.36)*a)/b))))*b)+a))+b)+pi))/b))))*2.41)))/0.49)+e))+0.81))+a)/a)*3.64)/2.12)"
-"(((((cos((pi-(cos((1.61*(sin(sin(((a/(((((((((a/tan(((b+((sin(((a+(((1.04+(sin(tan(((cos(cos(((b-b)-pi)))+0.51)-b)))/pi))*1.36)+0.85))-a))-1.64)+a))/b)))-1.78)+pi)/1.05)*b)+a)*pi)-e)-3.76))+e)))+2.82)))/0.94)))/e)*1.11)+b)/a)*2.19)"
-"(((a+((2.44/(((a+((((tan((((tan(((1.54+(sin((b-(sin(sin(cos(((tan(((sin(sin((b+sin((1.88+(((tan((b+(((tan(b)+0.06)*b)/0.27)))+pi)+e)+pi))))))+1.93)+a))-1.31)*b))))+a)))*a))+b))-3.30)*3.23)+b))-a)*2.75)*b)+a))-a)+0.56))+b))+1.64)-b)"
-"((sin((sin((tan(cos((cos(((((((((e*(a+(0.62*(tan((sin((((((((a+tan(((((((((((e-(sin(tan((b/a)))-a))*b)+pi)-a)/3.19)/a)-a)-1.54)-b)+0.34)))/0.74)-b)*a)*b)*e)*3.64))/1.81))/3.78))))/e)*a)-a)-2.38)-e)+a)+e))/pi)))-e))/3.92))+0.77)*pi)"
-"(a+((((1.14+cos(((cos(((sin((((((tan(((b+(((a+(tan((((cos(((2.61*((((((((((((a+tan((((((a-a)+b)+b)*pi)/a)))*e)+b)/b)-3.55)-a)+b)/b)+a)*e)+b)*pi))+a))+b)*b)/b))-b))*b)*b))-3.30))+a)+2.07)-b)+a)-2.06))-pi)/b))*3.28)+b)))*3.08)/a)+e))"
-"((((b-cos((((sin((((a+cos((((((b/((((((e+tan(cos(sin((((a-((cos((a+(((((((2.77*tan(((((sin(pi)/b)/0.94)*b)-b)))+a)*pi)+b)*b)/b)-0.81)))*a)+1.28))*3.77)-a)))))*b)+a)+pi)+a)*b))-3.56)-a)-a)+pi)))-2.72)*b))/a)+pi)+2.40)))*e)+0.27)+2.82)"
-"sin((0.89+((1.81+(b*((((tan(sin(sin((cos(((a+(((((sin(cos(sin(((((e*(cos((sin((cos(((((a+(((((tan(((sin(b)+pi)/3.94))/pi)+b)-a)+b)*b))*1.28)-b)-a))*a))-pi))/a))-b)+a)+3.75))))+3.92)+3.90)*a)-2.27)*pi))+b))-a))))+e)*a)+b)+2.74)))+a)))"
-"(((a+(sin(((cos(((e+(((tan(((cos(((((tan((sin((((sin((sin((tan(tan(cos((e-(tan(((((((((((b+(pi-0.95))*e)+b)+a)+a)/a)+0.64)+b)-a)-b))-e)))))/0.62))-pi))+a)+a)/3.50))*a))-a)+a)+pi)*e))+0.83)*2.71))-pi)+b)/e))+b))/1.80)+b))/a))-pi)+0.99)"
-"(((pi*(((cos(tan(((((pi+((b-(((((1.88+(sin(cos(((2.19*tan(((tan((pi*tan(cos((((((b+sin(tan(((((cos(((((b+1.02)+b)/a)*a))/b)/b)*a)+3.93))))+e)-a)+a)*1.92)))))-b)-b)))*a)))-2.08))*a)-2.89)+e)+a))*a))+2.87)/e)+a)))*a)*pi)+e))*0.97)+1.03)"
-"tan((pi+sin(((tan((tan((((((tan((a*(1.83*(((((((cos(((b*(((0.91/((((((((sin(((((sin(cos((a/cos(1.59))))+a)-e)/b)*3.20))+1.99)+a)/pi)+2.66)-b)*a)*2.43)-b))/a)+b))+3.44))-a)+b)-3.30)+b)+b)/a)+a))))*1.53)+a)-a)+b)/b))*0.18))+0.61)+pi))))"
-"(b+((sin((((b+tan((((sin(((((cos(sin((((cos(cos(((cos(((tan(((((((((((((a+cos((((tan(b)+e)/2.04)/3.86)))+b)+a)+pi)*b)+b)*a)*b)*a)*0.74)+1.01)/a))-1.74)+b))+1.23)+1.63)))*b)/e)-3.09)))+b)/b)*pi)*2.11))+b)/1.09)-a)))-pi)+2.52))/a)*1.47))"
-"tan((2.46-(((cos((a-((tan((((((a+((cos(((((b*(((((((b*sin(cos((((((tan(((sin((sin((((a+tan((3.79*a)))/3.35)-1.95))+b))+a)+2.08))*b)*e)-pi)+a)/a))))+3.57)/a)*e)+1.76)/3.18)+b))/2.75)+e)+pi))+3.54)+b))+1.11)-a)/b)+b))-pi)+e)))/b)-pi)+b)))"
-"((tan(((pi+tan(cos((2.46/(((sin((a/cos((((((((sin((pi+tan(cos((2.09*(pi/((sin((sin(((tan(((((b/(cos(tan(cos((((1.57/b)*b)/a))))/2.68))-3.31)+a)/b))+pi)+b))*e))/1.95)*0.23)))))))/3.61)*e)*b)*b)+b)/e)+b))))*b)+b)/0.60)))))*3.68))*pi)-2.18)"
-"(cos(((b-cos(((((b+(((tan(((sin(((2.54*(tan(cos(((((cos((cos((((cos((tan(((((((((((a+cos((((pi+b)/b)*pi)))+a)-1.01)*pi)*pi)-e)*b)+b)-2.56)*b))+pi))+b)-pi)+1.17))+a))*pi)+b)-a)-0.36)))+pi))+a))*pi)+e))+b)/e)+a))+0.56)*a)*1.79)))-3.07))+a)"
-"tan(sin(((((((((pi*(((((((cos(tan((sin((((cos(cos(((((((tan((((sin((((cos((3.82*((cos(a)-b)/b)))/b)/3.17)-1.23))/e)/a)+pi))+b)+3.36)+b)/e)+a)+e)))+1.00)-b)*e))/1.26)))-2.13)+a)+b)+3.94)-a)-2.46)+3.10))/1.02)*pi)-1.45)/a)+2.55)*a)-1.28)))"
-"((((((tan((3.22-sin((((b+(((2.20/((cos((((1.32/(((((1.11*cos(((((((tan((0.21*(((0.46+sin(((((((a*b)-0.24)*a)+a)/a)*b)))+3.17)/1.26)))*a)+1.87)*e)/pi)/b)-pi)))-pi)+a)/a)+b))/b)*pi))/e)+2.10))-pi)*0.82))/b)-b))))+1.21)-a)+2.76)*b)-pi)*3.03)"
-"(((((0.79+((b*cos(tan(((pi/(cos(((pi+sin((b/(((3.91/(((b*(((a+((tan((2.64/sin((sin((((((tan((((((b+((((e-e)-pi)*0.39)+b))*b)*e)/a)-a))+b)+0.32)/pi)*0.43)/0.51))-a))))*1.70)-b))/b)+e))+0.22)+3.93))/a)+b))))+a))+b))-a))))-3.56))+b)+a)/a)*b)"
-"cos(sin(((((b+sin((cos((((((((((a+((((cos(((sin(cos(cos((cos(((((tan((b*((((tan((sin((a*(((1.45/a)+a)*e)))/pi))+2.08)+b)-3.91)*a)))+a)+3.56)/pi)-e))+0.59))))-0.68)+0.39))*a)*1.69)*1.23)+a))-a)+pi)/2.64)+pi)+1.60)+b)+b)*a))/b)))*b)/b)-e)))"
-"tan((((cos(tan(((tan((((1.92+(pi/(pi-sin((cos(((((tan((((sin((((sin((0.40+cos((tan((tan((((sin(((((((e+2.58)+3.88)+b)-b)+a)+e))*0.10)+a)+b))*e))*a))))+a)+pi)/0.78))+a)/pi)*3.29))*a)/b)/2.71)*3.53))+1.87)))))/2.72)/e))/a)+0.49)))+pi)+a)-b))"
-"cos(cos((a+(((b-((b*((((((cos(cos(((((sin(tan(cos(cos(((((0.24*sin((tan(tan(tan(sin((((tan(sin(((((a+(cos(((cos(a)+a)-a))/a))/a)+a)+pi)))+pi)-a)*0.73)))))/2.23)))/b)-b)+2.76)))))-2.45)+e)+1.39)/b)))-3.73)-b)+pi)-b)-a)+2.24))+b))+0.82)+b))))"
-"(((((((a+(((((tan(sin((((tan((((cos(((((((sin((b-((((((sin(cos(((sin((a*sin(((cos((((b+b)/pi)+2.97))-b)+e))))+e)/b)))+e)+e)-3.39)+2.10)*e)*b)))+b)/b)+3.57)*e)+pi)-3.21))*3.03)+e)+a))/e)*b)+pi)))*pi)/b)/b)+a)+0.55))-b)/1.95)+2.86)-e)/3.47)*b)"
-"(((((tan((((((tan((tan((sin(cos((sin((((tan((((tan(sin(((cos(((((((sin((((b+cos((e/(sin((a*((3.58/a)-2.92)))/a))))+3.92)*e))+0.45)+b)-b)+a)-b)+1.12))+pi)*b)))-3.21)+b)/a))-b)+b)+1.54))+3.69)))*0.85))+0.54))+a)*a)-b)-1.01)+a))/pi)-b)*a)*a)/a)"
-"tan(sin((1.38/tan(((a/(1.33/sin(((((tan(((((((((e*(((((((3.01-(((tan(cos((cos((tan(tan((((((((cos((a/pi))/pi)-b)+b)-3.72)+a)+e)/b)))/0.60))*a)))-1.28)+1.26)+2.75))-a)/0.27)*pi)/a)-0.13)/3.64))/b)-a)*a)/0.23)+b)-pi)*a))+e)-pi)+b)/b))))+a)))))"
-"(((((a+cos((pi+(((((((((((sin(cos(((((a-((tan(sin(((a+cos((((tan(cos((((((b/(((a+tan(sin((((2.31+a)-a)+a))))+pi)*pi))*a)-b)*b)/pi)))*b)/pi)-a)))*0.04)))+2.43)*b))-a)*pi)/b)))+a)/e)+3.55)/3.98)/3.19)+e)/a)+1.25)-3.32)+a)+0.57))))/e)+1.05)+e)/b)"
-"(tan((((a+(sin(((((a+((cos((((2.76+(((sin((((((sin((((((cos(cos(cos(((((a/((sin(((((2.83/(((pi/pi)+a)-pi))*0.44)+0.41)+pi))/a)/b))-e)+b)/a))))+pi)+2.28)+b)*a)+b))-pi)*pi)+0.29)/a)*b))+1.87)*pi)/a))/1.59)/pi))+pi)*0.72))*a)*b)+a))+b))-a)+e))-e)"
-"cos(tan(tan(tan((((e-(sin((tan((((sin((3.77+((b*((((0.52/((((cos((((((((sin(cos(cos((((a*((((a/((tan((e*0.95))+b)/e))+b)/3.79)/b))+e)/e))))+a)/e)+e)+1.29)*a)*2.28)/1.25))/pi)/0.59)+b)+b))+b)-3.22)*a))*a)))-pi)+b)+0.72))*2.37))+b))/a)*3.87)))))"
-"((a-((cos(cos((a-(((((sin((((a+tan((((e/((((((2.42+((((e*(1.24+((tan(((2.78/(tan((3.53+(a-sin((((((tan((tan(e)+2.11))*b)+a)+a)+pi)*0.78)))))*2.24))-pi))*pi)/pi)))-a)/b)*b))+b)+a)-0.07)/a)+b))+e)*a)))+e)/e))+b)+2.78)*b)+b)+b))))/pi)-0.32))-2.28)"
-"(sin(((((b+(((((sin(((0.70*tan(((((((cos((((2.90-((cos(((((sin(cos(tan(((((((((cos((((((pi+b)+b)+0.59)+1.86)*b))/pi)/b)+0.86)+e)+b)+3.99)/b)+a))))*b)-1.17)*b)/2.26))+e)/pi))*3.26)+pi))+a)+a)/a)+a)+3.89)+a)))-b))*a)/e)+3.63)+pi)-a))/a)-e)-pi))/b)"
-"((0.97-((2.02/(e/((3.84+(sin((sin((((((a*tan(sin(tan((((((b*(a+(((3.30-cos((1.16*sin(cos((cos((((sin((((cos(((cos((tan((cos(b)/e))/e))+a)+b))+e)*3.65)/e))-b)-b)*pi))-b))))))/3.10)/e)))+2.68)-0.68)*1.86)+a)))))/pi)-a)+pi)+a))+b))/pi))*b)))+e))*0.05)"
-"((a+(a+(((e*(0.81*((cos((((sin(cos((((((((tan((((((sin((cos((tan(sin(tan(((tan(tan(((((sin((((((b*3.14)+pi)-pi)-a)+pi))/b)-a)-a)+e)))*a)+a))))+a))*3.98))+b)/pi)+3.03)+3.90)+2.97))/0.03)+1.83)-3.34)*b)+b)-1.39)+a)))*a)+1.54)-pi))/3.98)*pi)))+a)-b)))+a)"
-"(b-cos(sin(tan(cos(((sin(((((sin(((((3.70+(2.48+sin((b/(sin(((3.46*sin(sin(((cos((cos(sin(((tan(((((0.74*((sin((0.10-((cos(cos((tan(a)/a)))+2.68)-b)))*b)*b))+pi)-2.83)-b))+a)+pi)))*0.89))/pi)+b))))+3.72))*a)))))+e)+e)/pi))*1.03)*2.24)+b)/a))/pi)+1.53))))))"
-"((((((((x*y)*7.123)-w)/((x+y)+(7.123*w)))/(((x+y)-(7.123/w))-((x*y)+(7.123-w))))/((((x+y)+(7.123*w))*((x/y)+(7.123-w)))*(((x*y)+(7.123-w))+((x/y)*(7.123-w)))))/((((x/(y+(7.321*w)))+((x-y)/(7.321+w)))+(((x-y)*(7.321+w))*((x/y)*(7.321+w))))+((((x-y)/(7.321+w))/((x*y)/(7.321+w)))/(((x/y)*(7.321+w))-(x+((y/7.321)*w)))))))"
-"((((((((x*y)/7.123)-w)/((x-y)-(7.123*w)))/(((x-y)+(7.123/w))-((x+y)*(7.123*w))))/((((x-y)-(7.123*w))*((x+y)*(7.123/w)))*(((x+y)*(7.123*w))+(x-(y/(7.123*w))))))/(((((x+y)-(7.321*w))+((x/y)+(7.321+w)))+(((x*y)+(7.321+w))*((x/y)/(7.321-w))))+((((x/y)+(7.321+w))/((x*y)*(7.321-w)))/(((x/y)/(7.321-w))-(x-((y-7.321)*w)))))))"
-"((((((((x+y)*7.123)-w)-((x+y)-(7.123*w)))-((x*(y-(7.123*w)))/((x*y)+(7.123+w))))-((((x+y)-(7.123*w))+((x/y)+(7.123+w)))+(((x*y)+(7.123+w))*((x/y)/(7.123-w)))))-(((((x/y)-(7.321/w))*((x-y)+(7.321+w)))*(((x-y)-(7.321+w))+((x-y)*(7.321/w))))*((((x-y)+(7.321+w))-((x*y)*(7.321+w)))-(((x-y)*(7.321/w))/(x+((y/7.321)+w)))))))"
-"((((((((x+y)/7.123)-w)-((x-y)+(7.123*w)))-(((x+y)+(7.123/w))/((x*y)-(7.123-w))))-((((x-y)+(7.123*w))+((x/y)-(7.123-w)))+(((x*y)-(7.123-w))*(x-(y*(7.123/w))))))-((((x*(y+(7.321*w)))*((x/y)-(7.321+w)))*(((x*y)-(7.321+w))+((x/y)/(7.321+w))))*((((x/y)-(7.321+w))-((x*y)/(7.321-w)))-(((x/y)/(7.321+w))/(x-((y+7.321)*w)))))))"
-"((((((((x-y)*7.123)-w)*((x+y)-(7.123/w)))*(((x+y)-(7.123*w))+((x/y)+(7.123+w))))*((((x+y)-(7.123/w))-((x*y)+(7.123-w)))-(((x/y)+(7.123+w))/((x*y)*(7.123-w)))))*(((((x/y)-(7.321*w))/((x-y)*(7.321+w)))/(((x-y)+(7.321+w))-((x*y)*(7.321+w))))/((((x-y)*(7.321+w))*((x/y)*(7.321+w)))*(((x*y)*(7.321+w))+(x+((y/7.321)/w)))))))"
-"((((((((x-y)/7.123)-w)*((x-y)+(7.123/w)))*(((x-y)+(7.123*w))+((x/y)-(7.123-w))))*((((x-y)+(7.123/w))-((x+y)*(7.123*w)))-(((x/y)-(7.123-w))/(x+(y/(7.123*w))))))*((((x*(y-(7.321*w)))/((x*y)+(7.321+w)))/(((x/y)-(7.321+w))-((x*y)/(7.321-w))))/((((x*y)+(7.321+w))*((x/y)/(7.321-w)))*(((x*y)/(7.321-w))+(x-((y-7.321)/w)))))))"
-"((((((((x/y)*7.123)-w)+((x+y)+(7.123/w)))+(((x+y)+(7.123*w))*((x/y)+(7.123-w))))+((((x+y)+(7.123/w))/((x*y)-(7.123-w)))/(((x/y)+(7.123-w))-(x+(y*(7.123/w))))))+((((x/(y-(7.321*w)))-((x*y)-(7.321+w)))-(((x-y)/(7.321+w))/((x*y)/(7.321+w))))-((((x*y)-(7.321+w))+((x/y)/(7.321+w)))+(((x*y)/(7.321+w))*(x-((y+7.321)/w)))))))"
-"((((((((x/y)/7.123)-w)+((x-y)-(7.123/w)))+(((x-y)-(7.123*w))*((x+y)*(7.123/w))))+((((x-y)-(7.123/w))/((x+y)/(7.123*w)))/(((x+y)*(7.123/w))-(x+((y+7.123)/w)))))+(((((x+y)-(7.321/w))-((x*y)+(7.321-w)))-(((x/y)+(7.321+w))/((x*y)*(7.321-w))))-((((x*y)+(7.321-w))+((x/y)*(7.321-w)))+(((x*y)*(7.321-w))*(x-((y*7.321)/w)))))))"
-"(((((((x*y)*(7.123+w))+(x+((y/7.123)/w)))+((x+((y/7.123)+w))*((x*y)+(7.123*w))))+(((x+((y/7.123)/w))/((x*y)-(7.123*w)))/(((x*y)+(7.123*w))-((x+y)-(7.123-w)))))+((((x+((y+7.321)*w))-(((x/y)*7.321)-w))-((((x*y)*7.321)-w)/((x+y)+(7.321*w))))-(((((x/y)*7.321)-w)+((x+y)+(7.321/w)))+(((x+y)+(7.321*w))*((x/y)+(7.321-w)))))))"
-"(((((((x*y)*(7.123-w))*(x-((y*7.123)/w)))*((x-((y-7.123)*w))+((x/y)-(7.123*w))))*(((x-((y*7.123)/w))-(x/(y+(7.123*w))))-(((x/y)-(7.123*w))/((x-y)*(7.123+w)))))*((((x+((y/7.321)/w))/((x*y)-(7.321*w)))/(((x*y)+(7.321*w))-((x+y)-(7.321-w))))/((((x*y)-(7.321*w))*((x+y)+(7.321-w)))*(((x+y)-(7.321-w))+((x+y)/(7.321/w)))))))"
-"(((((((x*y)+(7.123*w))-((x+y)-(7.123-w)))-(((x-y)-(7.123/w))/((x+y)/(7.123*w))))-((((x+y)-(7.123-w))+((x+y)/(7.123/w)))+(((x+y)/(7.123*w))*(x+((y+7.123)*w)))))-(((((x+y)+(7.321*w))*((x/y)+(7.321-w)))*(((x*y)+(7.321-w))+((x/y)*(7.321-w))))*((((x/y)+(7.321-w))-(x+(y*(7.321/w))))-(((x/y)*(7.321-w))/(x-((y*7.321)*w)))))))"
-"(((((((x*y)+(7.123+w))*((x/y)/(7.123-w)))*(((x*y)/(7.123-w))+(x-((y-7.123)/w))))*((((x/y)/(7.123-w))-(x-((y-7.123)*w)))-((x-((y-7.123)/w))/((x/y)-(7.123/w)))))*(((((x-y)*(7.321/w))/(x+((y/7.321)+w)))/((x+((y*7.321)*w))-(((x/y)/7.321)-w)))/(((x+((y/7.321)+w))*((x*y)+(7.321*w)))*((((x/y)/7.321)-w)+((x-y)-(7.321/w)))))))"
-"(((((((x*y)+(7.123-w))+((x/y)*(7.123-w)))+(((x*y)*(7.123-w))*(x-((y*7.123)/w))))+((((x/y)*(7.123-w))/(x-((y*7.123)*w)))/((x-((y*7.123)/w))-(x/(y+(7.123*w))))))+(((((x/y)*(7.321+w))-(x+((y/7.321)*w)))-((x+((y/7.321)/w))/((x*y)-(7.321*w))))-(((x+((y/7.321)*w))+((x*y)+(7.321/w)))+(((x*y)-(7.321*w))*((x+y)+(7.321-w)))))))"
-"(((((((x*y)+(7.123/w))/((x+y)*(7.123-w)))/(((x+y)+(7.123-w))-((x-y)/(7.123*w))))/((((x+y)*(7.123-w))*((x-y)/(7.123/w)))*(((x-y)/(7.123*w))+(x+((y-7.123)*w)))))/(((((x-y)+(7.321*w))+((x/y)-(7.321-w)))+(((x*y)-(7.321-w))*(x-(y*(7.321/w)))))+((((x/y)-(7.321-w))/(x+(y/(7.321*w))))/((x-(y*(7.321/w)))-(x-((y/7.321)*w)))))))"
-"(((((((x*y)-(7.123*w))*((x+y)+(7.123-w)))*(((x+y)-(7.123-w))+((x+y)/(7.123/w))))*((((x+y)+(7.123-w))-((x-y)/(7.123*w)))-(((x+y)/(7.123/w))/(x+((y-7.123)/w)))))*(((((x+y)+(7.321/w))/((x*y)-(7.321-w)))/(((x/y)+(7.321-w))-(x+(y*(7.321/w)))))/((((x*y)-(7.321-w))*(x-(y*(7.321/w))))*((x+(y*(7.321/w)))+(x-((y/7.321)/w)))))))"
-"(((((((x*y)-(7.123+w))+((x/y)/(7.123+w)))+(((x*y)/(7.123+w))*(x-((y+7.123)/w))))+((((x/y)/(7.123+w))/(x-((y+7.123)*w)))/((x-((y+7.123)/w))-((x*y)-(7.123/w)))))+(((((x-y)/(7.321/w))-(x+((y*7.321)/w)))-((x+((y-7.321)*w))/(((x-y)/7.321)-w)))-(((x+((y*7.321)/w))+(((x*y)/7.321)-w))+((((x-y)/7.321)-w)*((x-y)+(7.321/w)))))))"
-"(((((((x*y)-(7.123-w))*(x-(y*(7.123/w))))*((x+(y*(7.123/w)))+(x-((y/7.123)/w))))*(((x-(y*(7.123/w)))-(x-((y/7.123)*w)))-((x-((y/7.123)/w))/(x*(y+(7.123*w))))))*(((((x/y)/(7.321+w))/(x-((y+7.321)*w)))/((x-((y+7.321)/w))-((x*y)-(7.321/w))))/(((x-((y+7.321)*w))*((x/y)+(7.321/w)))*(((x*y)-(7.321/w))+((x+y)/(7.321-w)))))))"
-"(((((((x*y)-(7.123/w))+((x+y)/(7.123-w)))+(((x+y)*(7.123-w))*((x-y)/(7.123/w))))+((((x+y)/(7.123-w))/((x-y)*(7.123*w)))/(((x-y)/(7.123/w))-(x+((y*7.123)/w)))))+(((((x-y)+(7.321/w))-((x+y)*(7.321*w)))-(((x/y)-(7.321-w))/(x+(y/(7.321*w)))))-((((x+y)*(7.321*w))+(x-(y/(7.321*w))))+((x+(y/(7.321*w)))*(((x+y)*7.321)-w))))))"
-"(((((((x*y)/(7.123+w))*(x-((y+7.123)/w)))*((x+((y/7.123)*w))+((x*y)+(7.123/w))))*(((x-((y+7.123)/w))-((x*y)-(7.123/w)))-(((x*y)+(7.123/w))/((x+y)*(7.123-w)))))*((((x+((y-7.321)*w))/(((x-y)/7.321)-w))/((((x+y)/7.321)-w)-((x-y)+(7.321*w))))/(((((x-y)/7.321)-w)*((x-y)+(7.321/w)))*(((x-y)+(7.321*w))+((x/y)-(7.321-w)))))))"
-"(((((((x*y)/(7.123-w))+(x-((y-7.123)/w)))+((x-((y+7.123)*w))*((x/y)+(7.123/w))))+(((x-((y-7.123)/w))/((x/y)-(7.123/w)))/(((x/y)+(7.123/w))-((x-y)-(7.123+w)))))+((((x+((y*7.321)*w))-(((x/y)/7.321)-w))-((((x*y)/7.321)-w)/((x-y)-(7.321*w))))-(((((x/y)/7.321)-w)+((x-y)-(7.321/w)))+(((x-y)-(7.321*w))*((x+y)*(7.321/w)))))))"
-"(((((((x+y)*(7.123*w))+(x-(y/(7.123*w))))+((x+(y/(7.123*w)))*(((x+y)*7.123)-w)))+(((x-(y/(7.123*w)))/(((x-y)*7.123)-w))/((((x+y)*7.123)-w)-((x+y)-(7.123*w)))))+(((((x/y)/(7.321-w))-(x-((y-7.321)*w)))-((x-((y-7.321)/w))/((x/y)-(7.321/w))))-(((x-((y-7.321)*w))+((x/y)-(7.321*w)))+(((x/y)-(7.321/w))*((x-y)+(7.321+w)))))))"
-"(((((((x+y)*(7.123-w))*((x-y)/(7.123/w)))*(((x-y)/(7.123*w))+(x+((y-7.123)*w))))*((((x-y)/(7.123/w))-(x+((y*7.123)/w)))-((x+((y-7.123)*w))/(((x-y)/7.123)-w))))*(((((x/y)-(7.321-w))/(x+(y/(7.321*w))))/((x-(y*(7.321/w)))-(x-((y/7.321)*w))))/(((x+(y/(7.321*w)))*(((x+y)*7.321)-w))*((x-((y/7.321)*w))+(x*(y-(7.321*w))))))))"
-"(((((((x+y)*(7.123/w))-(x+((y+7.123)/w)))-((x-(y/(7.123*w)))/(((x-y)*7.123)-w)))-(((x+((y+7.123)/w))+(((x*y)*7.123)-w))+((((x-y)*7.123)-w)*((x+y)-(7.123/w)))))-(((((x*y)*(7.321-w))*(x-((y*7.321)/w)))*((x-((y-7.321)*w))+((x/y)-(7.321*w))))*(((x-((y*7.321)/w))-(x/(y+(7.321*w))))-(((x/y)-(7.321*w))/((x-y)*(7.321+w)))))))"
-"(((((((x+y)+(7.123*w))*((x/y)+(7.123-w)))*(((x*y)+(7.123-w))+((x/y)*(7.123-w))))*((((x/y)+(7.123-w))-(x+(y*(7.123/w))))-(((x/y)*(7.123-w))/(x-((y*7.123)*w)))))*(((((x-y)/(7.321+w))/((x*y)/(7.321+w)))/(((x/y)*(7.321+w))-(x+((y/7.321)*w))))/((((x*y)/(7.321+w))*(x-((y+7.321)/w)))*((x+((y/7.321)*w))+((x*y)+(7.321/w)))))))"
-"(((((((x+y)+(7.123-w))-((x-y)/(7.123*w)))-(((x+y)/(7.123/w))/(x+((y-7.123)/w))))-((((x-y)/(7.123*w))+(x+((y-7.123)*w)))+((x+((y-7.123)/w))*(((x+y)/7.123)-w))))-(((((x*y)-(7.321-w))*(x-(y*(7.321/w))))*((x+(y*(7.321/w)))+(x-((y/7.321)/w))))*(((x-(y*(7.321/w)))-(x-((y/7.321)*w)))-((x-((y/7.321)/w))/(x*(y+(7.321*w))))))))"
-"(((((((x+y)+(7.123/w))/((x*y)-(7.123-w)))/(((x/y)+(7.123-w))-(x+(y*(7.123/w)))))/((((x*y)-(7.123-w))*(x-(y*(7.123/w))))*((x+(y*(7.123/w)))+(x-((y/7.123)/w)))))/(((((x*y)-(7.321+w))+((x/y)/(7.321+w)))+(((x*y)/(7.321+w))*(x-((y+7.321)/w))))+((((x/y)/(7.321+w))/(x-((y+7.321)*w)))/((x-((y+7.321)/w))-((x*y)-(7.321/w)))))))"
-"(((((((x+y)-(7.123*w))+((x/y)+(7.123+w)))+(((x*y)+(7.123+w))*((x/y)/(7.123-w))))+((((x/y)+(7.123+w))/((x*y)*(7.123-w)))/(((x/y)/(7.123-w))-(x-((y-7.123)*w)))))+(((((x-y)+(7.321+w))-((x*y)*(7.321+w)))-(((x-y)*(7.321/w))/(x+((y/7.321)+w))))-((((x*y)*(7.321+w))+(x+((y/7.321)/w)))+((x+((y/7.321)+w))*((x*y)+(7.321*w)))))))"
-"(((((((x+y)-(7.123-w))+((x+y)/(7.123/w)))+(((x+y)/(7.123*w))*(x+((y+7.123)*w))))+((((x+y)/(7.123/w))/(x+((y-7.123)/w)))/((x+((y+7.123)*w))-(((x/y)*7.123)-w))))+(((((x/y)+(7.321-w))-(x+(y*(7.321/w))))-(((x/y)*(7.321-w))/(x-((y*7.321)*w))))-(((x+(y*(7.321/w)))+(x-((y/7.321)/w)))+((x-((y*7.321)*w))*(x/(y-(7.321*w))))))))"
-"(((((((x+y)-(7.123/w))-((x*y)+(7.123-w)))-(((x/y)+(7.123+w))/((x*y)*(7.123-w))))-((((x*y)+(7.123-w))+((x/y)*(7.123-w)))+(((x*y)*(7.123-w))*(x-((y*7.123)/w)))))-(((((x-y)*(7.321+w))*((x/y)*(7.321+w)))*(((x*y)*(7.321+w))+(x+((y/7.321)/w))))*((((x/y)*(7.321+w))-(x+((y/7.321)*w)))-((x+((y/7.321)/w))/((x*y)-(7.321*w)))))))"
-"(((((((x+y)/(7.123*w))*(x+((y+7.123)*w)))*((x+((y+7.123)/w))+(((x*y)*7.123)-w)))*(((x+((y+7.123)*w))-(((x/y)*7.123)-w))-((((x*y)*7.123)-w)/((x+y)+(7.123*w)))))*(((((x/y)*(7.321-w))/(x-((y*7.321)*w)))/((x-((y*7.321)/w))-(x/(y+(7.321*w)))))/(((x-((y*7.321)*w))*(x/(y-(7.321*w))))*((x/(y+(7.321*w)))+((x-y)/(7.321+w)))))))"
-"(((((((x+y)/(7.123-w))/((x-y)*(7.123*w)))/(((x-y)/(7.123/w))-(x+((y*7.123)/w))))/((((x-y)*(7.123*w))*(x+((y*7.123)*w)))*((x+((y*7.123)/w))+(((x*y)/7.123)-w))))/(((((x+y)*(7.321*w))+(x-(y/(7.321*w))))+((x+(y/(7.321*w)))*(((x+y)*7.321)-w)))+(((x-(y/(7.321*w)))/(((x-y)*7.321)-w))/((((x+y)*7.321)-w)-((x+y)-(7.321*w)))))))"
-"(((((((x+y)/(7.123/w))/(x+((y-7.123)/w)))/((x+((y+7.123)*w))-(((x/y)*7.123)-w)))/(((x+((y-7.123)/w))*(((x+y)/7.123)-w))*((((x/y)*7.123)-w)+((x+y)+(7.123/w)))))/((((x+(y*(7.321/w)))+(x-((y/7.321)/w)))+((x-((y*7.321)*w))*(x/(y-(7.321*w)))))+(((x-((y/7.321)/w))/(x*(y+(7.321*w))))/((x/(y-(7.321*w)))-((x*y)-(7.321+w)))))))"
-"(((((((x-y)*(7.123*w))*(x+((y*7.123)*w)))*((x+((y*7.123)/w))+(((x*y)/7.123)-w)))*(((x+((y*7.123)*w))-(((x/y)/7.123)-w))-((((x*y)/7.123)-w)/((x-y)-(7.123*w)))))*((((x-(y/(7.321*w)))/(((x-y)*7.321)-w))/((((x+y)*7.321)-w)-((x+y)-(7.321*w))))/(((((x-y)*7.321)-w)*((x+y)-(7.321/w)))*(((x+y)-(7.321*w))+((x/y)+(7.321+w)))))))"
-"(((((((x-y)*(7.123+w))*((x/y)*(7.123+w)))*(((x*y)*(7.123+w))+(x+((y/7.123)/w))))*((((x/y)*(7.123+w))-(x+((y/7.123)*w)))-((x+((y/7.123)/w))/((x*y)-(7.123*w)))))*(((((x+y)/(7.321/w))/(x+((y-7.321)/w)))/((x+((y+7.321)*w))-(((x/y)*7.321)-w)))/(((x+((y-7.321)/w))*(((x+y)/7.321)-w))*((((x/y)*7.321)-w)+((x+y)+(7.321/w)))))))"
-"(((((((x-y)*(7.123/w))/(x+((y/7.123)+w)))/((x+((y*7.123)*w))-(((x/y)/7.123)-w)))/(((x+((y/7.123)+w))*((x*y)+(7.123*w)))*((((x/y)/7.123)-w)+((x-y)-(7.123/w)))))/((((x+((y+7.321)/w))+(((x*y)*7.321)-w))+((((x-y)*7.321)-w)*((x+y)-(7.321/w))))+(((((x*y)*7.321)-w)/((x+y)+(7.321*w)))/(((x+y)-(7.321/w))-((x*y)+(7.321-w)))))))"
-"(((((((x-y)+(7.123*w))+((x/y)-(7.123-w)))+(((x*y)-(7.123-w))*(x-(y*(7.123/w)))))+((((x/y)-(7.123-w))/(x+(y/(7.123*w))))/((x-(y*(7.123/w)))-(x-((y/7.123)*w)))))+(((((x/y)-(7.321+w))-((x*y)/(7.321-w)))-(((x/y)/(7.321+w))/(x-((y+7.321)*w))))-((((x*y)/(7.321-w))+(x-((y-7.321)/w)))+((x-((y+7.321)*w))*((x/y)+(7.321/w)))))))"
-"(((((((x-y)+(7.123+w))-((x*y)*(7.123+w)))-(((x-y)*(7.123/w))/(x+((y/7.123)+w))))-((((x*y)*(7.123+w))+(x+((y/7.123)/w)))+((x+((y/7.123)+w))*((x*y)+(7.123*w)))))-(((((x+y)/(7.321*w))*(x+((y+7.321)*w)))*((x+((y+7.321)/w))+(((x*y)*7.321)-w)))*(((x+((y+7.321)*w))-(((x/y)*7.321)-w))-((((x*y)*7.321)-w)/((x+y)+(7.321*w)))))))"
-"(((((((x-y)+(7.123/w))-((x+y)*(7.123*w)))-(((x/y)-(7.123-w))/(x+(y/(7.123*w)))))-((((x+y)*(7.123*w))+(x-(y/(7.123*w))))+((x+(y/(7.123*w)))*(((x+y)*7.123)-w))))-(((((x*y)+(7.321+w))*((x/y)/(7.321-w)))*(((x*y)/(7.321-w))+(x-((y-7.321)/w))))*((((x/y)/(7.321-w))-(x-((y-7.321)*w)))-((x-((y-7.321)/w))/((x/y)-(7.321/w)))))))"
-"(((((((x-y)-(7.123*w))*((x+y)*(7.123/w)))*(((x+y)*(7.123*w))+(x-(y/(7.123*w)))))*((((x+y)*(7.123/w))-(x+((y+7.123)/w)))-((x-(y/(7.123*w)))/(((x-y)*7.123)-w))))*(((((x/y)+(7.321+w))/((x*y)*(7.321-w)))/(((x/y)/(7.321-w))-(x-((y-7.321)*w))))/((((x*y)*(7.321-w))*(x-((y*7.321)/w)))*((x-((y-7.321)*w))+((x/y)-(7.321*w)))))))"
-"(((((((x-y)-(7.123+w))+((x-y)*(7.123/w)))+(((x-y)*(7.123*w))*(x+((y*7.123)*w))))+((((x-y)*(7.123/w))/(x+((y/7.123)+w)))/((x+((y*7.123)*w))-(((x/y)/7.123)-w))))+(((((x+y)*(7.321/w))-(x+((y+7.321)/w)))-((x-(y/(7.321*w)))/(((x-y)*7.321)-w)))-(((x+((y+7.321)/w))+(((x*y)*7.321)-w))+((((x-y)*7.321)-w)*((x+y)-(7.321/w)))))))"
-"(((((((x-y)-(7.123/w))/((x+y)/(7.123*w)))/(((x+y)*(7.123/w))-(x+((y+7.123)/w))))/((((x+y)/(7.123*w))*(x+((y+7.123)*w)))*((x+((y+7.123)/w))+(((x*y)*7.123)-w))))/(((((x*y)+(7.321-w))+((x/y)*(7.321-w)))+(((x*y)*(7.321-w))*(x-((y*7.321)/w))))+((((x/y)*(7.321-w))/(x-((y*7.321)*w)))/((x-((y*7.321)/w))-(x/(y+(7.321*w))))))))"
-"(((((((x-y)/(7.123*w))+(x+((y-7.123)*w)))+((x+((y-7.123)/w))*(((x+y)/7.123)-w)))+(((x+((y-7.123)*w))/(((x-y)/7.123)-w))/((((x+y)/7.123)-w)-((x-y)+(7.123*w)))))+((((x-(y*(7.321/w)))-(x-((y/7.321)*w)))-((x-((y/7.321)/w))/(x*(y+(7.321*w)))))-(((x-((y/7.321)*w))+(x*(y-(7.321*w))))+((x*(y+(7.321*w)))*((x/y)-(7.321+w)))))))"
-"(((((((x-y)/(7.123+w))/((x*y)/(7.123+w)))/(((x/y)*(7.123+w))-(x+((y/7.123)*w))))/((((x*y)/(7.123+w))*(x-((y+7.123)/w)))*((x+((y/7.123)*w))+((x*y)+(7.123/w)))))/(((((x-y)/(7.321*w))+(x+((y-7.321)*w)))+((x+((y-7.321)/w))*(((x+y)/7.321)-w)))+(((x+((y-7.321)*w))/(((x-y)/7.321)-w))/((((x+y)/7.321)-w)-((x-y)+(7.321*w)))))))"
-"(((((((x-y)/(7.123/w))-(x+((y*7.123)/w)))-((x+((y-7.123)*w))/(((x-y)/7.123)-w)))-(((x+((y*7.123)/w))+(((x*y)/7.123)-w))+((((x-y)/7.123)-w)*((x-y)+(7.123/w)))))-((((x+(y/(7.321*w)))*(((x+y)*7.321)-w))*((x-((y/7.321)*w))+(x*(y-(7.321*w)))))*(((((x+y)*7.321)-w)-((x+y)-(7.321*w)))-((x*(y-(7.321*w)))/((x*y)+(7.321+w)))))))"
-"(((((((x/y)*(7.123+w))-(x+((y/7.123)*w)))-((x+((y/7.123)/w))/((x*y)-(7.123*w))))-(((x+((y/7.123)*w))+((x*y)+(7.123/w)))+(((x*y)-(7.123*w))*((x+y)+(7.123-w)))))-((((x+((y-7.321)/w))*(((x+y)/7.321)-w))*((((x/y)*7.321)-w)+((x+y)+(7.321/w))))*(((((x+y)/7.321)-w)-((x-y)+(7.321*w)))-(((x+y)+(7.321/w))/((x*y)-(7.321-w)))))))"
-"(((((((x/y)*(7.123-w))/(x-((y*7.123)*w)))/((x-((y*7.123)/w))-(x/(y+(7.123*w)))))/(((x-((y*7.123)*w))*(x/(y-(7.123*w))))*((x/(y+(7.123*w)))+((x-y)/(7.123+w)))))/((((x+((y/7.321)*w))+((x*y)+(7.321/w)))+(((x*y)-(7.321*w))*((x+y)+(7.321-w))))+((((x*y)+(7.321/w))/((x+y)*(7.321-w)))/(((x+y)+(7.321-w))-((x-y)/(7.321*w)))))))"
-"(((((((x/y)+(7.123+w))/((x*y)*(7.123-w)))/(((x/y)/(7.123-w))-(x-((y-7.123)*w))))/((((x*y)*(7.123-w))*(x-((y*7.123)/w)))*((x-((y-7.123)*w))+((x/y)-(7.123*w)))))/(((((x*y)*(7.321+w))+(x+((y/7.321)/w)))+((x+((y/7.321)+w))*((x*y)+(7.321*w))))+(((x+((y/7.321)/w))/((x*y)-(7.321*w)))/(((x*y)+(7.321*w))-((x+y)-(7.321-w)))))))"
-"(((((((x/y)+(7.123-w))-(x+(y*(7.123/w))))-(((x/y)*(7.123-w))/(x-((y*7.123)*w))))-(((x+(y*(7.123/w)))+(x-((y/7.123)/w)))+((x-((y*7.123)*w))*(x/(y-(7.123*w))))))-(((((x*y)/(7.321+w))*(x-((y+7.321)/w)))*((x+((y/7.321)*w))+((x*y)+(7.321/w))))*(((x-((y+7.321)/w))-((x*y)-(7.321/w)))-(((x*y)+(7.321/w))/((x+y)*(7.321-w)))))))"
-"(((((((x/y)+(7.123/w))-((x-y)-(7.123+w)))-(((x+y)/(7.123-w))/((x-y)*(7.123*w))))-((((x-y)-(7.123+w))+((x-y)*(7.123/w)))+(((x-y)*(7.123*w))*(x+((y*7.123)*w)))))-(((((x-y)-(7.321*w))*((x+y)*(7.321/w)))*(((x+y)*(7.321*w))+(x-(y/(7.321*w)))))*((((x+y)*(7.321/w))-(x+((y+7.321)/w)))-((x-(y/(7.321*w)))/(((x-y)*7.321)-w))))))"
-"(((((((x/y)-(7.123*w))/((x-y)*(7.123+w)))/(((x-y)+(7.123+w))-((x*y)*(7.123+w))))/((((x-y)*(7.123+w))*((x/y)*(7.123+w)))*(((x*y)*(7.123+w))+(x+((y/7.123)/w)))))/(((((x+y)-(7.321-w))+((x+y)/(7.321/w)))+(((x+y)/(7.321*w))*(x+((y+7.321)*w))))+((((x+y)/(7.321/w))/(x+((y-7.321)/w)))/((x+((y+7.321)*w))-(((x/y)*7.321)-w))))))"
-"(((((((x/y)-(7.123+w))-((x*y)/(7.123-w)))-(((x/y)/(7.123+w))/(x-((y+7.123)*w))))-((((x*y)/(7.123-w))+(x-((y-7.123)/w)))+((x-((y+7.123)*w))*((x/y)+(7.123/w)))))-(((((x-y)*(7.321*w))*(x+((y*7.321)*w)))*((x+((y*7.321)/w))+(((x*y)/7.321)-w)))*(((x+((y*7.321)*w))-(((x/y)/7.321)-w))-((((x*y)/7.321)-w)/((x-y)-(7.321*w)))))))"
-"(((((((x/y)-(7.123-w))/(x+(y/(7.123*w))))/((x-(y*(7.123/w)))-(x-((y/7.123)*w))))/(((x+(y/(7.123*w)))*(((x+y)*7.123)-w))*((x-((y/7.123)*w))+(x*(y-(7.123*w))))))/(((((x*y)/(7.321-w))+(x-((y-7.321)/w)))+((x-((y+7.321)*w))*((x/y)+(7.321/w))))+(((x-((y-7.321)/w))/((x/y)-(7.321/w)))/(((x/y)+(7.321/w))-((x-y)-(7.321+w)))))))"
-"(((((((x/y)-(7.123/w))*((x-y)+(7.123+w)))*(((x-y)-(7.123+w))+((x-y)*(7.123/w))))*((((x-y)+(7.123+w))-((x*y)*(7.123+w)))-(((x-y)*(7.123/w))/(x+((y/7.123)+w)))))*(((((x-y)-(7.321/w))/((x+y)/(7.321*w)))/(((x+y)*(7.321/w))-(x+((y+7.321)/w))))/((((x+y)/(7.321*w))*(x+((y+7.321)*w)))*((x+((y+7.321)/w))+(((x*y)*7.321)-w))))))"
-"(((((((x/y)/(7.123+w))/(x-((y+7.123)*w)))/((x-((y+7.123)/w))-((x*y)-(7.123/w))))/(((x-((y+7.123)*w))*((x/y)+(7.123/w)))*(((x*y)-(7.123/w))+((x+y)/(7.123-w)))))/((((x+((y*7.321)/w))+(((x*y)/7.321)-w))+((((x-y)/7.321)-w)*((x-y)+(7.321/w))))+(((((x*y)/7.321)-w)/((x-y)-(7.321*w)))/(((x-y)+(7.321/w))-((x+y)*(7.321*w)))))))"
-"(((((((x/y)/(7.123-w))-(x-((y-7.123)*w)))-((x-((y-7.123)/w))/((x/y)-(7.123/w))))-(((x-((y-7.123)*w))+((x/y)-(7.123*w)))+(((x/y)-(7.123/w))*((x-y)+(7.123+w)))))-((((x+((y/7.321)+w))*((x*y)+(7.321*w)))*((((x/y)/7.321)-w)+((x-y)-(7.321/w))))*((((x*y)+(7.321*w))-((x+y)-(7.321-w)))-(((x-y)-(7.321/w))/((x+y)/(7.321*w)))))))"
-"((((((x*(y+(7.123*w)))*((x/y)-(7.123+w)))*(((x*y)-(7.123+w))+((x/y)/(7.123+w))))*((((x/y)-(7.123+w))-((x*y)/(7.123-w)))-(((x/y)/(7.123+w))/(x-((y+7.123)*w)))))*(((((x+y)/(7.321-w))/((x-y)*(7.321*w)))/(((x-y)/(7.321/w))-(x+((y*7.321)/w))))/((((x-y)*(7.321*w))*(x+((y*7.321)*w)))*((x+((y*7.321)/w))+(((x*y)/7.321)-w))))))"
-"((((((x*(y-(7.123*w)))/((x*y)+(7.123+w)))/(((x/y)-(7.123+w))-((x*y)/(7.123-w))))/((((x*y)+(7.123+w))*((x/y)/(7.123-w)))*(((x*y)/(7.123-w))+(x-((y-7.123)/w)))))/(((((x-y)-(7.321+w))+((x-y)*(7.321/w)))+(((x-y)*(7.321*w))*(x+((y*7.321)*w))))+((((x-y)*(7.321/w))/(x+((y/7.321)+w)))/((x+((y*7.321)*w))-(((x/y)/7.321)-w))))))"
-"((((((x+((y*7.123)*w))-(((x/y)/7.123)-w))-((((x*y)/7.123)-w)/((x-y)-(7.123*w))))-(((((x/y)/7.123)-w)+((x-y)-(7.123/w)))+(((x-y)-(7.123*w))*((x+y)*(7.123/w)))))-((((((x-y)*7.321)-w)*((x+y)-(7.321/w)))*(((x+y)-(7.321*w))+((x/y)+(7.321+w))))*((((x+y)-(7.321/w))-((x*y)+(7.321-w)))-(((x/y)+(7.321+w))/((x*y)*(7.321-w)))))))"
-"((((((x+((y*7.123)/w))+(((x*y)/7.123)-w))+((((x-y)/7.123)-w)*((x-y)+(7.123/w))))+(((((x*y)/7.123)-w)/((x-y)-(7.123*w)))/(((x-y)+(7.123/w))-((x+y)*(7.123*w)))))+((((((x+y)*7.321)-w)-((x+y)-(7.321*w)))-((x*(y-(7.321*w)))/((x*y)+(7.321+w))))-((((x+y)-(7.321*w))+((x/y)+(7.321+w)))+(((x*y)+(7.321+w))*((x/y)/(7.321-w)))))))"
-"((((((x+((y+7.123)*w))-(((x/y)*7.123)-w))-((((x*y)*7.123)-w)/((x+y)+(7.123*w))))-(((((x/y)*7.123)-w)+((x+y)+(7.123/w)))+(((x+y)+(7.123*w))*((x/y)+(7.123-w)))))-((((x-((y*7.321)*w))*(x/(y-(7.321*w))))*((x/(y+(7.321*w)))+((x-y)/(7.321+w))))*(((x/(y-(7.321*w)))-((x*y)-(7.321+w)))-(((x-y)/(7.321+w))/((x*y)/(7.321+w)))))))"
-"((((((x+((y+7.123)/w))+(((x*y)*7.123)-w))+((((x-y)*7.123)-w)*((x+y)-(7.123/w))))+(((((x*y)*7.123)-w)/((x+y)+(7.123*w)))/(((x+y)-(7.123/w))-((x*y)+(7.123-w)))))+((((x-((y*7.321)/w))-(x/(y+(7.321*w))))-(((x/y)-(7.321*w))/((x-y)*(7.321+w))))-(((x/(y+(7.321*w)))+((x-y)/(7.321+w)))+(((x-y)*(7.321+w))*((x/y)*(7.321+w)))))))"
-"((((((x+((y-7.123)*w))/(((x-y)/7.123)-w))/((((x+y)/7.123)-w)-((x-y)+(7.123*w))))/(((((x-y)/7.123)-w)*((x-y)+(7.123/w)))*(((x-y)+(7.123*w))+((x/y)-(7.123-w)))))/((((x-((y/7.321)*w))+(x*(y-(7.321*w))))+((x*(y+(7.321*w)))*((x/y)-(7.321+w))))+(((x*(y-(7.321*w)))/((x*y)+(7.321+w)))/(((x/y)-(7.321+w))-((x*y)/(7.321-w)))))))"
-"((((((x+((y-7.123)/w))*(((x+y)/7.123)-w))*((((x/y)*7.123)-w)+((x+y)+(7.123/w))))*(((((x+y)/7.123)-w)-((x-y)+(7.123*w)))-(((x+y)+(7.123/w))/((x*y)-(7.123-w)))))*((((x-((y/7.321)/w))/(x*(y+(7.321*w))))/((x/(y-(7.321*w)))-((x*y)-(7.321+w))))/(((x*(y+(7.321*w)))*((x/y)-(7.321+w)))*(((x*y)-(7.321+w))+((x/y)/(7.321+w)))))))"
-"((((((x+((y/7.123)*w))+((x*y)+(7.123/w)))+(((x*y)-(7.123*w))*((x+y)+(7.123-w))))+((((x*y)+(7.123/w))/((x+y)*(7.123-w)))/(((x+y)+(7.123-w))-((x-y)/(7.123*w)))))+((((((x+y)/7.321)-w)-((x-y)+(7.321*w)))-(((x+y)+(7.321/w))/((x*y)-(7.321-w))))-((((x-y)+(7.321*w))+((x/y)-(7.321-w)))+(((x*y)-(7.321-w))*(x-(y*(7.321/w))))))))"
-"((((((x+((y/7.123)+w))*((x*y)+(7.123*w)))*((((x/y)/7.123)-w)+((x-y)-(7.123/w))))*((((x*y)+(7.123*w))-((x+y)-(7.123-w)))-(((x-y)-(7.123/w))/((x+y)/(7.123*w)))))*((((((x*y)*7.321)-w)/((x+y)+(7.321*w)))/(((x+y)-(7.321/w))-((x*y)+(7.321-w))))/((((x+y)+(7.321*w))*((x/y)+(7.321-w)))*(((x*y)+(7.321-w))+((x/y)*(7.321-w)))))))"
-"((((((x+((y/7.123)/w))/((x*y)-(7.123*w)))/(((x*y)+(7.123*w))-((x+y)-(7.123-w))))/((((x*y)-(7.123*w))*((x+y)+(7.123-w)))*(((x+y)-(7.123-w))+((x+y)/(7.123/w)))))/((((((x/y)*7.321)-w)+((x+y)+(7.321/w)))+(((x+y)+(7.321*w))*((x/y)+(7.321-w))))+((((x+y)+(7.321/w))/((x*y)-(7.321-w)))/(((x/y)+(7.321-w))-(x+(y*(7.321/w))))))))"
-"((((((x+(y*(7.123/w)))+(x-((y/7.123)/w)))+((x-((y*7.123)*w))*(x/(y-(7.123*w)))))+(((x-((y/7.123)/w))/(x*(y+(7.123*w))))/((x/(y-(7.123*w)))-((x*y)-(7.123+w)))))+((((x-((y+7.321)/w))-((x*y)-(7.321/w)))-(((x*y)+(7.321/w))/((x+y)*(7.321-w))))-((((x*y)-(7.321/w))+((x+y)/(7.321-w)))+(((x+y)*(7.321-w))*((x-y)/(7.321/w)))))))"
-"((((((x+(y/(7.123*w)))*(((x+y)*7.123)-w))*((x-((y/7.123)*w))+(x*(y-(7.123*w)))))*(((((x+y)*7.123)-w)-((x+y)-(7.123*w)))-((x*(y-(7.123*w)))/((x*y)+(7.123+w)))))*((((x-((y-7.321)/w))/((x/y)-(7.321/w)))/(((x/y)+(7.321/w))-((x-y)-(7.321+w))))/((((x/y)-(7.321/w))*((x-y)+(7.321+w)))*(((x-y)-(7.321+w))+((x-y)*(7.321/w)))))))"
-"((((((x-((y*7.123)*w))*(x/(y-(7.123*w))))*((x/(y+(7.123*w)))+((x-y)/(7.123+w))))*(((x/(y-(7.123*w)))-((x*y)-(7.123+w)))-(((x-y)/(7.123+w))/((x*y)/(7.123+w)))))*(((((x*y)+(7.321/w))/((x+y)*(7.321-w)))/(((x+y)+(7.321-w))-((x-y)/(7.321*w))))/((((x+y)*(7.321-w))*((x-y)/(7.321/w)))*(((x-y)/(7.321*w))+(x+((y-7.321)*w)))))))"
-"((((((x-((y*7.123)/w))-(x/(y+(7.123*w))))-(((x/y)-(7.123*w))/((x-y)*(7.123+w))))-(((x/(y+(7.123*w)))+((x-y)/(7.123+w)))+(((x-y)*(7.123+w))*((x/y)*(7.123+w)))))-(((((x*y)-(7.321*w))*((x+y)+(7.321-w)))*(((x+y)-(7.321-w))+((x+y)/(7.321/w))))*((((x+y)+(7.321-w))-((x-y)/(7.321*w)))-(((x+y)/(7.321/w))/(x+((y-7.321)/w)))))))"
-"((((((x-((y+7.123)*w))*((x/y)+(7.123/w)))*(((x*y)-(7.123/w))+((x+y)/(7.123-w))))*((((x/y)+(7.123/w))-((x-y)-(7.123+w)))-(((x+y)/(7.123-w))/((x-y)*(7.123*w)))))*((((((x*y)/7.321)-w)/((x-y)-(7.321*w)))/(((x-y)+(7.321/w))-((x+y)*(7.321*w))))/((((x-y)-(7.321*w))*((x+y)*(7.321/w)))*(((x+y)*(7.321*w))+(x-(y/(7.321*w))))))))"
-"((((((x-((y+7.123)/w))-((x*y)-(7.123/w)))-(((x*y)+(7.123/w))/((x+y)*(7.123-w))))-((((x*y)-(7.123/w))+((x+y)/(7.123-w)))+(((x+y)*(7.123-w))*((x-y)/(7.123/w)))))-((((((x-y)/7.321)-w)*((x-y)+(7.321/w)))*(((x-y)+(7.321*w))+((x/y)-(7.321-w))))*((((x-y)+(7.321/w))-((x+y)*(7.321*w)))-(((x/y)-(7.321-w))/(x+(y/(7.321*w))))))))"
-"((((((x-((y-7.123)*w))+((x/y)-(7.123*w)))+(((x/y)-(7.123/w))*((x-y)+(7.123+w))))+((((x/y)-(7.123*w))/((x-y)*(7.123+w)))/(((x-y)+(7.123+w))-((x*y)*(7.123+w)))))+(((((x*y)+(7.321*w))-((x+y)-(7.321-w)))-(((x-y)-(7.321/w))/((x+y)/(7.321*w))))-((((x+y)-(7.321-w))+((x+y)/(7.321/w)))+(((x+y)/(7.321*w))*(x+((y+7.321)*w)))))))"
-"((((((x-((y-7.123)/w))/((x/y)-(7.123/w)))/(((x/y)+(7.123/w))-((x-y)-(7.123+w))))/((((x/y)-(7.123/w))*((x-y)+(7.123+w)))*(((x-y)-(7.123+w))+((x-y)*(7.123/w)))))/((((((x/y)/7.321)-w)+((x-y)-(7.321/w)))+(((x-y)-(7.321*w))*((x+y)*(7.321/w))))+((((x-y)-(7.321/w))/((x+y)/(7.321*w)))/(((x+y)*(7.321/w))-(x+((y+7.321)/w)))))))"
-"((((((x-((y/7.123)*w))+(x*(y-(7.123*w))))+((x*(y+(7.123*w)))*((x/y)-(7.123+w))))+(((x*(y-(7.123*w)))/((x*y)+(7.123+w)))/(((x/y)-(7.123+w))-((x*y)/(7.123-w)))))+(((((x/y)+(7.321/w))-((x-y)-(7.321+w)))-(((x+y)/(7.321-w))/((x-y)*(7.321*w))))-((((x-y)-(7.321+w))+((x-y)*(7.321/w)))+(((x-y)*(7.321*w))*(x+((y*7.321)*w)))))))"
-"((((((x-((y/7.123)/w))/(x*(y+(7.123*w))))/((x/(y-(7.123*w)))-((x*y)-(7.123+w))))/(((x*(y+(7.123*w)))*((x/y)-(7.123+w)))*(((x*y)-(7.123+w))+((x/y)/(7.123+w)))))/(((((x*y)-(7.321/w))+((x+y)/(7.321-w)))+(((x+y)*(7.321-w))*((x-y)/(7.321/w))))+((((x+y)/(7.321-w))/((x-y)*(7.321*w)))/(((x-y)/(7.321/w))-(x+((y*7.321)/w)))))))"
-"((((((x-(y*(7.123/w)))-(x-((y/7.123)*w)))-((x-((y/7.123)/w))/(x*(y+(7.123*w)))))-(((x-((y/7.123)*w))+(x*(y-(7.123*w))))+((x*(y+(7.123*w)))*((x/y)-(7.123+w)))))-((((x-((y+7.321)*w))*((x/y)+(7.321/w)))*(((x*y)-(7.321/w))+((x+y)/(7.321-w))))*((((x/y)+(7.321/w))-((x-y)-(7.321+w)))-(((x+y)/(7.321-w))/((x-y)*(7.321*w)))))))"
-"((((((x-(y/(7.123*w)))/(((x-y)*7.123)-w))/((((x+y)*7.123)-w)-((x+y)-(7.123*w))))/(((((x-y)*7.123)-w)*((x+y)-(7.123/w)))*(((x+y)-(7.123*w))+((x/y)+(7.123+w)))))/((((x-((y-7.321)*w))+((x/y)-(7.321*w)))+(((x/y)-(7.321/w))*((x-y)+(7.321+w))))+((((x/y)-(7.321*w))/((x-y)*(7.321+w)))/(((x-y)+(7.321+w))-((x*y)*(7.321+w)))))))"
-"((((((x/(y+(7.123*w)))+((x-y)/(7.123+w)))+(((x-y)*(7.123+w))*((x/y)*(7.123+w))))+((((x-y)/(7.123+w))/((x*y)/(7.123+w)))/(((x/y)*(7.123+w))-(x+((y/7.123)*w)))))+(((((x+y)+(7.321-w))-((x-y)/(7.321*w)))-(((x+y)/(7.321/w))/(x+((y-7.321)/w))))-((((x-y)/(7.321*w))+(x+((y-7.321)*w)))+((x+((y-7.321)/w))*(((x+y)/7.321)-w))))))"
-"((((((x/(y-(7.123*w)))-((x*y)-(7.123+w)))-(((x-y)/(7.123+w))/((x*y)/(7.123+w))))-((((x*y)-(7.123+w))+((x/y)/(7.123+w)))+(((x*y)/(7.123+w))*(x-((y+7.123)/w)))))-(((((x+y)*(7.321-w))*((x-y)/(7.321/w)))*(((x-y)/(7.321*w))+(x+((y-7.321)*w))))*((((x-y)/(7.321/w))-(x+((y*7.321)/w)))-((x+((y-7.321)*w))/(((x-y)/7.321)-w))))))"
-"(0)for(var i;i){(())}()"
-"0and for(var i;i<<0){()}"
-"0and(0)for(var i:=0;i){()}"
-"cos(0)for(var i;i){()}"
-"floor(0)for(var i;i){}()"
-"for(){{}}"
-"for(vAr i:=0;i)"
-"for(var i:=0;i)"
-"for(var i:=0;i){()}"
-"for(var i:=0;i){()}()"
-"for(var i:=0;i){{(){}}}()"
-"for(var i:=0;i){}"
-"for(var i:=0;i,0){()}"
-"for(var i;(i)){()}"
-"for(var i;i!0){()}"
-"for(var i;i)"
-"for(var i;i){(())(())}"
-"for(var i;i){(())(())}()"
-"for(var i;i){(())}()"
-"for(var i;i){()}"
-"for(var i;i){()}()"
-"for(var i;i){}"
-"frac(0)for(var i;i){()}"
-"root(0,0)for(var i;i){()}"
-"var V:=1;var s0appe0:=false;repeat s0appe0 false for(){(){}}(())"
-"var r:=0;for(r)"
-"var r:=0;for(r){((()))}"
-"var r:=0;for(r){(())(())}()"
-"var r:=0;for(r){(())()}()"
-"var r:=0;for(r){(())}"
-"var r:=0;for(r){()()}()"
-"var r:=0;for(r){()}"
-"var r:=0;for(r){()}()"
-"var r:=0;for(var i:=0;i){()}"
-"var r:=0;r for(())"
-"var r:=0;r for()"
-"var r:=for(Var i:=0;i){()}"
-"var r:=for(var i:=0;i)"
-"var r:=for(var i:=0;i){()}"
-"var r:=for(var i:=0;i){}"
-"var r:=for(var i;(0)z i)"
-"var r:=for(var i;I){(())(())}"
-"var r:=for(var i;i)"
-"var r:=for(var i;i){(())(())}"
-"var r:=for(var i;i){(())(())}()"
-"var r:=for(var i;i){(())}"
-"var r:=for(var i;i){(())}()"
-"var r:=for(var i;i){(())}(){{{}}}()"
-"var r:=for(var i;i){()()}"
-"var r:=for(var i;i){()}"
-"var r:=for(var i;i){()}()"
-"var r:=for(var i;i){}()"
-"var r:=for(var i;i+0){()}"
-"var r;for(r){(())(())}()"
-"var r;for(r){()}"
-"var r;for(r){}()"
-"var r;for(var i:=0;i)"
-"0 ? 1 : 2"
-"[(0)] ? [(1)] : [(2)]"
-"(0 ? 1 : 2) == 2"
-"'01234'              == '01234567890123456789'[:r1-r0]"
-"'0123456'            == '01234567890123456789'[:  r1]"
-"'0123456789'[0:] == '01234567890123456789'[0:9]"
-"'0123456789'[:]  == '01234567890123456789'[0:9]"
-"'0123456789'     == '01234567890123456789'[0:9]"
-"'0123456789'[:]  == '01234567890123456789'[10:]"
-"'01234567890123456789'[0:9] == '0123456789'"
-"'01234567890123456789'[0:9] == '0123456789'[0:]"
-"'01234567890123456789'[0:9] == '0123456789'[:9]"
-"'01234567890123456789'[0:9] != '123456789'"
-"'01234567890123456789'[0:9] != '123456789'[0:]"
-"'01234567890123456789'[0:9] != '123456789'[:8]"
-"'01234567890123456789'[10:] == '0123456789'[:]"
-"'01234567890123456789'[10:] != '123456789'[:]"
-"'01234567890123456789'[1+1:r1]  == '23456'"
-"'01234567890123456789'[2*6:10+6] == '23456'"
-"'01234567890123456789'[2: r1]   == '23456'"
-"'01234567890123456789'[:9]  == '0123456789'[:9]"
-"'01234567890123456789'[:9]  != '123456789'[:8]"
-"'01234567890123456789'[r0:  ]   == '234567890123456789'"
-"'01234567890123456789'[r0+2:r1] == '456'"
-"'01234567890123456789'[r0:3*2]  == '23456'"
-"'01234567890123456789'[r0: 6]   == '23456'"
-"'01234567890123456789'[r0:r1+2] == '2345678'"
-"'01234567890123456789'[r0:r1]   == '23456'"
-"'01234567890123456789'[:  r1]   == '0123456'"
-"'01234567890123456789'[:r1-r0]  == '01234'"
-"'01234567890123456789'[r1-r0:]  == '4567890123456789'"
-"'0123456789'[3:3] == '3'[:]"
-"'0123456789'[3:3] == '3'[0:0]"
-"'0123456789'[:9] == '01234567890123456789'[0:9]"
-"'0123456789'[:9] == '01234567890123456789'[:9]"
-"0 * (abs  (x) + acos (y) + asin (x) + atan (y))"
-"0 * (ceil (x) + cos  (y) + cosh (x) + exp  (y))"
-"0 * (deg2grad(x) + grad2deg(y) + rad2deg(x) + deg2rad(y))"
-"0 * (erf  (x) + erfc (y) + sgn  (y) + frac (y))"
-"0 * (floor(x) + log  (y) + log10(x) + round(y))"
-"0 == (for (var i := 0; i < 10; i += 1) { ~{break[i]; continue; i += i} })"
-"0 == (for (var i := 0; i < 10; i += 1) { ~{continue; break[7]; i += i} })"
-"0 * (log1p(x) + expm1(y) + acosh(x) + asinh(y))"
-"0 * (sec  (x) + csc  (y) + tanh (x) + cot  (y))"
-"0 * (sin  (x) + sinh (y) + sqrt (x) + tan  (y))"
-"(1 + 1 < 3 + 3 ? 7 : 9) == 7"
-"(1 + 1 > 3 + 3 ? 7 : 9) == 9"
-"(1 + 1 < 3 ? 7 : 9) == 7"
-"(1 + 1 > 3 ? 7 : 9) == 9"
-"(1 < 2 ? 3 : 4) == 3"
-"(1 > 2 ? 3 : 4) == 4"
-"'123456789'[0:]  != '01234567890123456789'[0:9]"
-"'123456789'[:]   != '01234567890123456789'[0:9]"
-"'123456789'      != '01234567890123456789'[0:9]"
-"'123456789'[:]   != '01234567890123456789'[10:]"
-"'123456789'[:8]  != '01234567890123456789'[0:9]"
-"'123456789'[:8]  != '01234567890123456789'[:9]"
-"(1 > 2 ? 3 : 4 + 5) == 9"
-"(1 < 2 ? 3 + 5 : 4) == 8"
-"'123' in 'aaa123'"
-"12 == (if (1 > 2) { var x:= 2; } else { var x[3] := {7,2,3}; sum(x); })"
-"12 == (if (1 < 2) { var x[3] := {7,2,3}; sum(x); } else { var x:= 2; })"
-" 1 ? 3 : 4"
-"(1 ? 3 : 4) == 3"
-"1 == (for (var i := 0; i < 10; i += 1) { ~{break[i += 1]; continue; i += i} })"
-"'1XYZ2' ilike '*xyz*'"
-"21 == (for (var i := 0; i < 10; i += 1) { if (i > 2) { break [i * 7]; i += 1; i += 2; i += 3; }; })"
-"21 == (for (var i := 0; i < 10; i += 1) { if (i > 2) { break [i * 7]; return [i * 8]; i += 1; i += 2; i += 3; }; })"
-"(2 < 3 + 3 ? 7 : 9) == 7"
-"(2 > 3 + 3 ? 7 : 9) == 9"
-"'23456'              == '01234567890123456789'[1+1:r1]"
-"'23456' == '01234567890123456789'[2*6:10+6]"
-"'23456'              == '01234567890123456789'[2: r1]"
-"'23456'              == '01234567890123456789'[r0:3*2]"
-"'23456'              == '01234567890123456789'[r0: 6]"
-"'23456'              == '01234567890123456789'[r0:r1]"
-"'2345678'            == '01234567890123456789'[r0:r1+2]"
-"'234567890123456789' == '01234567890123456789'[r0:  ]"
-"2 == for (var i := 0; i < 10; i += 1) { if (i > 2) { continue; i += 1; i += 2; i += 3; } else i; }"
-"2 == for (var i := 0; i < 10; i += 1) { if (i > 2) { continue; return [i * 8]; i += 1; i += 2; i += 3; } else i; }"
-"'456'                == '01234567890123456789'[r0+2:r1]"
-"'4567890123456789'   == '01234567890123456789'[r1-r0:]"
-"7 == (for (var i := 0; i < 10; i += 1) { ~{break[7]; continue; i += i} })"
-"'a123b' like '*123*'"
-"'aaa' + '123' == 'aaa123'"
-"'aaa123' == 'aaa' + '123'"
-"'aaa' == 'aaa'"
-"'aaa' <= 'bbb'"
-"'aaa'  < 'bbb'"
-"'aaa' in 'aaa123'"
-"'bbb' >= 'aaa'"
-"'bbb' >  'aaa'"
-"[*] { case 1 < 2 : 1 / 2; case (1 < 3) : 2 / 2; case 1 < 4 : 3 / 2; case (1 < 5) : 4 / 2; }"
-"[*]{ case x < y : x + y; case y < x : y - x; }"
-"equal((2.2*pi^2.2^3.3),2.2*(pi^13.4894687605338489))"
-"equal((2*pi^2^3),2*(pi^8))"
-"equal((pi^2.2^3.3*2),2*(pi^13.4894687605338489))"
-"equal((pi^2.2^3.3/2.2),(pi^13.4894687605338489)/2.2)"
-"equal((pi^2.2^3.3),(pi^13.4894687605338489))"
-"equal((pi^-2^-3),1/(pi^(1/8)))"
-"equal((pi^-2^3),1/(pi^8))"
-"equal((pi^2^3*2),2*(pi^8))"
-"equal((pi^2^3/2),(pi^8)/2)"
-"equal((pi^2^-3),(pi^(1/8)))"
-"equal((pi^2^3),(pi^8))"
-"equal(pi^2^3-pi^8,0)"
-"equal(\t \n(\n \r1.1\t\t - \n\n 2.2\n\n/\r3.3\t),(1.1-2.2/3.3))"
-"for(var i := 0; (i < 10) and (i != y); i+=2) { x += i; }; x;"
-"for(var i := 0; (i < 10) and (i != y);) { x += i; i+=2; }; x;"
-"for(var i := 0; (i < 10);) { i += 1; }; x;"
-"for(var i := 0; (i < y); i += 1) { if (i <= (y / 2)) continue; else x += i; }; x;"
-"for(var i := 0; (i < y); i += 1) { if (i <= (y / 2)) x += i; else break; }; x;"
-"if (1 < 2) { 1+2; 3;} == 3"
-"if (1 < 2) { 1+2; 3;} else {1+2; 4;} == 3"
-"if (1 > 2) { 1+2; 3;} else {1+2; 4;} == 4"
-"if (1 < 2) { 1+2; 3;} else 4; == 3"
-"if (1 > 2) { 1+2; 3;} else 4; == 4"
-"if (1 < 2) { 1+2; 3;} else if (1 < 2) {1+2; 4;} == 3"
-"if (1 > 2) { 1+2; 3;} else if (1 < 2) {1+2; 4;} == 4"
-"if (1 > 2) { 1+2; 3;} else if (1 > 2) {1+2; 4;} == null"
-"if (1 < 2) { 1+2; 3;} else if (1 < 2) 4; == 3"
-"if (1 > 2) { 1+2; 3;} else if (1 < 2) 4; == 4"
-"if (1 > 2) { 1+2; 3;} else if (1 > 2) 4; == null"
-"if (1 > 2) { 1+2; 3;} == null"
-"if (1 < 2) 3; == 3"
-"if (1 < 2) 3; else {1+2; 4;} == 3"
-"if (1 > 2) 3; else {1+2; 4;} == 4"
-"if (1 < 2) 3; else 4; == 3"
-"if (1 > 2) 3; else 4; == 4"
-"if (1 < 2) 3; else if (1 < 2) {1+2; 4;} == 3"
-"if (1 > 2) 3; else if (1 < 2) {1+2; 4;} == 4"
-"if (1 > 2) 3; else if (1 > 2) {1+2; 4;} == null"
-"if (1 < 2) 3; else if (1 < 2) 4; == 3"
-"if (1 > 2) 3; else if (1 < 2) 4; == 4"
-"if (1 > 2) 3; else if (1 > 2) 4; == null"
-"if (1 > 2) 3; == null"
-"inrange('aaa','bbb','ccc')"
-"(min(0,1) ? 1 + 3 : 1 + 4) == 5"
-"(min(1,2) ? 1 + 3 : 1 + 4) == 4"
-"repeat 1.1 + 2.2 until (1 < 2)"
-"repeat 1.1234; 1 < 2; 1.1 + 2.2 until (1 < 2)"
-"switch { case 1 > 1 : 1; case 2 > 2 : 2; case 3 = 3 : 3; case 4 > 4 : 4; default : 5; }"
-"switch { case (1 >  2) : 0; case (1 <= 2) : 1; default: 1.12345; }"
-"switch { case (1 <= 2) : 1; default: 1.12345; }"
-"switch { case (1 <= 2) : switch { case (1 <= 2) : 1; default: 1.12345; }; default: 1.12345; }"
-"switch { case ([x >  y]) : [0]; case ([x <= y]) : [y - x]; default: 1.12345; }"
-"switch { case (x >  y) : 0; case (x <= y) : (y - x); default: 1.12345; }"
-"switch { case {(x <= y)} : switch { case ({x <= y}) : x; default: 1.12345; }; default: 1.12345; }"
-"switch { case {x <= y} : switch { case {x <= y} : x; default: 1.12345; }; default: 1.12345; }"
-"switch { case (x <= y) : switch { case (x <= y) : (y - x); default: 1.12345; }; default: 1.12345; }"
-"switch { case {x <= y} : x; default: 1.12345; }"
-"switch { case [(x <= y)] : {y - x}; default: 1.12345; }"
-"switch { case (x <= y) : (y - x); default: 1.12345; }"
-"var s := 'abc';  ~{1 + 2; 'abc' + s; s} == s"
-"var s := 'abc';  ~{1 + 2; var x := 'ab'; x + 'c'} == s"
-"var s := 'abc';  ~{'ab' + 'c'} == s"
-"var s := 'abc';  ~{'abc'     } == s"
-"var s := 'abc';  s == ~{'ab' + 'c'}"
-"var s := 'abc';  s == ~{'abc'     }"
-"var s := 'abc';  ~{s         } == s"
-"var s := 'abc';  s == ~{s         }"
-"var v0[3] := {1,2, 3}; var v1[3] := {1,1,1}; v0 -= v1; (v0[0] == 0) and (v0[1] == 1) and (v0[2] == 2)"
-"var v0[3] := {1,2, 3}; var v1[3] := {1,1,1}; v0 += v1; (v0[0] == 2) and (v0[1] == 3) and (v0[2] == 4)"
-"var v0[3] := {1,2, 3}; var v1[3] := {2,2,2}; v0 *= v1; (v0[0] == 2) and (v0[1] == 4) and (v0[2] == 6)"
-"var v0[3] := [1]; var v1[3] := [1]; v0 -= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 0)"
-"var v0[3] := [1]; var v1[3] := [1]; v0 += v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 2)"
-"var v0[3] := [1]; var v1[3] := [2]; v0 *= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 2)"
-"var v0[3] := {3,9,15}; var v1[3] := {3,3,3}; v0 /= v1; (v0[0] == 1) and (v0[1] == 3) and (v0[2] == 5)"
-"var v0[3] := [3]; var v1[3] := [3]; v0 /= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 1)"
-"var v[2] := {1,2}; swap(v[0],v[1]); (v[0] == 2) and (v[1] == 1)"
-"var v[2] := {1,2}; swap(v[2 * zero],v[(2 * one) / (1 + 1)]); (v[2 * zero] == 2) and (v[(2 * one) / (1 + 1)] == 1)"
-"var v[2] := {1,2}; swap(v[zero],v[one]); (v[zero] == 2) and (v[one] == 1)"
-"var v[2] := {1,2}; v[0] <=> v[1]  ; (v[0] == 2) and (v[1] == 1)"
-"var v[2] := {1,2}; ~(v[2 * zero] <=> v[(2 * one) / (1 + 1)]  , (v[2 * zero] == 2) and (v[(2 * one) / (1 + 1)] == 1))"
-"var v[2] := {1,2}; v[2 * zero] <=> v[(2*one)/(1+1)]  ; (v[2 * zero] == 2) and (v[(2 * one) / (1 + 1)] == 1)"
-"var v[2] := {1,2}; v[zero] <=> v[one]  ; (v[zero] == 2) and (v[one] == 1)"
-"var v[3] := {1,2, 3}; v -= 1; (v[0] == 0) and (v[1] == 1) and (v[2] == 2)"
-"var v[3] := {1,2, 3}; v += 1; (v[0] == 2) and (v[1] == 3) and (v[2] == 4)"
-"var v[3] := {1,2, 3}; v *= 2; (v[0] == 2) and (v[1] == 4) and (v[2] == 6)"
-"var v[3] := [1]; v -= 1; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 0)"
-"var v[3] := [1]; v += 1; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 2)"
-"var v[3] := [1]; v *= 2; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 2)"
-"var v[3] := {3,9,15}; v /= 3; (v[0] == 1) and (v[1] == 3) and (v[2] == 5)"
-"var v[3] := [3]; v /= 3; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 1)"
-"var x; 1"
-"var x[10] := [-1]; var y[10] := [-1]; for (var i := 0; i < 10; i += 1) { x[i] := i; y[i] := 2 * x[i]; }; (sum(x) == 45) and (sum(y) == (2 * sum(x)));"
-"var x[10^6]:=[2];var y[10^6]:=[3]; var s:=0;equal(for(var i:=0; i<10;i+=1){s+= sum(5 *(2x-y/3)) + i;},150000045.0)"
-"var x[10^6] := null; var y[10^7] := null; 0 * (min(x) + min(y)) + x[] + y[] == 10^7 + 10^6"
-"(~{~{ var x[1] := [1] }} + ~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{{ var x[1] := [2] }}) == 6"
-"(~{~{ var x[1] := [1] }} + ~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{{ var x    := [2] }}) == 6"
-"(~{~{ var x[1] := [1] }} + ~{ var x[1] := [1] } + ~{ var x    := [2] } + ~{{ var x[1] := [2] }}) == 6"
-"(~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{~{ var x[1] := [1] } + ~{ var x[1] := [2] }}) == 6"
-"(~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{~{ var x[1] := [1] } + ~{ var x    := [2] }}) == 6"
-"(~{~{~{var x[1] := [1]}}} + ~{~{var x[1] := [2]}} + ~{var x[1] := [3]}) == 6"
-"(~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{~{ var x    := [1] } + ~{ var x[1] := [2] }}) == 6"
-"(~{~{ var x[1] := [1] }} + ~{ var x    := [1] } + ~{ var x[1] := [2] } + ~{{ var x[1] := [2] }}) == 6"
-"(~{ var x[1] := [1] } + ~{ var x    := [2] } + ~{~{ var x[1] := [1] } + ~{ var x[1] := [2] }}) == 6"
-"var x:=1;  2-(3+abs(x)) == -2"
-"var x:=1;  2/(3*abs(x)) == (2/3)"
-"var x:=1;  2+(3-abs(x)) == 4"
-"var x:=1;  2+(3+abs(x)) == 6"
-"~{var x := '123'; x[]} + ~{~{var x := '1234'; x[]}} == 7"
-"~{var x := '123'; x[]} + ~{var x := '1234'; x[]}    == 7"
-"~{var x := '123'; x[]} + ~{~{var x := 4}}           == 7"
-"~{var x := '123'; x[]} + ~{var x := 4}              == 7"
-"var x:=1;  2+(abs(x)-3) == 0"
-"var x:=1;  2-(abs(x)+3) == -2"
-"var x:=1;  2*(abs(x)/3) == (2/3)"
-"var x:=1;  2+(abs(x)+3) == 6"
-"var x:=1;  (3+abs(x))-2 ==  2"
-"var x:=1;  (3*abs(x))/2 == (3/2)"
-"var x:=1;  (3-abs(x))+2 == 4"
-"var x:=1;  (3+abs(x))+2 == 6"
-"var x:=1;  (abs(x)-3)+2 == 0"
-"var x:=1;  (abs(x)/3)/2 == (1/6)"
-"var x:=1;  (abs(x)+3)-2 ==  2"
-"var x:=1;  (abs(x)/3)*2 == (2/3)"
-"var x:=1;  (abs(x)*3)/2 == (3/2)"
-"var x:=1;  (abs(x)+3)+2 == 6"
-"(~{~{ var x    := [1] }} + ~{ var x[1] := [1] } + ~{ var x[1] := [2] } + ~{{ var x[1] := [2] }}) == 6"
-"(~{ var x    := [1] } + ~{ var x[1] := [2] } + ~{~{ var x[1] := [1] } + ~{ var x[1] := [2] }}) == 6"
-"~{ var x := 1 } + ~{ var x := 2 } == 3"
-"(~{ var x := 1 } + ~{ var x := 2 } + ~{~{ var x := 1 } + ~{ var x := 2 }}) == 6"
-"(~{ var x := 1 } + ~{ var x := 2 }) == (~{ var x := 2 } + ~{ var x := 1 })"
-"(~{ var x := 1 } + ~{ var x[6] := {6,5,4,3,2,1} }) == 7"
-"var x := 1; var y := 2; 1"
-"var x := 1; var y := 2; swap(x,y); (x == 2) and (y == 1)"
-"var x := 1; var y := 2; ~(swap(x,y),(x == 2) and (y == 1))"
-"var x := 1; var y := 2; var v[2] := {3,4}; swap(x,v[0]); swap(v[1],y); (x == 3) and (y == 4)"
-"var x := 1; var y := 2; var v[2] := {3,4}; swap(x,v[2 * zero]); swap(v[(2 * one) / (1 + 1)],y); (x == 3) and (y == 4)"
-"var x := 1; var y := 2; var v[2] := {3,4}; swap(x,v[zero]); swap(v[one],y); (x == 3) and (y == 4)"
-"var x := 1; var y := 2; var v[2] := {3,4}; x <=> v[0]; v[1] <=> y; (x == 3) and (y == 4)"
-"var x := 1; var y := 2; var v[2] := {3,4}; x <=> v[zero / 3]; v[(2 * one)/(1 + 1)] <=> y; (x == 3) and (y == 4)"
-"var x := 1; var y := 2; var v[2] := {3,4}; x <=> v[zero]; v[one] <=> y; (x == 3) and (y == 4)"
-"var x := 1; var y := 2; x"
-"var x := 1; var y := 2; x <=> y     ; (x    == 2) and (y    == 1)"
-"var x := 1; x"
-"var x := 2; (~{ for (var i := 0; i < 10; i += 1) { for (var j := 0; j <= i; j += 1) { var y := 3; if ((i + j + y + x) < 6) { y += x; continue; } else break[i + j]; } } } + ~{ for (var i := 0; i < 10; i += 1) { for (var j := 0; j <= i; j += 1) { var y := 3; if ((i + j + y + x) < 6) { y += x; continue; } else break[i + j]; } } }) == 18"
-"var x := 2; var v0[3] := {1,2,3}; ( ~{ for (var i := 0; i < 10; i += 1) { for (var j := 0; j <= i; j += 1) { var y := 3; var v2[3] := {1,2,3}; if ( (i + j + y + x + abs(v0[i % v0[]] - v2[j % v2[]])) < 6) { var v3[3] := {1,2,3}; y += x / v3[j % v3[]]; continue; } else break[i + j]; } } } + ~{ for (var i := 0; i < 10; i += 1) { for (var j := 0; j <= i; j += 1)  { var y := 3; var v2[3] := {1,2,3}; if ((i + j + y + x + abs(v0[i % v0[]] - v2[j % v2[]])) < 6) { var v3[3] := {1,2,3}; y += x / v3[j % v3[]]; continue; } else break[i + j]; } } } ) == 18"
-"var x:= 2; var y := 3; (-abs(x + 0)+abs(y - 0))  ==  1"
-"var x:= 2; var y := 3; (-abs(x + 0)--abs(y - 0)) ==  1"
-"var x:= 2; var y := 3; (-abs(x + 0)/-abs(y - 0)) ==  (2/3)"
-"var x:= 2; var y := 3; (abs(x + 0)--abs(y - 0))  ==  5"
-"var x:= 2; var y := 3; (-abs(x + 0)-abs(y - 0))  == -5"
-"var x:= 2; var y := 3; (-abs(x + 0)+-abs(y - 0)) == -5"
-"var x:= 2; var y := 3; (-abs(x + 0)*-abs(y - 0)) ==  6"
-"var x:= 2; var y := 3; (-abs(x)+abs(y))  ==  1"
-"var x:= 2; var y := 3; (-abs(x)--abs(y)) ==  1"
-"var x:= 2; var y := 3; (-abs(x)/-abs(y)) ==  (2/3)"
-"var x:= 2; var y := 3; (abs(x)--abs(y))  ==  5"
-"var x:= 2; var y := 3; (-abs(x)-abs(y))  == -5"
-"var x:= 2; var y := 3; (-abs(x)+-abs(y)) == -5"
-"var x:= 2; var y := 3; (-abs(x)*-abs(y)) ==  6"
-"var x[3] := {0.1,0.2,0.3}; sum(trunc(x)) == 0"
-"var x[3] := [0]; var y[1] := {1};       x <= y"
-"var x[3] := [0]; var y[1] := {1};       x <  Y"
-"var x[3] := [0]; var y[1] := {1};       x < (y += 1)"
-"var x[3] := [0]; var y[1] := {5};       (x += 1) < y"
-"var x[3] := [0]; var y[1] := {5};       (x += 1) < (y += 1)"
-"var x[3] := [0]; var y[2] := {1,2};     x <= y"
-"var x[3] := [0]; var y[2] := {1,2};     X <  y"
-"var x[3] := [0]; var y[2] := {1,2};     x < (y += 1)"
-"var x[3] := [0]; var y[2] := {5,6};     (x += 1) < y"
-"var x[3] := [0]; var y[2] := {5,6};     (x += 1) < (y += 1)"
-"var x[3] := [0]; var y[3] := {1,2,3};   x <= y"
-"var x[3] := [0]; var y[3] := {1,2,3};   x <  Y"
-"var x[3] := [0]; var y[3] := {1,2,3};   x < (y += 1)"
-"var x[3] := [0]; var y[3] := {5,6,7};   (x += 1) < y"
-"var x[3] := [0]; var y[3] := {5,6,7};   (x += 1) < (y += 1)"
-"var x[3] := [0]; var y[4] := {1,2,3,4}; x <= y"
-"var x[3] := [0]; var y[4] := {1,2,3,4}; X <  y"
-"var x[3] := [0]; var y[4] := {1,2,3,4}; x < (y += 1)"
-"var x[3] := [0]; var y[4] := {5,6,7,8}; (x += 1) < y"
-"var x[3] := [0]; var y[4] := {5,6,7,8}; (x += 1) < (y += 1)"
-"var x[3] := {1,1,1};  var y := 1; x == y"
-"var x[3] := {1,1,1};  var y := 1; y == x"
-"var x[3] := {1,1,1};  var y := 2; x == y - 1"
-"var x[3] := {1,1,1};  var y := 2; y - 1 == x"
-"var x[3] := {-1,-2,-3};    sum(abs(x)  ) == 6"
-"var x[3] := {1,2,3};  var y := 3; equal(true,(x -= 1) < y + 1)"
-"var x[3] := {1,2,3};  var y := 3; x <= y + 1"
-"var x[3] := {1,2,3};  var y := 3; x < y + 1"
-"var x[3] := {1,2,3};  var y := 3; y >= x"
-"var x[3] := {1,2,3};  var y := 5; equal(true,(x -= 1) <= y)"
-"var x[3] := {1,2,3};  var y := 5; equal(true,(x += 1) < y)"
-"var x[3] := {1,2,3};  var y := 5; x <= y"
-"var x[3] := {1,2,3};  var y := 5; x < y"
-"var x[3] := {1,2,3};  var y := 5; y + 1 > x"
-"var x[3] := {1,2,3};  var y := 5; y + 1 > (x += 1)"
-"var x[3] := {1,2,3};  var y := 5; y > x"
-"var x[3] := {1,2,3};  var y := 5; y > (x += 1)"
-"var x[3] := {1,2,3}; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)"
-"var x[3] := {1,2};   (x[0] == 1) and (x[1] == 2) and (x[2] == 0)"
-"(~{ var x[3] := [1] } + ~{ var x[6] := {6,5,4,3,2,1}}) == 7"
-"var x[3] := [1]; var y[1] := {1};       var z[3] := [1]; z := 2(x * y)/3; z == 2(x * y)/3"
-"var x[3] := [1]; var y[1] := {1};       var z[3] := [1]; z := 2(x * y); z == (x * y)2"
-"var x[3] := [1]; var y[1] := {1};       var z[3] := [1]; z := (x * y); z == (x * y)"
-"var x[3] := [1]; var y[1] := [1];       x == y"
-"var x[3] := [1]; var y[1] := [2];       x != y"
-"var x[3] := [1]; var y[2] := {1,2};     var z[3] := [1]; z := 2(x / y)/3; z == 2(x / y)/3"
-"var x[3] := [1]; var y[2] := {1,2};     var z[3] := [1]; z := 2(x / y); z == (x / y)2"
-"var x[3] := [1]; var y[2] := {1,2};     var z[3] := [1]; z := (x / y); z == (x / y)"
-"var x[3] := [1]; var y[2] := [1];       x == y"
-"var x[3] := [1]; var y[2] := [2];       x != y"
-"var x[3] := [1]; var y[3] := {1,2,3};   var z[3] := [1]; z := 2(x - y)/3; z == 2(x - y)/3"
-"var x[3] := [1]; var y[3] := {1,2,3};   var z[3] := [1]; z := 2(x - y); z == (x - y)2"
-"var x[3] := [1]; var y[3] := {1,2,3};   var z[3] := [1]; z := (x - y); z == (x - y)"
-"var x[3] := [1]; var y[3] := [1];       x == y"
-"var x[3] := [1]; var y[3] := [2];       x != y"
-"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := 2(x + y)/3; z == 2(x + y)/3"
-"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := 2(x + y); z == (x + y)2"
-"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := (x + y); z == (x + y)"
-"var x[3] := [1]; var y[4] := [1];       x == y"
-"var x[3] := [1]; var y[4] := [2];       x != y"
-"var x[3] := [1];     (x[0] == 1) and (x[1] == 1) and (x[2] == 1)"
-"var x[3] := {2,2,2};  var y := 0; y + 1 == (x -= 1)"
-"var x[3] := {2,2,2};  var y := 1; (x -= 1) == y"
-"var x[3] := {2,2,2};  var y := 1; y == (x -= 1)"
-"var x[3] := [5]; var y[1] := {1};       x >= y"
-"var x[3] := [5]; var y[1] := {1};       x >  y"
-"var x[3] := [5]; var y[2] := {1,2};     x >= y"
-"var x[3] := [5]; var y[2] := {1,2};     x >  y"
-"var x[3] := [5]; var y[3] := {1,2,3};   x >= y"
-"var x[3] := [5]; var y[3] := {1,2,3};   x >  y"
-"var x[3] := [5]; var y[4] := {1,2,3,4}; x >= y"
-"var x[3] := [5]; var y[4] := {1,2,3,4}; x >  y"
-"var x[3] := [8]; var y[1] := {1};       (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 9) and (x[2] == 9)"
-"var x[3] := [8]; var y[1] := {1};       (x += 1) <=> y; (x[0] == 1) and (x[1] == 9) and (x[2] == 9)"
-"var x[3] := [8]; var y[2] := {1,2};     (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 9)"
-"var x[3] := [8]; var y[2] := {1,2};     (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 9)"
-"var x[3] := [8]; var y[3] := {1,2,3};   (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)"
-"var x[3] := [8]; var y[3] := {1,2,3};   (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)"
-"var x[3] := [8]; var y[4] := {1,2,3,4}; (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)"
-"var x[3] := [8]; var y[4] := {1,2,3,4}; (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)"
-"var x[3] := [9]; var y[1] := {1};       x <=> (y += 1); (x[0] == 2) and (x[1] == 9) and (x[2] == 9)"
-"var x[3] := [9]; var y[1] := {1};       x <=> y; (x[0] == 1) and (x[1] == 9) and (x[2] == 9)"
-"var x[3] := [9]; var y[2] := {1,2};     x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 9)"
-"var x[3] := [9]; var y[2] := {1,2};     x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 9)"
-"var x[3] := [9]; var y[3] := {1,2,3};   x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)"
-"var x[3] := [9]; var y[3] := {1,2,3};   x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)"
-"var x[3] := [9]; var y[4] := {1,2,3,4}; x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)"
-"var x[3] := [9]; var y[4] := {1,2,3,4}; x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)"
-"~{~{var x := 3}} + ~{var x := '1234'; x[]}          == 7"
-"~{var x := 3} + ~{var x := '1234'; x[]}             == 7"
-"var x[3] := {};  var y[1] := {1};       x := (y+=1); (x[0] == y[0]) and (x[1] ==    0) and (x[2] ==    0)"
-"var x[3] := {};  var y[1] := {1};       x := y; (x[0] == y[0]) and (x[1] ==    0) and (x[2] ==    0)"
-"var x[3] := {};  var y[2] := {1,2};     x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] ==    0)"
-"var x[3] := {};  var y[2] := {1,2};     x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] ==    0)"
-"var x[3] := {};  var y[3] := {1,2,3};   x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])"
-"var x[3] := {};  var y[3] := {1,2,3};   x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])"
-"var x[3] := {};  var y[4] := {1,2,3,4}; x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])"
-"var x[3] := {};  var y[4] := {1,2,3,4}; x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])"
-"var x := 3; var y := 6; -x * -y == 18"
-"var x:=3; var y:=6; -(-(-x))*-(-(-y))         ==  18"
-"var x:=3; var y:=6; -(-x)*-(-(-y))            == -18"
-"var x:=3; var y:=6; -(-x)*-(-y)               ==  18"
-"var x := 3; var y := 6;  x + -y == -3"
-"var x := 3; var y := 6; -x - -y ==  3"
-"var x := 3; var y := 6;  x - -y ==  9"
-"var x := 3; var y := 6; -x + -y == -9"
-"var x:=3; var y:=6; -(-(-(x+y)))*-(-(-(y+x))) ==  81"
-"var x:=3; var y:=6; -(-(-(x+y)))*-(-(y+x))    == -81"
-"var x:=3; var y:=6; -(-(x+y))*-(-(y+x))       ==  81"
-"var x[3] := {};      (x[0] == 0) and (x[1] == 0) and (x[2] == 0)"
-"var x[6] := {1,2,3,4,5,6}; equal(sqrt(sum([x - avg(x)]^2) / x[]),1.7078251277)"
-"(~{ var x[6] := {6,5,4,3,2,1} } + ~{ var x := 1 }) == 7"
-"var x := 6; var y := 3; -x / -y ==  2"
-"var x:=6; var y:=4;  3 / -x == -0.5"
-"var x:=6; var y:=4; -3 / -x ==  0.5"
-"var x:=6; var y:=4;  3 * -x ==  -18"
-"var x:=6; var y:=4; -3 * -x ==   18"
-"var x:=6; var y:=4;  3 + -x ==   -3"
-"var x:=6; var y:=4; -3 - -x ==    3"
-"var x:=6; var y:=4;  3 - -x ==    9"
-"var x:=6; var y:=4; -3 + -x ==   -9"
-"var x:=6; var y:=4; x * -3  == -18"
-"var x:=6; var y:=4; x / -3  ==  -2"
-"var x:=6; var y:=4; -x - -3 ==  -3"
-"var x:=6; var y:=4; x + -3  ==   3"
-"var x:=6; var y:=4; -x + -3 ==  -9"
-"var x:=6; var y:=4; x - -3  ==   9"
-"var x := 'abc'; var y := '123'; x != y"
-"var x := 'abc'; var y := '123' + x; y == '123abc'"
-"var x := 'abc'; var y := x + '123'; y == 'abc123'"
-"var x := 'abc'; x == 'abc'"
-"~{var x := 'xxx'; var y := 'yyy';~{((x + '2') != x ? x : y) == x  }}"
-"~{var x := 'xxx'; var y := 'yyy';~{(x == (x + '1') ? x : y) == y  }}"
-"~{var x := 'xxx'; var y := 'yyy';~{'xxx1' == (x < y ? x + '1' : y)}}"
-"~{var x := 'xxx'; var y := 'yyy';~{x == (x != (x + '2') ? x : y)  }}"
-"~{var x := 'xxx'; var y := 'yyy';~{(x < y ? x + '1' : y) == 'xxx1'}}"
-"~{var x := 'xxx'; var y := 'yyy';~{(x > y ? x : y + '2') == 'yyy2'}}"
-"~{var x := 'xxx'; var y := 'yyy';~{(x < y ? x : y) == x           }}"
-"~{var x := 'xxx'; var y := 'yyy';~{(x > y ? x : y) == y           }}"
-"~{var x := 'xxx'; var y := 'yyy';~{y == (x == (x + '1') ? x : y)  }}"
-"~{var x := 'xxx'; var y := 'yyy';~{'yyy2' == (x > y ? x : y + '2')}}"
-"'abcd'      like 'abcd*'"
-"'abcd'      like 'abc*'"
-"'abcd'      like 'ab*'"
-"'abcd'      like 'a*'"
-"'abcd'      like 'abcd?'"
-"'abcd'      like 'abc?'"
-"'abcd'      like 'abc??'"
-"'abcd'      like 'ab???'"
-"'abcd'      like 'a????'"
-"'abcd'      like '?????'"
-"'a'         like 'a*'"
-"'ab'        like 'a*'"
-"'abcd'      like 'abcd*'"
-"''          like ''"
-"'abcd'      like 'abcd'"
-"'abcd'      like 'abc*'"
-"'abcd'      like '*bcd'"
-"'abcd'      like 'abc?'"
-"'abcd'      like '?bcd'"
-"'abcd'      like 'ab?d'"
-"'abcd'      like 'ab*d'"
-"'abcd'      like 'a?cd'"
-"'abcd'      like 'a*cd'"
-"'abcd'      like 'a??d'"
-"'abcd'      like 'a*?d'"
-"'abcd'      like '*bc*'"
-"'abcd'      like '?bc?'"
-"'abcd'      like '????'"
-"'abcd'      like 'a???'"
-"'abcd'      like 'ab??'"
-"'abcd'      like 'abc?'"
-"'abcd'      like '???d'"
-"'abcd'      like '??cd'"
-"'abcd'      like '?bcd'"
-"'abcd'      like '?b?d'"
-"'abcd'      like 'a?c?'"
-"'abcd'      like 'a??d'"
-"'abcd'      like '?bc?'"
-"'abcd'      like 'ab**'"
-"'abcd'      like 'ab*?'"
-"'abcd'      like 'a***'"
-"'abcd'      like '**cd'"
-"'abcd'      like '*?cd'"
-"'abcd'      like '***d'"
-"'abcd'      like '?*?d'"
-"'abcd'      like '?*?d'"
-"'abcd'      like '*bc*'"
-"'abcd'      like '*bc?'"
-"'abcd'      like '*b??'"
-"'abcd'      like '?bc*'"
-"'abcd'      like '??c*'"
-"'abcd'      like '*b?*'"
-"'abcd'      like '*b*d'"
-"'abcd'      like 'a*c*'"
-"'abcd'      like '?*cd'"
-"'abcd'      like 'ab?*'"
-"'abcd'      like 'ab*?'"
-"'abcd'      like 'a?*d'"
-"'ab'        like 'a*'"
-"'ab'        like 'a?'"
-"'a'         like 'a*'"
-"'a'         like 'a?'"
-"'xalabcd'   like '*abcd*'"
-"'xablabcd'  like '*abcd*'"
-"'xabclabcd' like '*abcd*'"
-"'aaaaa'     like '*aa?'"
-"'abcd'      like 'xyzw'"
-"'abcd'      like 'xyz'"
-"'abc'       like 'xyzw'"
-"'abcd'      like 'ab?'"
-"'abcd'      like 'a?'"
-"'abcd'      ilike 'abcd*'"
-"'abcd'      ilike 'abc*'"
-"'abcd'      ilike 'ab*'"
-"'abcd'      ilike 'a*'"
-"'abcd'      ilike 'abcd?'"
-"'abcd'      ilike 'abc?'"
-"'abcd'      ilike 'abc??'"
-"'abcd'      ilike 'ab???'"
-"'abcd'      ilike 'a????'"
-"'abcd'      ilike '?????'"
-"'a'         ilike 'a*'"
-"'ab'        ilike 'a*'"
-"'abcd'      ilike 'abcd*'"
-"''          ilike ''"
-"'abcd'      ilike 'abcd'"
-"'abcd'      ilike 'abc*'"
-"'abcd'      ilike '*bcd'"
-"'abcd'      ilike 'abc?'"
-"'abcd'      ilike '?bcd'"
-"'abcd'      ilike 'ab?d'"
-"'abcd'      ilike 'ab*d'"
-"'abcd'      ilike 'a?cd'"
-"'abcd'      ilike 'a*cd'"
-"'abcd'      ilike 'a??d'"
-"'abcd'      ilike 'a*?d'"
-"'abcd'      ilike '*bc*'"
-"'abcd'      ilike '?bc?'"
-"'abcd'      ilike '????'"
-"'abcd'      ilike 'a???'"
-"'abcd'      ilike 'ab??'"
-"'abcd'      ilike 'abc?'"
-"'abcd'      ilike '???d'"
-"'abcd'      ilike '??cd'"
-"'abcd'      ilike '?bcd'"
-"'abcd'      ilike '?b?d'"
-"'abcd'      ilike 'a?c?'"
-"'abcd'      ilike 'a??d'"
-"'abcd'      ilike '?bc?'"
-"'abcd'      ilike 'ab**'"
-"'abcd'      ilike 'ab*?'"
-"'abcd'      ilike 'a***'"
-"'abcd'      ilike '**cd'"
-"'abcd'      ilike '*?cd'"
-"'abcd'      ilike '***d'"
-"'abcd'      ilike '?*?d'"
-"'abcd'      ilike '?*?d'"
-"'abcd'      ilike '*bc*'"
-"'abcd'      ilike '*bc?'"
-"'abcd'      ilike '*b??'"
-"'abcd'      ilike '?bc*'"
-"'abcd'      ilike '??c*'"
-"'abcd'      ilike '*b?*'"
-"'abcd'      ilike '*b*d'"
-"'abcd'      ilike 'a*c*'"
-"'abcd'      ilike '?*cd'"
-"'abcd'      ilike 'ab?*'"
-"'abcd'      ilike 'ab*?'"
-"'abcd'      ilike 'a?*d'"
-"'ab'        ilike 'a*'"
-"'ab'        ilike 'a?'"
-"'a'         ilike 'a*'"
-"'a'         ilike 'a?'"
-"'xalabcd'   ilike '*abcd*'"
-"'xablabcd'  ilike '*abcd*'"
-"'xabclabcd' ilike '*abcd*'"
-"'aaaaa'     ilike '*aa?'"
-"'abcd'      ilike 'xyzw'"
-"'abcd'      ilike 'xyz'"
-"'abc'       ilike 'xyzw'"
-"'abcd'      ilike 'ab?'"
-"'abcd'      ilike 'a?'"
-"~{var s := ~{var n := 1; var m := 2; if (n < m) 'n < m';  else 'n >= m'; }; (s == 'n < m')}"
-"~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <= m'; else 'n > m'; }; (s == 'n > m')}"
-"~{var s := ~{var n := 1; var m := 2; if (n < m) 'n < m';  else 'n >' + '= m'; }; (s == 'n < m')}"
-"~{var s := ~{var n := 1; var m := 2; if (n < m) 'n ' + '< m'; else 'n >= m'; }; (s == 'n < m')}"
-"~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <= m'; else 'n ' + '> m'; }; (s == 'n > m')}"
-"~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <' + '= m'; else 'n > m'; }; (s == 'n > m')}"
-"~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) r0; else r1; }; (s == 'n < m')}"
-"~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) r0 + ''; else r1 + ''; }; (s == 'n < m')}"
-"~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) '' + r0; else '' + r1; }; (s == 'n < m')}"
\ No newline at end of file
diff --git a/projects/exprtk/project.yaml b/projects/exprtk/project.yaml
deleted file mode 100644
index ac0747e..0000000
--- a/projects/exprtk/project.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-homepage: "https://www.partow.net/programming/exprtk/index.html"
-language: c++
-primary_contact: "exprtk.dev@gmail.com"
-auto_ccs:
-    - "exprtk.dev@gmail.com"
-fuzzing_engines:
-    - libfuzzer
-    - afl
-    - honggfuzz
-sanitizers:
-    - address
-    - undefined
-    - memory
-main_repo: 'https://github.com/ArashPartow/exprtk.git'
diff --git a/projects/fast-dds/Dockerfile b/projects/fast-dds/Dockerfile
deleted file mode 100644
index df5782e..0000000
--- a/projects/fast-dds/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt install -y autoconf automake
-RUN git clone --depth 1 https://github.com/leethomason/tinyxml2
-RUN git clone --depth 1 https://github.com/chriskohlhoff/asio/
-RUN git clone --depth 1 https://github.com/eProsima/Fast-CDR.git
-RUN git clone --depth 1 https://github.com/eProsima/foonathan_memory_vendor.git
-RUN git clone --depth 1 https://github.com/eProsima/Fast-DDS.git
-COPY patch.diff $SRC
-COPY build.sh $SRC
-WORKDIR $SRC/Fast-DDS
diff --git a/projects/fast-dds/build.sh b/projects/fast-dds/build.sh
deleted file mode 100755
index 6831dff..0000000
--- a/projects/fast-dds/build.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-(
-cd ../tinyxml2
-make -j$(nproc) all
-cp libtinyxml2.a /usr/local/lib/
-cp *.h /usr/local/include/
-)
-
-(
-cd ../asio/asio
-sh autogen.sh
-./configure
-make -j$(nproc) install
-)
-
-(
-cd ..
-mkdir Fast-CDR/build && cd Fast-CDR/build
-cmake .. -DBUILD_SHARED_LIBS=OFF
-cmake --build . --target install
-)
-
-(
-cd ..
-cd foonathan_memory_vendor
-mkdir build && cd build
-cmake .. -DBUILD_SHARED_LIBS=OFF
-cmake --build . --target install
-)
-
-# build project
-git apply ../patch.diff
-mkdir build && cd build
-cmake .. -DBUILD_SHARED_LIBS=OFF
-make -j $(nproc)
-cp src/cpp/fuzz* $OUT/
diff --git a/projects/fast-dds/patch.diff b/projects/fast-dds/patch.diff
deleted file mode 100644
index e4f0ba2..0000000
--- a/projects/fast-dds/patch.diff
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
-index b7fb777..615e955 100644
---- a/src/cpp/CMakeLists.txt
-+++ b/src/cpp/CMakeLists.txt
-@@ -484,6 +484,11 @@ elseif(NOT EPROSIMA_INSTALLER)
-     endif()
- endif()
- 
-+if(DEFINED ENV{LIB_FUZZING_ENGINE})
-+  add_executable(fuzz_processCDRMsg rtps/messages/fuzz_processCDRMsg.cpp)
-+  target_link_libraries(fuzz_processCDRMsg ${PROJECT_NAME} $ENV{LIB_FUZZING_ENGINE})
-+endif()
-+
- ###############################################################################
- # Packaging
- ###############################################################################
-diff --git a/src/cpp/rtps/messages/MessageReceiver.cpp b/src/cpp/rtps/messages/MessageReceiver.cpp
-index 962ca9b..0e82082 100644
---- a/src/cpp/rtps/messages/MessageReceiver.cpp
-+++ b/src/cpp/rtps/messages/MessageReceiver.cpp
-@@ -324,7 +324,11 @@ void MessageReceiver::processCDRMsg(
- 
-     reset();
- 
-+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-+    GuidPrefix_t participantGuidPrefix;
-+#else
-     GuidPrefix_t participantGuidPrefix = participant_->getGuid().guidPrefix;
-+#endif
-     dest_guid_prefix_ = participantGuidPrefix;
- 
-     msg->pos = 0; //Start reading at 0
-@@ -513,7 +517,9 @@ void MessageReceiver::processCDRMsg(
-         submessage->pos = next_msg_pos;
-     }
- 
-+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-     participant_->assert_remote_participant_liveliness(source_guid_prefix_);
-+#endif
- }
- 
- bool MessageReceiver::checkRTPSHeader(
-diff --git a/src/cpp/rtps/messages/fuzz_processCDRMsg.cpp b/src/cpp/rtps/messages/fuzz_processCDRMsg.cpp
-new file mode 100644
-index 0000000..6a71817
---- /dev/null
-+++ b/src/cpp/rtps/messages/fuzz_processCDRMsg.cpp
-@@ -0,0 +1,26 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <stdint.h>
-+#include <stdarg.h>
-+#include <string.h>
-+
-+#include <fastrtps/rtps/messages/MessageReceiver.h>
-+#include <fastdds/rtps/attributes/RTPSParticipantAttributes.h>
-+
-+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-+    const eprosima::fastrtps::rtps::Locator_t remoteLocator;
-+    eprosima::fastrtps::rtps::MessageReceiver* rcv = new eprosima::fastrtps::rtps::MessageReceiver(NULL, 4096);
-+
-+    eprosima::fastrtps::rtps::CDRMessage_t msg(0);
-+    msg.wraps = true;
-+    msg.buffer = const_cast<eprosima::fastrtps::rtps::octet*>(data);
-+    msg.length = size;
-+    msg.max_size = size;
-+    msg.reserved_size = size;
-+
-+    // TODO: Should we unlock in case UnregisterReceiver is called from callback ?
-+    rcv->processCDRMsg(remoteLocator, &msg);
-+    delete rcv;
-+    return 0;
-+}
-+
diff --git a/projects/fast-dds/project.yaml b/projects/fast-dds/project.yaml
deleted file mode 100644
index 970e0b1..0000000
--- a/projects/fast-dds/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://www.eprosima.com/"
-language: c++
-primary_contact: "miguelcompany@eprosima.com"
-auto_ccs:
-- "p.antoine@catenacyber.fr"
-sanitizers:
-- address
-- undefined
-main_repo: 'https://github.com/eProsima/Fast-DDS.git'
diff --git a/projects/fasthttp/Dockerfile b/projects/fasthttp/Dockerfile
deleted file mode 100644
index 3684706..0000000
--- a/projects/fasthttp/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/valyala/fasthttp
-
-COPY build.sh $SRC/
-WORKDIR $SRC/fasthttp
diff --git a/projects/fasthttp/build.sh b/projects/fasthttp/build.sh
deleted file mode 100755
index 59aec49..0000000
--- a/projects/fasthttp/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-
-
-ls fuzzit/ | while read target
-do
-    compile_go_fuzzer github.com/valyala/fasthttp/fuzzit/$target Fuzz fuzz_$target gofuzz
-done
diff --git a/projects/fasthttp/project.yaml b/projects/fasthttp/project.yaml
deleted file mode 100644
index 19b9113..0000000
--- a/projects/fasthttp/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/valyala/fasthttp"
-primary_contact: "erik@dubbelboer.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/valyala/fasthttp'
diff --git a/projects/fastjson/Dockerfile b/projects/fastjson/Dockerfile
deleted file mode 100644
index 9c19614..0000000
--- a/projects/fastjson/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/valyala/fastjson
-
-COPY build.sh $SRC/
-WORKDIR $SRC/fastjson
diff --git a/projects/fastjson/build.sh b/projects/fastjson/build.sh
deleted file mode 100755
index 673688a..0000000
--- a/projects/fastjson/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-compile_go_fuzzer github.com/valyala/fastjson Fuzz fuzz
diff --git a/projects/fastjson/project.yaml b/projects/fastjson/project.yaml
deleted file mode 100644
index 7c2895a..0000000
--- a/projects/fastjson/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/valyala/fastjson"
-primary_contact: "valyala@gmail.com"
-auto_ccs :
-- "adam@adalogics.com"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/valyala/fastjson'
diff --git a/projects/fastjson2/Dockerfile b/projects/fastjson2/Dockerfile
deleted file mode 100644
index e8c9f4e..0000000
--- a/projects/fastjson2/Dockerfile
+++ /dev/null
@@ -1,31 +0,0 @@
-
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y maven
-
-RUN git clone --depth 1 https://github.com/google/fuzzing && \
-    cat fuzzing/dictionaries/json.dict > $SRC/JsonFuzzer.dict
-
-RUN git clone --depth 1 https://github.com/dvyukov/go-fuzz-corpus && \
-    zip -q $SRC/JsonFuzzer_seed_corpus.zip go-fuzz-corpus/json/corpus/*
-
-RUN git clone --depth 1 https://github.com/alibaba/fastjson
-
-COPY build.sh $SRC/
-COPY JsonFuzzer.java $SRC/
-WORKDIR $SRC/fastjson
diff --git a/projects/fastjson2/JsonFuzzer.java b/projects/fastjson2/JsonFuzzer.java
deleted file mode 100644
index 9ac5cab..0000000
--- a/projects/fastjson2/JsonFuzzer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONException;
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-
-public class JsonFuzzer {
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    try {
-      JSON.parse(data.consumeRemainingAsString());
-    } catch (JSONException ignored) {
-    }
-  }
-}
diff --git a/projects/fastjson2/build.sh b/projects/fastjson2/build.sh
deleted file mode 100644
index 121c324..0000000
--- a/projects/fastjson2/build.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Copy seed corpus and dictionary.
-mv $SRC/{*.zip,*.dict} $OUT
-
-mvn package -Dmaven.test.skip=true -Djdk.version=15
-CURRENT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
- -Dexpression=project.version -q -DforceStdout)
-cp "target/fastjson-$CURRENT_VERSION.jar" $OUT/fastjson.jar
-
-PROJECT_JARS="fastjson.jar"
-
-# The classpath at build-time includes the project jars in $OUT as well as the
-# Jazzer API.
-BUILD_CLASSPATH=$(echo $PROJECT_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
-
-# All .jar and .class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=$(echo $PROJECT_JARS | xargs printf -- "\$this_dir/%s:"):\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  # Create an execution wrapper that executes Jazzer with the correct arguments.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/fastjson2/project.yaml b/projects/fastjson2/project.yaml
deleted file mode 100644
index 3fcba92..0000000
--- a/projects/fastjson2/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/alibaba/fastjson"
-language: jvm
-primary_contact: "shaojin.wensj@alibaba-inc.com"
-auto_ccs:
-  - "meumertzheim@code-intelligence.com"
-fuzzing_engines:
-  - libfuzzer
-main_repo: "https://github.com/alibaba/fastjson"
-sanitizers:
-  - address
diff --git a/projects/ffmpeg/Dockerfile b/projects/ffmpeg/Dockerfile
index bb0bb58..5226dd7 100644
--- a/projects/ffmpeg/Dockerfile
+++ b/projects/ffmpeg/Dockerfile
@@ -15,13 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 ADD bionic.list /etc/apt/sources.list.d/bionic.list
 ADD nasm_apt.pin /etc/apt/preferences
 RUN apt-get update && apt-get install -y make autoconf automake libtool build-essential \
     libass-dev libfreetype6-dev libsdl1.2-dev \
     libvdpau-dev libxcb1-dev libxcb-shm0-dev \
     pkg-config texinfo libbz2-dev zlib1g-dev yasm cmake mercurial wget \
-    xutils-dev libpciaccess-dev nasm rsync
+    xutils-dev libpciaccess-dev nasm
 
 RUN git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
 
@@ -29,12 +30,12 @@
 RUN git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git
 RUN git clone --depth 1 git://anongit.freedesktop.org/xorg/lib/libXext
 RUN git clone --depth 1 git://anongit.freedesktop.org/git/xorg/lib/libXfixes
-RUN git clone --depth 1 https://github.com/intel/libva
+RUN git clone --depth 1 https://github.com/01org/libva
 RUN git clone --depth 1 -b libvdpau-1.2 git://people.freedesktop.org/~aplattner/libvdpau
 RUN git clone --depth 1 https://chromium.googlesource.com/webm/libvpx
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/ogg.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/opus.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/theora.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/vorbis.git
+RUN git clone --depth 1 git://git.xiph.org/ogg.git
+RUN git clone --depth 1 git://git.xiph.org/opus.git
+RUN git clone --depth 1 git://git.xiph.org/theora.git
+RUN git clone --depth 1 git://git.xiph.org/vorbis.git
 
 COPY build.sh group_seed_corpus.py $SRC/
diff --git a/projects/ffmpeg/build.sh b/projects/ffmpeg/build.sh
index 90da59c..50a4354 100755
--- a/projects/ffmpeg/build.sh
+++ b/projects/ffmpeg/build.sh
@@ -139,7 +139,6 @@
     --enable-nonfree \
     --disable-muxers \
     --disable-protocols \
-    --disable-demuxer=rtp,rtsp,sdp \
     --disable-devices \
     --disable-shared
 make clean
@@ -150,8 +149,8 @@
 # TODO: implement a better way to maintain a minimized seed corpora
 # for all targets. As of 2017-05-04 now the combined size of corpora
 # is too big for ClusterFuzz (over 10Gb compressed data).
-export TEST_SAMPLES_PATH=$SRC/ffmpeg/fate-suite/
-make fate-rsync SAMPLES=$TEST_SAMPLES_PATH
+# export TEST_SAMPLES_PATH=$SRC/ffmpeg/fate-suite/
+# make fate-rsync SAMPLES=$TEST_SAMPLES_PATH
 
 # Build the fuzzers.
 cd $SRC/ffmpeg
@@ -186,56 +185,6 @@
 make tools/target_dem_fuzzer
 mv tools/target_dem_fuzzer $OUT/${fuzzer_name}
 
-# We do not need raw reference files for the muxer
-rm `find fate-suite -name '*.s16'`
-rm `find fate-suite -name '*.dec'`
-rm `find fate-suite -name '*.pcm'`
-
-zip -r $OUT/${fuzzer_name}_seed_corpus.zip fate-suite
-
-# Build fuzzer for demuxer fed at IO level
-fuzzer_name=ffmpeg_IO_DEMUXER_fuzzer
-make tools/target_io_dem_fuzzer
-mv tools/target_io_dem_fuzzer $OUT/${fuzzer_name}
-
-#Build fuzzers for individual demuxers
-PKG_CONFIG_PATH="$FFMPEG_DEPS_PATH/lib/pkgconfig" ./configure \
-    --cc=$CC --cxx=$CXX --ld="$CXX $CXXFLAGS -std=c++11" \
-    --extra-cflags="-I$FFMPEG_DEPS_PATH/include" \
-    --extra-ldflags="-L$FFMPEG_DEPS_PATH/lib" \
-    --prefix="$FFMPEG_DEPS_PATH" \
-    --pkg-config-flags="--static" \
-    --enable-ossfuzz \
-    --libfuzzer=$LIB_FUZZING_ENGINE \
-    --optflags=-O1 \
-    --enable-gpl \
-    --disable-muxers \
-    --disable-protocols \
-    --disable-devices \
-    --disable-shared \
-    --disable-encoders \
-    --disable-filters \
-    --disable-muxers  \
-    --disable-parsers  \
-    --disable-decoders  \
-    --disable-hwaccels  \
-    --disable-bsfs  \
-    --disable-vaapi  \
-    --disable-vdpau    \
-    --disable-crystalhd  \
-    --disable-v4l2_m2m  \
-    --disable-cuda_llvm  \
-    --enable-demuxers \
-    --disable-demuxer=rtp,rtsp,sdp \
-
-CONDITIONALS=`grep 'DEMUXER 1$' config.h | sed 's/#define CONFIG_\(.*\)_DEMUXER 1/\1/'`
-for c in $CONDITIONALS ; do
-  fuzzer_name=ffmpeg_dem_${c}_fuzzer
-  symbol=`echo $c | sed "s/.*/\L\0/"`
-  make tools/target_dem_${symbol}_fuzzer
-  mv tools/target_dem_${symbol}_fuzzer $OUT/${fuzzer_name}
-done
-
 # Find relevant corpus in test samples and archive them for every fuzzer.
 #cd $SRC
 #python group_seed_corpus.py $TEST_SAMPLES_PATH $OUT/
diff --git a/projects/ffmpeg/project.yaml b/projects/ffmpeg/project.yaml
index a33dda2..d194285 100644
--- a/projects/ffmpeg/project.yaml
+++ b/projects/ffmpeg/project.yaml
@@ -1,12 +1,10 @@
-homepage: "https://www.ffmpeg.org"
-language: c++
+homepage: "https://www.ffmpeg.org/"
 primary_contact: "ffmpeg-security@ffmpeg.org"
 auto_ccs:
  - "michaelni@gmx.at"
  - "michael@niedermayer.cc"
  - "jrummell@google.com"
  - "tfoucu@google.com"
- - "twsmith@mozilla.com"
+ - "cdiehl@mozilla.com"
  - "kempfjb@gmail.com"
 selective_unpack: true
-main_repo: 'https://git.ffmpeg.org/ffmpeg.git'
diff --git a/projects/file/Dockerfile b/projects/file/Dockerfile
index b6f6408..57c5479 100644
--- a/projects/file/Dockerfile
+++ b/projects/file/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mike.aizatsky@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool shtool
 RUN git clone --depth 1 https://github.com/file/file.git
 WORKDIR file
diff --git a/projects/file/project.yaml b/projects/file/project.yaml
index d051847..5cf7dc0 100644
--- a/projects/file/project.yaml
+++ b/projects/file/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.darwinsys.com/file/"
-language: c++
 primary_contact: "zoulasc@gmail.com"
 sanitizers:
   - address
@@ -8,4 +7,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/file/file.git'
diff --git a/projects/fio/Dockerfile b/projects/fio/Dockerfile
deleted file mode 100644
index 91c8dbf..0000000
--- a/projects/fio/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-RUN git clone --depth 1 https://github.com/axboe/fio.git fio
-WORKDIR $SRC/fio
-COPY build.sh $SRC/
diff --git a/projects/fio/build.sh b/projects/fio/build.sh
deleted file mode 100755
index 0495cf4..0000000
--- a/projects/fio/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-export LDFLAGS="$CXXFLAGS"
-./configure
-make -j$(nproc)
-cp t/fuzz/fuzz_parseini $OUT/
-
-# builds corpus
-zip -r $OUT/fuzz_parseini_seed_corpus.zip examples
diff --git a/projects/fio/project.yaml b/projects/fio/project.yaml
deleted file mode 100644
index b87c366..0000000
--- a/projects/fio/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "http://git.kernel.dk/fio.git"
-language: c++
-primary_contact: "axboe@kernel.dk"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-  - "sitsofe@gmail.com"
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/axboe/fio.git'
diff --git a/projects/firefox/Dockerfile b/projects/firefox/Dockerfile
index 1d19ca8..abc077c 100644
--- a/projects/firefox/Dockerfile
+++ b/projects/firefox/Dockerfile
@@ -15,22 +15,15 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pdknsk@gmail.com
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  python \
+  gawk \
+  software-properties-common
 RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
 RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
-  gawk \
-  libstdc++6 \
-  m4 \
-  python \
-  software-properties-common
-
-# This wrapper of cargo seems to interfere with our build system.
-RUN rm -f /usr/local/bin/cargo
-
+  libstdc++6
 RUN git clone --depth 1 https://github.com/mozilla/gecko-dev mozilla-central
 RUN git clone --depth 1 https://github.com/mozillasecurity/fuzzdata
 WORKDIR mozilla-central
-# Install OS dependencies.
-# Will be re-run in build.sh to install missing dependencies.
-ENV SHELL /bin/bash
-RUN ./mach --no-interactive bootstrap --application-choice browser
 COPY build.sh target.c *.options mozconfig.* $SRC/
diff --git a/projects/firefox/build.sh b/projects/firefox/build.sh
index 8788e19..b001a42 100755
--- a/projects/firefox/build.sh
+++ b/projects/firefox/build.sh
@@ -24,7 +24,6 @@
   ContentParentIPC
   CompositorManagerParentIPC
   ContentSecurityPolicyParser
-  FeaturePolicyParser
   # Image
   ImageGIF
   ImageICO
@@ -42,26 +41,13 @@
 export MOZ_OBJDIR=$WORK/obj-fuzz
 export MOZCONFIG=$SRC/mozconfig.$SANITIZER
 
-# Without this, a host tool used during Rust part of the build will fail
-export ASAN_OPTIONS="detect_leaks=0"
-
-# Install remaining dependencies.
+# Install dependencies. Note that bootstrap installs cargo, which must be added
+# to PATH via source. In a successive run (for a different sanitizer), the
+# cargo installation carries over, but bootstrap fails if cargo is not in PATH.
 export SHELL=/bin/bash
-
-# Firefox might not be buildable on the latest Rust Nightly, so we should try
-# to use the same version that we use in our CI.
-RUST_NIGHTLY_VERSION=$(sed -n 's/^.*--channel.*\(nightly-[0-9-]*\).*$/\1/p' \
-  $SRC/mozilla-central/taskcluster/ci/toolchain/rust.yml
-)
-
-rustup toolchain install ${RUST_NIGHTLY_VERSION}
-rustup default ${RUST_NIGHTLY_VERSION}-x86_64-unknown-linux-gnu
-
-./mach --no-interactive bootstrap --application-choice browser
-
-# Skip patches for now
-rm tools/fuzzing/libfuzzer/patches/*.patch
-touch tools/fuzzing/libfuzzer/patches/dummy.patch
+[[ -f "$HOME/.cargo/env" ]] && source $HOME/.cargo/env
+./mach bootstrap --no-interactive --application-choice browser
+source $HOME/.cargo/env
 
 # Update internal libFuzzer.
 (cd tools/fuzzing/libfuzzer && ./clone_libfuzzer.sh HEAD)
diff --git a/projects/firefox/mozconfig.address b/projects/firefox/mozconfig.address
index 0bc2c36..c9eb33d 100644
--- a/projects/firefox/mozconfig.address
+++ b/projects/firefox/mozconfig.address
@@ -1,7 +1,4 @@
 . $SRC/mozconfig.coverage
 
 ac_add_options --enable-address-sanitizer
-
-# Don't use standard CFLAGS/CXXFLAGS provided by oss-fuzz
-export CFLAGS=""
-export CXXFLAGS=""
+mk_add_options CFLAGS= CXXFLAGS=
diff --git a/projects/firefox/mozconfig.coverage b/projects/firefox/mozconfig.coverage
index a99a377..8178d90 100644
--- a/projects/firefox/mozconfig.coverage
+++ b/projects/firefox/mozconfig.coverage
@@ -1,4 +1,3 @@
-mk_add_options AUTOCLOBBER=1
 ac_add_options --disable-debug
 ac_add_options --disable-elf-hack
 ac_add_options --disable-jemalloc
diff --git a/projects/firefox/project.yaml b/projects/firefox/project.yaml
index 350f84c..ad96d6b 100644
--- a/projects/firefox/project.yaml
+++ b/projects/firefox/project.yaml
@@ -1,13 +1,14 @@
 homepage: "https://www.mozilla.org/firefox/"
-language: c++
 primary_contact: "choller@mozilla.com"
 auto_ccs:
   - twsmith@mozilla.com
+  - cdiehl@mozilla.com
   - sledru@mozilla.com
 fuzzing_engines:
   - libfuzzer
 sanitizers:
   - address
+  - undefined
 run_tests: False
 # libraries from $OUT/firefox/dependentlibs.list
 coverage_extra_args: >
diff --git a/projects/firestore/Dockerfile b/projects/firestore/Dockerfile
index bb024aa..b2f1376 100644
--- a/projects/firestore/Dockerfile
+++ b/projects/firestore/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER varconst@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool wget golang python python-protobuf python-six
 RUN git clone --depth 1 https://github.com/firebase/firebase-ios-sdk.git
 COPY build.sh $SRC/
diff --git a/projects/firestore/build.sh b/projects/firestore/build.sh
index 7ada1b9..ec9a429 100755
--- a/projects/firestore/build.sh
+++ b/projects/firestore/build.sh
@@ -15,7 +15,17 @@
 #
 ################################################################################
 
+# The cmake version that is available on Ubuntu 16.04 is 3.5.1. While Firestore
+# itself requires cmake 3.5, it depends on leveldb which requires cmake 3.9
+# (https://github.com/google/leveldb/blob/master/CMakeLists.txt#L5).
+# There is an open issue (https://github.com/google/leveldb/issues/607) to
+# lower the required cmake version of leveldb. Therefore, we need to download
+# a newer version of cmake until leveldb lowers the required version or a newer
+# cmake version becomes available in the OSS Fuzz environment.
 cd $WORK
+wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz
+tar -xzf cmake-3.12.0-Linux-x86_64.tar.gz
+rm cmake-3.12.0-Linux-x86_64.tar.gz
 
 # Disable UBSan vptr since Firestore depends on other libraries that are built
 # with -fno-rtti.
@@ -26,7 +36,7 @@
 # fuzzing library defined in ${LIB_FUZZING_ENGINE}.
 cd $SRC/firebase-ios-sdk
 mkdir build && cd build
-cmake -DFUZZING=ON ..
+$WORK/cmake-3.12.0-Linux-x86_64/bin/cmake -DFUZZING=ON ..
 make -j$(nproc)
 
 # Copy fuzzing targets, dictionaries, and zipped corpora to $OUT.
diff --git a/projects/firestore/project.yaml b/projects/firestore/project.yaml
index 5f3f901..d246ddb 100644
--- a/projects/firestore/project.yaml
+++ b/projects/firestore/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://firebase.google.com/docs/firestore/"
-language: c++
 primary_contact: "varconst@google.com"
 auto_ccs:
   - "varconst@google.com"
@@ -7,4 +6,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/firebase/firebase-ios-sdk.git'
diff --git a/projects/flac/Dockerfile b/projects/flac/Dockerfile
index 5af9225..2111fb7 100644
--- a/projects/flac/Dockerfile
+++ b/projects/flac/Dockerfile
@@ -15,11 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool libtool-bin pkg-config gettext sudo default-jdk
+RUN apt-get update && apt-get install -y make autoconf automake libtool libtool-bin pkg-config gettext sudo
 RUN git clone --depth 1 https://github.com/xiph/flac.git
 RUN git clone --depth 1 https://github.com/xiph/ogg.git
-RUN git clone --depth 1 https://github.com/google/ExoPlayer.git
 RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
 RUN git clone --depth 1 https://github.com/guidovranken/flac-fuzzers.git
-COPY fuzzer_exo.cpp $SRC/flac-fuzzers
 COPY build.sh $SRC/
diff --git a/projects/flac/build.sh b/projects/flac/build.sh
index c94ba22..f4ef563 100755
--- a/projects/flac/build.sh
+++ b/projects/flac/build.sh
@@ -53,8 +53,6 @@
 
 # Build fuzzers
 cd $SRC/flac-fuzzers/
-$CXX $CXXFLAGS -I $SRC/flac/include/ -I $SRC/ExoPlayer/extensions/flac/src/main/jni/ -I /usr/lib/jvm/java-8-openjdk-amd64/include/ -I /usr/lib/jvm/java-8-openjdk-amd64/include/linux/ fuzzer_exo.cpp \
-    $SRC/flac/src/libFLAC++/.libs/libFLAC++.a $SRC/flac/src/libFLAC/.libs/libFLAC.a $SRC/libogg-install/lib/libogg.a $LIB_FUZZING_ENGINE -o $OUT/fuzzer_exo
 $CXX $CXXFLAGS -I $SRC/flac/include/ fuzzer_decoder.cpp $SRC/flac/src/libFLAC++/.libs/libFLAC++.a $SRC/flac/src/libFLAC/.libs/libFLAC.a $SRC/libogg-install/lib/libogg.a $LIB_FUZZING_ENGINE -o $OUT/fuzzer_decoder
 $CXX $CXXFLAGS -I $SRC/flac/include/ fuzzer_encoder.cpp $SRC/flac/src/libFLAC++/.libs/libFLAC++.a $SRC/flac/src/libFLAC/.libs/libFLAC.a $SRC/libogg-install/lib/libogg.a $LIB_FUZZING_ENGINE -o $OUT/fuzzer_encoder
 cp fuzzer_encoder.dict $OUT/
diff --git a/projects/flac/fuzzer_exo.cpp b/projects/flac/fuzzer_exo.cpp
deleted file mode 100644
index 9c0eac6..0000000
--- a/projects/flac/fuzzer_exo.cpp
+++ /dev/null
@@ -1,477 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <assert.h>
-#include <string>
-
-#include "include/flac_parser.h"
-
-#include <jni.h>
-
-// #include <android/log.h>
-
-#include <cassert>
-#include <cstdlib>
-#include <cstring>
-
-#define LOG_TAG "FLACParser"
-
-#define LITERAL_TO_STRING_INTERNAL(x) #x
-#define LITERAL_TO_STRING(x) LITERAL_TO_STRING_INTERNAL(x)
-
-#define CHECK(x) if (!(x)) return 0;
-
-const int endian = 1;
-#define isBigEndian() (*(reinterpret_cast<const char *>(&endian)) == 0)
-
-// The FLAC parser calls our C++ static callbacks using C calling conventions,
-// inside FLAC__stream_decoder_process_until_end_of_metadata
-// and FLAC__stream_decoder_process_single.
-// We immediately then call our corresponding C++ instance methods
-// with the same parameter list, but discard redundant information.
-
-FLAC__StreamDecoderReadStatus FLACParser::read_callback(
-    const FLAC__StreamDecoder * /* decoder */, FLAC__byte buffer[],
-    size_t *bytes, void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)
-      ->readCallback(buffer, bytes);
-}
-
-FLAC__StreamDecoderSeekStatus FLACParser::seek_callback(
-    const FLAC__StreamDecoder * /* decoder */,
-    FLAC__uint64 absolute_byte_offset, void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)
-      ->seekCallback(absolute_byte_offset);
-}
-
-FLAC__StreamDecoderTellStatus FLACParser::tell_callback(
-    const FLAC__StreamDecoder * /* decoder */,
-    FLAC__uint64 *absolute_byte_offset, void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)
-      ->tellCallback(absolute_byte_offset);
-}
-
-FLAC__StreamDecoderLengthStatus FLACParser::length_callback(
-    const FLAC__StreamDecoder * /* decoder */, FLAC__uint64 *stream_length,
-    void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)
-      ->lengthCallback(stream_length);
-}
-
-FLAC__bool FLACParser::eof_callback(const FLAC__StreamDecoder * /* decoder */,
-                                    void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)->eofCallback();
-}
-
-FLAC__StreamDecoderWriteStatus FLACParser::write_callback(
-    const FLAC__StreamDecoder * /* decoder */, const FLAC__Frame *frame,
-    const FLAC__int32 *const buffer[], void *client_data) {
-  return reinterpret_cast<FLACParser *>(client_data)
-      ->writeCallback(frame, buffer);
-}
-
-void FLACParser::metadata_callback(const FLAC__StreamDecoder * /* decoder */,
-                                   const FLAC__StreamMetadata *metadata,
-                                   void *client_data) {
-  reinterpret_cast<FLACParser *>(client_data)->metadataCallback(metadata);
-}
-
-void FLACParser::error_callback(const FLAC__StreamDecoder * /* decoder */,
-                                FLAC__StreamDecoderErrorStatus status,
-                                void *client_data) {
-  reinterpret_cast<FLACParser *>(client_data)->errorCallback(status);
-}
-
-// These are the corresponding callbacks with C++ calling conventions
-
-FLAC__StreamDecoderReadStatus FLACParser::readCallback(FLAC__byte buffer[],
-                                                       size_t *bytes) {
-  size_t requested = *bytes;
-  ssize_t actual = mDataSource->readAt(mCurrentPos, buffer, requested);
-  if (0 > actual) {
-    *bytes = 0;
-    return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
-  } else if (0 == actual) {
-    *bytes = 0;
-    mEOF = true;
-    return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
-  } else {
-    assert(actual <= requested);
-    *bytes = actual;
-    mCurrentPos += actual;
-    return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
-  }
-}
-
-FLAC__StreamDecoderSeekStatus FLACParser::seekCallback(
-    FLAC__uint64 absolute_byte_offset) {
-  mCurrentPos = absolute_byte_offset;
-  mEOF = false;
-  return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
-}
-
-FLAC__StreamDecoderTellStatus FLACParser::tellCallback(
-    FLAC__uint64 *absolute_byte_offset) {
-  *absolute_byte_offset = mCurrentPos;
-  return FLAC__STREAM_DECODER_TELL_STATUS_OK;
-}
-
-FLAC__StreamDecoderLengthStatus FLACParser::lengthCallback(
-    FLAC__uint64 *stream_length) {
-  return FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED;
-}
-
-FLAC__bool FLACParser::eofCallback() { return mEOF; }
-
-FLAC__StreamDecoderWriteStatus FLACParser::writeCallback(
-    const FLAC__Frame *frame, const FLAC__int32 *const buffer[]) {
-  if (mWriteRequested) {
-    mWriteRequested = false;
-    // FLAC parser doesn't free or realloc buffer until next frame or finish
-    mWriteHeader = frame->header;
-    mWriteBuffer = buffer;
-    mWriteCompleted = true;
-    return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
-  } else {
-    return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
-  }
-}
-
-void FLACParser::metadataCallback(const FLAC__StreamMetadata *metadata) {
-  switch (metadata->type) {
-    case FLAC__METADATA_TYPE_STREAMINFO:
-      if (!mStreamInfoValid) {
-        mStreamInfo = metadata->data.stream_info;
-        mStreamInfoValid = true;
-      } else {
-        break;
-      }
-      break;
-    case FLAC__METADATA_TYPE_SEEKTABLE:
-      mSeekTable = &metadata->data.seek_table;
-      break;
-    case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-      if (!mVorbisCommentsValid) {
-        FLAC__StreamMetadata_VorbisComment vorbisComment =
-            metadata->data.vorbis_comment;
-        for (FLAC__uint32 i = 0; i < vorbisComment.num_comments; ++i) {
-          FLAC__StreamMetadata_VorbisComment_Entry vorbisCommentEntry =
-              vorbisComment.comments[i];
-          if (vorbisCommentEntry.entry != NULL) {
-            std::string comment(
-                reinterpret_cast<char *>(vorbisCommentEntry.entry),
-                vorbisCommentEntry.length);
-            mVorbisComments.push_back(comment);
-          }
-        }
-        mVorbisCommentsValid = true;
-      } else {
-        break;
-      }
-      break;
-    case FLAC__METADATA_TYPE_PICTURE: {
-      const FLAC__StreamMetadata_Picture *parsedPicture =
-          &metadata->data.picture;
-      FlacPicture picture;
-      picture.mimeType.assign(std::string(parsedPicture->mime_type));
-      picture.description.assign(
-          std::string((char *)parsedPicture->description));
-      picture.data.assign(parsedPicture->data,
-                          parsedPicture->data + parsedPicture->data_length);
-      picture.width = parsedPicture->width;
-      picture.height = parsedPicture->height;
-      picture.depth = parsedPicture->depth;
-      picture.colors = parsedPicture->colors;
-      picture.type = parsedPicture->type;
-      mPictures.push_back(picture);
-      mPicturesValid = true;
-      break;
-    }
-    default:
-      break;
-  }
-}
-
-void FLACParser::errorCallback(FLAC__StreamDecoderErrorStatus status) {
-  mErrorStatus = status;
-}
-
-// Copy samples from FLAC native 32-bit non-interleaved to
-// correct bit-depth (non-zero padded), interleaved.
-// These are candidates for optimization if needed.
-static void copyToByteArrayBigEndian(int8_t *dst, const int *const *src,
-                                     unsigned bytesPerSample, unsigned nSamples,
-                                     unsigned nChannels) {
-  for (unsigned i = 0; i < nSamples; ++i) {
-    for (unsigned c = 0; c < nChannels; ++c) {
-      // point to the first byte of the source address
-      // and then skip the first few bytes (most significant bytes)
-      // depending on the bit depth
-      const int8_t *byteSrc =
-          reinterpret_cast<const int8_t *>(&src[c][i]) + 4 - bytesPerSample;
-      memcpy(dst, byteSrc, bytesPerSample);
-      dst = dst + bytesPerSample;
-    }
-  }
-}
-
-static void copyToByteArrayLittleEndian(int8_t *dst, const int *const *src,
-                                        unsigned bytesPerSample,
-                                        unsigned nSamples, unsigned nChannels) {
-  for (unsigned i = 0; i < nSamples; ++i) {
-    for (unsigned c = 0; c < nChannels; ++c) {
-      // with little endian, the most significant bytes will be at the end
-      // copy the bytes in little endian will remove the most significant byte
-      // so we are good here.
-      memcpy(dst, &(src[c][i]), bytesPerSample);
-      dst = dst + bytesPerSample;
-    }
-  }
-}
-
-static void copyTrespass(int8_t * /* dst */, const int *const * /* src */,
-                         unsigned /* bytesPerSample */, unsigned /* nSamples */,
-                         unsigned /* nChannels */) {
-  ;
-}
-
-// FLACParser
-
-FLACParser::FLACParser(DataSource *source)
-    : mDataSource(source),
-      mCopy(copyTrespass),
-      mDecoder(NULL),
-      mCurrentPos(0LL),
-      mEOF(false),
-      mStreamInfoValid(false),
-      mSeekTable(NULL),
-      firstFrameOffset(0LL),
-      mVorbisCommentsValid(false),
-      mPicturesValid(false),
-      mWriteRequested(false),
-      mWriteCompleted(false),
-      mWriteBuffer(NULL),
-      mErrorStatus((FLAC__StreamDecoderErrorStatus)-1) {
-  memset(&mStreamInfo, 0, sizeof(mStreamInfo));
-  memset(&mWriteHeader, 0, sizeof(mWriteHeader));
-}
-
-FLACParser::~FLACParser() {
-  if (mDecoder != NULL) {
-    FLAC__stream_decoder_delete(mDecoder);
-    mDecoder = NULL;
-  }
-}
-
-bool FLACParser::init() {
-  // setup libFLAC parser
-  mDecoder = FLAC__stream_decoder_new();
-  if (mDecoder == NULL) {
-    // The new should succeed, since probably all it does is a malloc
-    // that always succeeds in Android.  But to avoid dependence on the
-    // libFLAC internals, we check and log here.
-    return false;
-  }
-  FLAC__stream_decoder_set_md5_checking(mDecoder, false);
-  FLAC__stream_decoder_set_metadata_ignore_all(mDecoder);
-  FLAC__stream_decoder_set_metadata_respond(mDecoder,
-                                            FLAC__METADATA_TYPE_STREAMINFO);
-  FLAC__stream_decoder_set_metadata_respond(mDecoder,
-                                            FLAC__METADATA_TYPE_SEEKTABLE);
-  FLAC__stream_decoder_set_metadata_respond(mDecoder,
-                                            FLAC__METADATA_TYPE_VORBIS_COMMENT);
-  FLAC__stream_decoder_set_metadata_respond(mDecoder,
-                                            FLAC__METADATA_TYPE_PICTURE);
-  FLAC__StreamDecoderInitStatus initStatus;
-  initStatus = FLAC__stream_decoder_init_stream(
-      mDecoder, read_callback, seek_callback, tell_callback, length_callback,
-      eof_callback, write_callback, metadata_callback, error_callback,
-      reinterpret_cast<void *>(this));
-  if (initStatus != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
-    // A failure here probably indicates a programming error and so is
-    // unlikely to happen. But we check and log here similarly to above.
-    return false;
-  }
-  return true;
-}
-
-bool FLACParser::decodeMetadata() {
-  // parse all metadata
-  if (!FLAC__stream_decoder_process_until_end_of_metadata(mDecoder)) {
-    return false;
-  }
-  // store first frame offset
-  FLAC__stream_decoder_get_decode_position(mDecoder, &firstFrameOffset);
-
-  if (mStreamInfoValid) {
-    // check channel count
-    if (getChannels() == 0 || getChannels() > 8) {
-      return false;
-    }
-    // check bit depth
-    switch (getBitsPerSample()) {
-      case 8:
-      case 16:
-      case 24:
-      case 32:
-        break;
-      default:
-        return false;
-    }
-    // configure the appropriate copy function based on device endianness.
-    if (isBigEndian()) {
-      mCopy = copyToByteArrayBigEndian;
-    } else {
-      mCopy = copyToByteArrayLittleEndian;
-    }
-  } else {
-    return false;
-  }
-  return true;
-}
-
-size_t FLACParser::readBuffer(void *output, size_t output_size) {
-  mWriteRequested = true;
-  mWriteCompleted = false;
-
-  if (!FLAC__stream_decoder_process_single(mDecoder)) {
-    return -1;
-  }
-  if (!mWriteCompleted) {
-    if (FLAC__stream_decoder_get_state(mDecoder) !=
-        FLAC__STREAM_DECODER_END_OF_STREAM) {
-    }
-    return -1;
-  }
-
-  // verify that block header keeps the promises made by STREAMINFO
-  unsigned blocksize = mWriteHeader.blocksize;
-  if (blocksize == 0 || blocksize > getMaxBlockSize()) {
-    return -1;
-  }
-  if (mWriteHeader.sample_rate != getSampleRate() ||
-      mWriteHeader.channels != getChannels() ||
-      mWriteHeader.bits_per_sample != getBitsPerSample()) {
-    return -1;
-  }
-
-  unsigned bytesPerSample = getBitsPerSample() >> 3;
-  size_t bufferSize = blocksize * getChannels() * bytesPerSample;
-  if (bufferSize > output_size) {
-    return -1;
-  }
-
-  // copy PCM from FLAC write buffer to our media buffer, with interleaving.
-  (*mCopy)(reinterpret_cast<int8_t *>(output), mWriteBuffer, bytesPerSample,
-           blocksize, getChannels());
-
-  // fill in buffer metadata
-  CHECK(mWriteHeader.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
-
-  return bufferSize;
-}
-
-bool FLACParser::getSeekPositions(int64_t timeUs,
-                                  std::array<int64_t, 4> &result) {
-  if (!mSeekTable) {
-    return false;
-  }
-
-  unsigned sampleRate = getSampleRate();
-  int64_t totalSamples = getTotalSamples();
-  int64_t targetSampleNumber = (timeUs * sampleRate) / 1000000LL;
-  if (targetSampleNumber >= totalSamples) {
-    targetSampleNumber = totalSamples - 1;
-  }
-
-  FLAC__StreamMetadata_SeekPoint* points = mSeekTable->points;
-  unsigned length = mSeekTable->num_points;
-
-  for (unsigned i = length; i != 0; i--) {
-    int64_t sampleNumber = points[i - 1].sample_number;
-    if (sampleNumber == -1) {  // placeholder
-      continue;
-    }
-    if (sampleNumber <= targetSampleNumber) {
-      result[0] = (sampleNumber * 1000000LL) / sampleRate;
-      result[1] = firstFrameOffset + points[i - 1].stream_offset;
-      if (sampleNumber == targetSampleNumber || i >= length ||
-          points[i].sample_number == -1) {  // placeholder
-        // exact seek, or no following non-placeholder seek point
-        result[2] = result[0];
-        result[3] = result[1];
-      } else {
-        result[2] = (points[i].sample_number * 1000000LL) / sampleRate;
-        result[3] = firstFrameOffset + points[i].stream_offset;
-      }
-      return true;
-    }
-  }
-  result[0] = 0;
-  result[1] = firstFrameOffset;
-  result[2] = 0;
-  result[3] = firstFrameOffset;
-  return true;
-}
-
-namespace {
-
-  class FuzzDataSource : public DataSource {
-    const uint8_t *data_;
-    size_t size_;
-
-   public:
-    FuzzDataSource(const uint8_t *data, size_t size) {
-      data_ = data;
-      size_ = size;
-    }
-
-    ssize_t readAt(off64_t offset, void *const data, size_t size) {
-      if (offset > size_)
-        return -1;
-      size_t remaining = size_ - offset;
-      if (remaining < size)
-        size = remaining;
-      memcpy(data, data_ + offset, size);
-      return size;
-    }
-  };
-
-}  // namespace
-
-// Fuzz FLAC format and instrument the result as exoplayer JNI would:
-// https://github.com/google/ExoPlayer/blob/release-v2/extensions/flac/src/main/jni/
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  FuzzDataSource source(data, size);
-  FLACParser parser(&source);
-
-  // Early parsing
-  if (!parser.init() || !parser.decodeMetadata())
-    return 0;
-
-  auto streamInfo = parser.getStreamInfo();
-
-  // Similar implementation than ExoPlayer
-  int buffer_size = streamInfo.max_blocksize * streamInfo.channels * 2;
-  assert(buffer_size >= 0);  // Not expected
-  auto buffer = new uint8_t[buffer_size];
-  int runs = 0;
-  while (parser.readBuffer(buffer, buffer_size) >= buffer_size) {
-    runs++;
-    continue;
-  }
-  delete[] buffer;
-
-  return 0;
-}
diff --git a/projects/flac/project.yaml b/projects/flac/project.yaml
index dbbd95f..39d8882 100644
--- a/projects/flac/project.yaml
+++ b/projects/flac/project.yaml
@@ -1,10 +1,9 @@
 homepage: "https://xiph.org/flac/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
  - "erik.de.castro.lopo@gmail.com"
 vendor_ccs:
- - "twsmith@mozilla.com"
+ - "cdiehl@mozilla.com"
 sanitizers:
  - address
  - undefined
@@ -12,5 +11,3 @@
 architectures:
  - x86_64
  - i386
-coverage_extra_args: -ignore-filename-regex=/usr/lib/jvm/.*
-main_repo: 'https://github.com/xiph/flac.git'
diff --git a/projects/flatbuffers/Dockerfile b/projects/flatbuffers/Dockerfile
deleted file mode 100644
index d51dac7..0000000
--- a/projects/flatbuffers/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake ninja
-RUN git clone https://github.com/google/flatbuffers
-
-WORKDIR $SRC/
-COPY build.sh $SRC/
diff --git a/projects/flatbuffers/build.sh b/projects/flatbuffers/build.sh
deleted file mode 100755
index cfc1c29..0000000
--- a/projects/flatbuffers/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-  
-cd $SRC/flatbuffers
-mkdir build
-cd build
-cmake -DOSS_FUZZ:BOOL=ON -G "Unix Makefiles" ../tests/fuzzer
-make
-
-cp ../tests/fuzzer/*.dict $OUT/
-cp *.bfbs $OUT/
-cp *_fuzzer $OUT/
diff --git a/projects/flatbuffers/project.yaml b/projects/flatbuffers/project.yaml
deleted file mode 100644
index f4faf00..0000000
--- a/projects/flatbuffers/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/google/flatbuffers"
-language: c++
-primary_contact: "wvo@google.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-  - "vglavnyy@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-main_repo: 'https://github.com/google/flatbuffers'
diff --git a/projects/fluent-bit/Dockerfile b/projects/fluent-bit/Dockerfile
deleted file mode 100755
index 217dd71..0000000
--- a/projects/fluent-bit/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake flex bison
-RUN git clone https://github.com/fluent/fluent-bit/
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/fluent-bit/build.sh b/projects/fluent-bit/build.sh
deleted file mode 100755
index e68e5b8..0000000
--- a/projects/fluent-bit/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd fluent-bit/build
-
-export CFLAGS="$CFLAGS -fcommon -DFLB_TESTS_OSSFUZZ=ON"
-export CXXFLAGS="$CXXFLAGS -fcommon -DFLB_TESTS_OSSFUZZ=ON"
-
-# Commandline arguments to turn off a lot of plugins.
-INPUT_PLUGINS="-DFLB_IN_COLLECTD=OFF -DFLB_IN_CPU=OFF -DFLB_IN_DISK=OFF -DFLB_IN_DOCKER=OFF -DFLB_IN_EXEC=OFF -DFLB_IN_FORWARD=OFF -DFLB_IN_HEAD=OFF -DFLB_IN_HEALTH=OFF -DFLB_IN_KMSG=OFF -DFLB_IN_MEM=OFF -DFLB_IN_MQTT=OFF -DFLB_IN_NETIF=OFF -DFLB_IN_PROC=OFF -DFLB_IN_RANDOM=OFF -DFLB_IN_SERIAL=OFF -DFLB_IN_STDIN=OFF -DFLB_IN_SYSLOG=OFF -DFLB_IN_SYSTEMD=OFF -DFLB_IN_TAIL=OFF -DFLB_IN_TCP=OFF -DFLB_IN_THERMAL=OFF -DFLB_IN_WINLOG=OFF"
-OUTPUT_PLUGINS="-DFLB_STREAM_PROCESSOR=Off -DFLB_LUAJIT=OFF -DFLB_FILTER_GREP=OFF -DFLB_FILTER_REWRITE_TAG=OFF -DFLB_OUT_AZURE=OFF -DFLB_OUT_BIGQUERY=OFF -DFLB_OUT_COUNTER=OFF -DFLB_OUT_DATADOG=OFF -DFLB_OUT_ES=OFF -DFLB_OUT_FILE=OFF -DFLB_OUT_FLOWCOUNTER=OFF -DFLB_OUT_FORWARD=OFF -DFLB_OUT_GELF=OFF -DFLB_OUT_HTTP=OFF -DFLB_OUT_INFLUXDB=OFF -DFLB_OUT_KAFKA=OFF -DFLB_OUT_KAFKA_REST=OFF -DFLB_OUT_NATS=OFF -DFLB_OUT_NULL=OFF -DFLB_OUT_PGSQL=OFF -DFLB_OUT_PLOT=OFF -DFLB_OUT_SLACK=OFF -DFLB_OUT_SPLUNK=OFF -DFLB_OUT_STACKDRIVER=OFF -DFLB_OUT_STDOUT=OFF -DFLB_OUT_TCP=OFF -DFLB_OUT_SYSLOG=OFF -DFLB_OUT_NRLOGS=OFF  -DFLB_OUT_LOKI=OFF"
-FILTER_PLUGINS="-DFLB_FILTER_PARSER=ON  -DFLB_FILTER_RECORD_MODIFIER=OFF -DFLB_FILTER_MODIFY=OFF -DFLB_FILTER_THROTTLE=OFF -DFLB_FILTER_KUBERNETES=OFF -DFLB_FILTER_NEST=OFF -DFLB_FILTER_PARSER=OFF -DFLB_FILTER_AWS=OFF -DFLB_FILTER_ALTER_SIZE=OFF"
-
-cmake -DFLB_METRICS=ON -DFLB_DEBUG=On -DMBEDTLS_FATAL_WARNINGS=OFF -DFLB_TESTS_INTERNAL=ON -DFLB_TESTS_INTERNAL_FUZZ=ON -DFLB_TESTS_OSSFUZZ=ON ${INPUT_PLUGINS} ${FILTER_PLUGINS} ${OUTPUT_PLUGINS} ..
-make
-
-# Create options files
-for fuzz in http msgpack_parser record_ac signv4 engine; do
-    echo "[libfuzzer]" >> $OUT/flb-it-fuzz-${fuzz}_fuzzer_OSSFUZZ.options
-    echo "detect_leaks=0" >> $OUT/flb-it-fuzz-${fuzz}_fuzzer_OSSFUZZ.options
-done
-
-cp $SRC/fluent-bit/build/bin/*OSSFUZZ ${OUT}/
diff --git a/projects/fluent-bit/project.yaml b/projects/fluent-bit/project.yaml
deleted file mode 100755
index aca7ccc..0000000
--- a/projects/fluent-bit/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/fluent/fluent-bit"
-primary_contact: "edsiper@gmail.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-  - "wppttt@amazon.com"
-main_repo: 'https://github.com/fluent/fluent-bit/'
diff --git a/projects/fmt/Dockerfile b/projects/fmt/Dockerfile
deleted file mode 100644
index f9da43c..0000000
--- a/projects/fmt/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN echo "CXX=$CXX"
-RUN echo "CXXFLAGS=$CXXFLAGS"
-RUN apt-get update && apt-get install -y cmake ninja-build
-
-RUN git clone --depth 1 --branch master \
-  https://github.com/fmtlib/fmt.git
-
-WORKDIR fmt
-COPY build.sh $SRC/
diff --git a/projects/fmt/build.sh b/projects/fmt/build.sh
deleted file mode 100755
index 7da75c9..0000000
--- a/projects/fmt/build.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-#create zip files with initial corpus, taken from version control.
-#for f in $(ls fuzzers/initial_corpus/) ;do
-#  zip -j -r $OUT/fuzzer_${f}_seed_corpus.zip fuzzers/initial_corpus/$f
-#done
-
-mkdir build
-cd build
-
-# use C++ 14 instead of 17, because even if clang is
-# bleeding edge, cmake is old in the oss fuzz image.
-
-cmake .. \
--GNinja \
--DCMAKE_BUILD_TYPE=Debug \
--DCMAKE_CXX_STANDARD=14 \
--DFMT_DOC=Off \
--DFMT_TEST=Off \
--DFMT_SAFE_DURATION_CAST=On \
--DFMT_FUZZ=On \
--DFMT_FUZZ_LINKMAIN=Off \
--DFMT_FUZZ_LDFLAGS=$LIB_FUZZING_ENGINE
-
-cmake --build .
-
-cp bin/*fuzzer $OUT
diff --git a/projects/fmt/project.yaml b/projects/fmt/project.yaml
deleted file mode 100644
index 4ed141a..0000000
--- a/projects/fmt/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/fmtlib/fmt"
-language: c++
-primary_contact: "pauldreikossfuzz@gmail.com"
-auto_ccs:
- - "victor.zverovich@gmail.com"
-main_repo: 'https://github.com/fmtlib/fmt.git'
diff --git a/projects/freeimage/Dockerfile b/projects/freeimage/Dockerfile
index 3133e71..86ab661 100644
--- a/projects/freeimage/Dockerfile
+++ b/projects/freeimage/Dockerfile
@@ -16,7 +16,10 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 RUN apt-get update && apt-get install -y make autoconf automake libtool wget
-RUN svn checkout https://svn.code.sf.net/p/freeimage/svn/ freeimage-svn
-WORKDIR $SRC/freeimage-svn/FreeImage/trunk/
+# This downloads the latest version at the time of writing. There does not
+# appear to be a head version of FreeImage.
+RUN wget https://downloads.sourceforge.net/freeimage/FreeImage3180.zip
+RUN unzip FreeImage3180.zip
+WORKDIR $SRC
 COPY build.sh $SRC/
 COPY load_from_memory_fuzzer.cc $SRC/
diff --git a/projects/freeimage/build.sh b/projects/freeimage/build.sh
index 707440e..a418bd0 100755
--- a/projects/freeimage/build.sh
+++ b/projects/freeimage/build.sh
@@ -15,13 +15,15 @@
 #
 ################################################################################
 
+pushd FreeImage
+
 # b44ExpLogTable.cpp only contains a definition of main().
 sed -i 's/Source\/OpenEXR\/IlmImf\/b44ExpLogTable.cpp//' Makefile.srcs
 make LIBRARIES=-lc++ -j$(nproc)
 
-INSTALL_DIR="$PWD/Dist"
+popd
 
-cd $SRC
+INSTALL_DIR=$SRC/FreeImage/Dist
 
 $CXX $CXXFLAGS -I${INSTALL_DIR}/ $LIB_FUZZING_ENGINE \
   load_from_memory_fuzzer.cc ${INSTALL_DIR}/libfreeimage.a \
diff --git a/projects/freeimage/project.yaml b/projects/freeimage/project.yaml
index 7d0c225..79d63c5 100644
--- a/projects/freeimage/project.yaml
+++ b/projects/freeimage/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://freeimage.sourceforge.net/"
-language: c++
 primary_contact: "drolon@infonie.fr"
 
 sanitizers:
diff --git a/projects/freetype2/Dockerfile b/projects/freetype2/Dockerfile
index c65c728..01c0f06 100644
--- a/projects/freetype2/Dockerfile
+++ b/projects/freetype2/Dockerfile
@@ -15,13 +15,16 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER prince.cherusker@gmail.com
 
 RUN apt-get update &&  \
     apt-get install -y \
       autoconf         \
       cmake            \
+      libpng-dev       \
       libtool          \
       pkg-config       \
+      zlib1g-dev       \
       make
 
 # Get some files for the seed corpus
diff --git a/projects/freetype2/project.yaml b/projects/freetype2/project.yaml
index 9649772..e55e3d9 100644
--- a/projects/freetype2/project.yaml
+++ b/projects/freetype2/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.freetype.org/"
-language: c++
 primary_contact: "lemzwerg@gmail.com"
 auto_ccs:
   - "darnold@adobe.com"
@@ -17,4 +16,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/freetype/freetype2-testing.git'
diff --git a/projects/fuzzing-puzzles/Dockerfile b/projects/fuzzing-puzzles/Dockerfile
index cc7ee62..25031ff 100644
--- a/projects/fuzzing-puzzles/Dockerfile
+++ b/projects/fuzzing-puzzles/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 ADD https://raw.githubusercontent.com/llvm-mirror/compiler-rt/master/test/fuzzer/MultipleConstraintsOnSmallInputTest.cpp \
     $SRC/fuzzing-puzzles/
diff --git a/projects/fuzzing-puzzles/build.sh b/projects/fuzzing-puzzles/build.sh
index 760b4d9..6dda8dd 100755
--- a/projects/fuzzing-puzzles/build.sh
+++ b/projects/fuzzing-puzzles/build.sh
@@ -16,5 +16,5 @@
 ################################################################################
 
 $CXX $CXXFLAGS $SRC/fuzzing-puzzles/MultipleConstraintsOnSmallInputTest.cpp \
-    -o $OUT/multiple_constraints_on_small_input_honggfuzz_fuzzer \
+    -o $OUT/multiple_constraints_on_small_input_afl_fuzzer \
     $LIB_FUZZING_ENGINE
diff --git a/projects/fuzzing-puzzles/project.yaml b/projects/fuzzing-puzzles/project.yaml
index 6f709ab..cf25a7e 100644
--- a/projects/fuzzing-puzzles/project.yaml
+++ b/projects/fuzzing-puzzles/project.yaml
@@ -1,7 +1,8 @@
 homepage: https://github.com/google/fuzzer-test-suite
-language: c++
 primary_contact: kcc@google.com
 auto_ccs:
+  - "kevinwkt@google.com"
+  - "kodewilliams@google.com"
   - "metzman@google.com"
   - "mmoroz@google.com"
 
@@ -9,6 +10,6 @@
   - address
 
 fuzzing_engines:
-  - honggfuzz
+  - afl
 
 disabled: True
diff --git a/projects/fwupd/Dockerfile b/projects/fwupd/Dockerfile
deleted file mode 100644
index d526837..0000000
--- a/projects/fwupd/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update
-RUN apt-get install -y pkg-config zlib1g-dev libffi-dev
-RUN pip3 install -U meson ninja
-RUN git clone --depth 1 https://github.com/fwupd/fwupd.git fwupd
-WORKDIR .
-COPY build.sh $SRC/
diff --git a/projects/fwupd/build.sh b/projects/fwupd/build.sh
deleted file mode 100755
index 8b72156..0000000
--- a/projects/fwupd/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-python3 fwupd/contrib/ci/oss-fuzz.py
diff --git a/projects/fwupd/project.yaml b/projects/fwupd/project.yaml
deleted file mode 100644
index 2864139..0000000
--- a/projects/fwupd/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://github.com/fwupd/fwupd"
-language: c
-primary_contact: "hughsient@gmail.com"
-main_repo: 'https://github.com/fwupd/fwupd'
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/gcloud-go/Dockerfile b/projects/gcloud-go/Dockerfile
deleted file mode 100644
index 1d2b38e..0000000
--- a/projects/gcloud-go/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-LABEL maintainer="codyoss@google.com"
-RUN go get cloud.google.com/go/spanner
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/gcloud-go/build.sh b/projects/gcloud-go/build.sh
deleted file mode 100644
index 5ff5653..0000000
--- a/projects/gcloud-go/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-
-compile_go_fuzzer cloud.google.com/go/spanner/spansql FuzzParseQuery fuzz_parse_query
diff --git a/projects/gcloud-go/project.yaml b/projects/gcloud-go/project.yaml
deleted file mode 100644
index f336624..0000000
--- a/projects/gcloud-go/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/googleapis/google-cloud-go"
-primary_contact: "codyoss@google.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/gdal/Dockerfile b/projects/gdal/Dockerfile
index 00f0723..649fe3f 100644
--- a/projects/gdal/Dockerfile
+++ b/projects/gdal/Dockerfile
@@ -15,11 +15,30 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
+MAINTAINER even.rouault@spatialys.com
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
     apt-get install -y make autoconf automake libtool g++ curl cmake sqlite3 pkg-config
 
 RUN git clone --depth 1 https://github.com/OSGeo/gdal gdal
 
+RUN git clone --depth 1 https://github.com/OSGeo/proj.4 gdal/proj
+
+RUN git clone --depth 1 https://github.com/curl/curl.git gdal/curl
+
+COPY NC4_put_propattr_leak_fix.patch libnetcdf_fix_undefined_left_shift_in_ncx_get_size_t.patch $SRC/
+
+RUN curl https://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.4.1.1.tar.gz > gdal/netcdf-4.4.1.1.tar.gz && \
+    cd gdal && \
+    tar xzf netcdf-4.4.1.1.tar.gz && \
+    rm -f netcdf-4.4.1.1.tar.gz && \
+    cd netcdf-4.4.1.1 && \
+    patch -p0 < $SRC/NC4_put_propattr_leak_fix.patch && \
+    patch -p0 < $SRC/libnetcdf_fix_undefined_left_shift_in_ncx_get_size_t.patch && \
+    cd ../..
+
+RUN git clone --depth 1 https://anongit.freedesktop.org/git/poppler/poppler.git gdal/poppler
+
 RUN cp gdal/gdal/fuzzers/build.sh $SRC/
 
 WORKDIR gdal
diff --git a/projects/gdal/NC4_put_propattr_leak_fix.patch b/projects/gdal/NC4_put_propattr_leak_fix.patch
new file mode 100644
index 0000000..55908aa
--- /dev/null
+++ b/projects/gdal/NC4_put_propattr_leak_fix.patch
@@ -0,0 +1,16 @@
+--- libsrc4/nc4info.c.ori	2017-06-07 10:28:11.478130590 +0200
++++ libsrc4/nc4info.c	2017-06-07 10:28:29.670268763 +0200
+@@ -174,11 +174,8 @@
+       herr = 0;
+     }
+  done:
+-    if(ncstat != NC_NOERR) {
+-      if(text != NULL) {
+-        free(text);
+-        text = NULL;
+-      }
++    if(text != NULL) {
++      free(text);
+     }
+ 
+     if(attid >= 0) HCHECK((H5Aclose(attid)));
diff --git a/projects/gdal/libnetcdf_fix_undefined_left_shift_in_ncx_get_size_t.patch b/projects/gdal/libnetcdf_fix_undefined_left_shift_in_ncx_get_size_t.patch
new file mode 100644
index 0000000..e0b886d
--- /dev/null
+++ b/projects/gdal/libnetcdf_fix_undefined_left_shift_in_ncx_get_size_t.patch
@@ -0,0 +1,46 @@
+--- libsrc/ncx.m4.ori	2017-06-15 12:45:29.461345214 +0200
++++ libsrc/ncx.m4	2017-06-23 12:14:29.263652717 +0200
+@@ -726,7 +726,11 @@
+ {
+ 	const uchar *cp = (const uchar *) xp;
+ 
++#if INT_MAX  >= X_INT_MAX
++	*ip = (ix_int)((unsigned)(*cp++) << 24);
++#else
+ 	*ip = *cp++ << 24;
++#endif
+ #if SIZEOF_IX_INT > X_SIZEOF_INT
+ 	if(*ip & 0x80000000)
+ 	{
+@@ -1883,7 +1887,7 @@
+ 	/* similar to get_ix_int */
+ 	const uchar *cp = (const uchar *) *xpp;
+ 
+-	*ulp = (unsigned)(*cp++ << 24);
++	*ulp = (unsigned)(*cp++) << 24;
+ 	*ulp |= (*cp++ << 16);
+ 	*ulp |= (*cp++ << 8);
+ 	*ulp |= *cp;
+--- libsrc/ncx.c.ori	2017-06-15 12:38:29.769770935 +0200
++++ libsrc/ncx.c	2017-06-23 12:10:38.359973119 +0200
+@@ -1031,7 +1031,11 @@
+ {
+ 	const uchar *cp = (const uchar *) xp;
+ 
++#if INT_MAX  >= X_INT_MAX
++	*ip = (ix_int)((unsigned)(*cp++) << 24);
++#else
+ 	*ip = *cp++ << 24;
++#endif
+ #if SIZEOF_IX_INT > X_SIZEOF_INT
+ 	if(*ip & 0x80000000)
+ 	{
+@@ -3451,7 +3455,7 @@
+ 	/* similar to get_ix_int */
+ 	const uchar *cp = (const uchar *) *xpp;
+ 
+-	*ulp = (unsigned)(*cp++ << 24);
++	*ulp = (unsigned)(*cp++) << 24;
+ 	*ulp |= (*cp++ << 16);
+ 	*ulp |= (*cp++ << 8);
+ 	*ulp |= *cp;
diff --git a/projects/gdal/project.yaml b/projects/gdal/project.yaml
index d0bbfe4..89fc406 100644
--- a/projects/gdal/project.yaml
+++ b/projects/gdal/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://gdal.org"
-language: c++
 primary_contact: "even.rouault@gmail.com"
 auto_ccs:
   - "schwehr@gmail.com"
@@ -12,4 +11,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/OSGeo/gdal'
diff --git a/projects/gdk-pixbuf/Dockerfile b/projects/gdk-pixbuf/Dockerfile
deleted file mode 100644
index fdee83f..0000000
--- a/projects/gdk-pixbuf/Dockerfile
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y python3-pip gtk-doc-tools libffi-dev
-RUN pip3 install meson==0.55.3 ninja
-
-RUN git clone --depth 1 https://gitlab.gnome.org/GNOME/gdk-pixbuf.git
-ADD https://ftp.gnome.org/pub/gnome/sources/glib/2.64/glib-2.64.2.tar.xz $SRC
-RUN tar xvJf $SRC/glib-2.64.2.tar.xz 
-
-RUN git clone --depth 1 https://github.com/glennrp/libpng.git && \
-    git clone --depth 1 https://github.com/MozillaSecurity/fuzzdata.git && \
-    mkdir corpus && \
-    find $SRC/gdk-pixbuf/tests/ \( -name '*.jpeg' -o -name '*.jpg' -o -name '*.png' \) -exec cp -v '{}' corpus/ ';' && \
-    find $SRC/libpng -name "*.png" | grep -v crashers | xargs cp -t corpus/ && \
-    mv $SRC/fuzzdata/samples/gif/*.gif corpus/ && \
-    zip -q $SRC/gdk-pixbuf_seed_corpus.zip corpus/* && \
-    rm -rf libpng fuzzdata corpus
-    
-ADD https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/png.dict $SRC/png.dict
-ADD https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/jpeg.dict $SRC/jpeg.dict
-ADD https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/gif.dict $SRC/gif.dict
-RUN awk 1 $SRC/*.dict > $SRC/gdk-pixbuf.dict && \
-    rm -f $SRC/png.dict $SRC/jpeg.dict $SRC/gif.dict
-
-WORKDIR $SRC/gdk-pixbuf
-COPY targets $SRC/fuzz
-COPY build.sh $SRC/
diff --git a/projects/gdk-pixbuf/build.sh b/projects/gdk-pixbuf/build.sh
deleted file mode 100755
index 45b2967..0000000
--- a/projects/gdk-pixbuf/build.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-PREFIX=$WORK/prefix
-mkdir -p $PREFIX
-
-export PKG_CONFIG="`which pkg-config` --static"
-export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
-export PATH=$PREFIX/bin:$PATH
-
-BUILD=$WORK/build
-
-rm -rf $WORK/*
-rm -rf $BUILD
-mkdir -p $BUILD
-
-# Build glib
-pushd $SRC/glib-2.64.2
-meson \
-    --prefix=$PREFIX \
-    --libdir=lib \
-    --default-library=static \
-    -Db_lundef=false \
-    -Doss_fuzz=enabled \
-    -Dlibmount=disabled \
-    -Dinternal_pcre=true \
-    _builddir
-ninja -C _builddir
-ninja -C _builddir install
-popd
-
-# Build gdk-pixbuf
-pushd $SRC/gdk-pixbuf
-meson \
-    --prefix=$PREFIX \
-    --libdir=lib \
-    --default-library=static \
-    -Dintrospection=disabled \
-    -Dbuiltin_loaders='all' \
-    _builddir
-ninja -C _builddir
-ninja -C _builddir install
-popd
-
-mv $SRC/{*.zip,*.dict} $OUT
-
-if [ ! -f "${OUT}/gdk-pixbuf_seed_corpus.zip" ]; then
-  echo "missing seed corpus"
-  exit 1
-fi
-
-if [ ! -f "${OUT}/gdk-pixbuf.dict" ]; then
-  echo "missing dictionary"
-  exit 1
-fi
-
-PREDEPS_LDFLAGS="-Wl,-Bdynamic -ldl -lm -lc -pthread -lrt -lpthread"
-DEPS="gmodule-2.0 glib-2.0 gio-2.0 gobject-2.0 gdk-pixbuf-2.0"
-BUILD_CFLAGS="$CFLAGS `pkg-config --static --cflags $DEPS`"
-BUILD_LDFLAGS="-Wl,-static `pkg-config --static --libs $DEPS`"
-
-fuzzers=$(find $SRC/fuzz/ -name "*_fuzzer.c")
-for f in $fuzzers; do
-  fuzzer_name=$(basename $f .c)
-  $CC $CFLAGS $BUILD_CFLAGS -c $f -o $WORK/${fuzzer_name}.o
-  $CXX $CXXFLAGS \
-    $WORK/${fuzzer_name}.o -o $OUT/${fuzzer_name} \
-    $PREDEPS_LDFLAGS \
-    $BUILD_LDFLAGS \
-    $LIB_FUZZING_ENGINE \
-    -Wl,-Bdynamic
-  ln -sf $OUT/gdk-pixbuf_seed_corpus.zip $OUT/${fuzzer_name}_seed_corpus.zip
-  ln -sf $OUT/gdk-pixbuf.dict $OUT/${fuzzer_name}.dict
-done
diff --git a/projects/gdk-pixbuf/project.yaml b/projects/gdk-pixbuf/project.yaml
deleted file mode 100644
index 90c4ed3..0000000
--- a/projects/gdk-pixbuf/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: https://gitlab.gnome.org/GNOME/gdk-pixbuf/
-language: c
-primary_contact: ebassi@gnome.org
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://gitlab.gnome.org/GNOME/gdk-pixbuf.git'
diff --git a/projects/gdk-pixbuf/targets/animation_fuzzer.c b/projects/gdk-pixbuf/targets/animation_fuzzer.c
deleted file mode 100644
index 755a7b8..0000000
--- a/projects/gdk-pixbuf/targets/animation_fuzzer.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "fuzzer_temp_file.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (size < 1) {
-        return 0;
-    }
-    GError *error = NULL;
-    GdkPixbuf *pixbuf;
-    GdkPixbufAnimation *anim;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    anim = gdk_pixbuf_animation_new_from_file(tmpfile, &error);
-    if (error != NULL) {
-        g_clear_error(&error);
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    pixbuf = gdk_pixbuf_animation_get_static_image(anim);
-    if (pixbuf != NULL) {
-        unsigned int rot_amount = ((unsigned int) data[0]) % 4;
-        pixbuf = gdk_pixbuf_rotate_simple(pixbuf, rot_amount * 90);
-        gdk_pixbuf_set_option(pixbuf, buf, buf);
-        gdk_pixbuf_get_pixels(pixbuf);
-        gdk_pixbuf_get_width(pixbuf);
-        gdk_pixbuf_get_height(pixbuf);
-        g_object_unref(pixbuf);
-    }
-
-    free(buf);
-    g_object_unref(anim);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/gdk-pixbuf/targets/fuzzer_temp_file.h b/projects/gdk-pixbuf/targets/fuzzer_temp_file.h
deleted file mode 100644
index 22ff248..0000000
--- a/projects/gdk-pixbuf/targets/fuzzer_temp_file.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Adapter utility from fuzzer input to a temporary file, for fuzzing APIs that
-// require a file instead of an input buffer.
-
-#ifndef FUZZER_TEMP_FILE_H_
-#define FUZZER_TEMP_FILE_H_
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-// Pure-C interface for creating and cleaning up temporary files.
-
-static char *fuzzer_get_tmpfile(const uint8_t *data, size_t size) {
-  char *filename_buffer = strdup("/tmp/generate_temporary_file.XXXXXX");
-  if (!filename_buffer) {
-    perror("Failed to allocate file name buffer.");
-    abort();
-  }
-  const int file_descriptor = mkstemp(filename_buffer);
-  if (file_descriptor < 0) {
-    perror("Failed to make temporary file.");
-    abort();
-  }
-  FILE *file = fdopen(file_descriptor, "wb");
-  if (!file) {
-    perror("Failed to open file descriptor.");
-    close(file_descriptor);
-    abort();
-  }
-  const size_t bytes_written = fwrite(data, sizeof(uint8_t), size, file);
-  if (bytes_written < size) {
-    close(file_descriptor);
-    fprintf(stderr, "Failed to write all bytes to file (%zu out of %zu)",
-            bytes_written, size);
-    abort();
-  }
-  fclose(file);
-  return filename_buffer;
-}
-
-static void fuzzer_release_tmpfile(char *filename) {
-  if (unlink(filename) != 0) {
-    perror("WARNING: Failed to delete temporary file.");
-  }
-  free(filename);
-}
-
-// C++ RAII object for creating temporary files.
-
-#ifdef __cplusplus
-class FuzzerTemporaryFile {
-public:
-  FuzzerTemporaryFile(const uint8_t *data, size_t size)
-      : filename_(fuzzer_get_tmpfile(data, size)) {}
-
-  ~FuzzerTemporaryFile() { fuzzer_release_tmpfile(filename_); }
-
-  const char *filename() const { return filename_; }
-
-private:
-  char *filename_;
-};
-#endif
-
-#endif // FUZZER_TEMP_FILE_H_
diff --git a/projects/gdk-pixbuf/targets/pixbuf_cons_fuzzer.c b/projects/gdk-pixbuf/targets/pixbuf_cons_fuzzer.c
deleted file mode 100644
index c1ba15d..0000000
--- a/projects/gdk-pixbuf/targets/pixbuf_cons_fuzzer.c
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#define WIDTH 10
-#define HEIGHT 20
-#define ROWSTRIDE (WIDTH * 4)
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (!(size >= WIDTH * HEIGHT * 4)) {
-        return 0;
-    }
-    const gchar *profile;
-    GdkPixbuf *pixbuf, *tmp;
-    GBytes *bytes;
-    bytes = g_bytes_new_static(data, size);
-    pixbuf = g_object_new(GDK_TYPE_PIXBUF,
-            "width", WIDTH,
-            "height", HEIGHT,
-            "rowstride", ROWSTRIDE,
-            "bits-per-sample", 8,"n-channels", 3,
-            "has-alpha", FALSE,
-            "pixel-bytes", bytes,
-            NULL);
-    if (pixbuf == NULL) {
-        return 0;
-    }
-    gdk_pixbuf_scale(pixbuf, pixbuf,
-            0, 0, 
-            gdk_pixbuf_get_width(pixbuf) / 4, 
-            gdk_pixbuf_get_height(pixbuf) / 4,
-            0, 0, 0.5, 0.5,
-            GDK_INTERP_NEAREST);
-    unsigned int rot_amount = ((unsigned int) data[0]) % 4;
-    tmp = gdk_pixbuf_rotate_simple(pixbuf, rot_amount * 90);
-    tmp = gdk_pixbuf_flip(pixbuf, TRUE);
-    tmp = gdk_pixbuf_composite_color_simple(pixbuf,
-            gdk_pixbuf_get_width(pixbuf) / 4, 
-            gdk_pixbuf_get_height(pixbuf) / 4,
-            GDK_INTERP_NEAREST,
-            128,
-            8,
-            G_MAXUINT32,
-            G_MAXUINT32/2);
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    gdk_pixbuf_set_option(pixbuf, buf, buf);
-    profile = gdk_pixbuf_get_option(pixbuf, buf);
-    tmp = gdk_pixbuf_new_from_data(gdk_pixbuf_get_pixels(pixbuf),
-            GDK_COLORSPACE_RGB,
-            FALSE,
-            gdk_pixbuf_get_bits_per_sample(pixbuf),
-            gdk_pixbuf_get_width(pixbuf), 
-            gdk_pixbuf_get_height(pixbuf),
-            gdk_pixbuf_get_rowstride(pixbuf),
-            NULL,
-            NULL);
-    tmp = gdk_pixbuf_flip(tmp, TRUE);
-
-    free(buf);
-    g_object_unref(pixbuf);
-    g_object_unref(tmp);
-    return 0;
-}
diff --git a/projects/gdk-pixbuf/targets/pixbuf_file_fuzzer.c b/projects/gdk-pixbuf/targets/pixbuf_file_fuzzer.c
deleted file mode 100644
index c772311..0000000
--- a/projects/gdk-pixbuf/targets/pixbuf_file_fuzzer.c
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "fuzzer_temp_file.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (size < 1) {
-        return 0;
-    }
-    GdkPixbuf *pixbuf;
-    GError *error = NULL;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    pixbuf = gdk_pixbuf_new_from_file(tmpfile, &error);
-    if (error != NULL) {
-        g_clear_error(&error);
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    char *buf = (char *) calloc(size + 1, sizeof(char));
-    memcpy(buf, data, size);
-    buf[size] = '\0';
-
-    gdk_pixbuf_get_width(pixbuf);
-    gdk_pixbuf_get_height(pixbuf);
-    gdk_pixbuf_get_bits_per_sample(pixbuf);
-    gdk_pixbuf_scale(pixbuf, pixbuf,
-            0, 0, 
-            gdk_pixbuf_get_width(pixbuf) / 4, 
-            gdk_pixbuf_get_height(pixbuf) / 4,
-            0, 0, 0.5, 0.5,
-            GDK_INTERP_NEAREST);
-    unsigned int rot_amount = ((unsigned int) data[0]) % 4;
-    pixbuf = gdk_pixbuf_rotate_simple(pixbuf, rot_amount * 90);
-    gdk_pixbuf_set_option(pixbuf, buf, buf);
-    gdk_pixbuf_get_option(pixbuf, buf);
-
-    free(buf);
-    g_clear_object(&pixbuf);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/gdk-pixbuf/targets/pixbuf_scale_fuzzer.c b/projects/gdk-pixbuf/targets/pixbuf_scale_fuzzer.c
deleted file mode 100644
index 0a96b69..0000000
--- a/projects/gdk-pixbuf/targets/pixbuf_scale_fuzzer.c
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "fuzzer_temp_file.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (size < 1) {
-        return 0;
-    }
-    GError *error = NULL;
-    GdkPixbuf *pixbuf;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    pixbuf = gdk_pixbuf_new_from_file_at_scale(tmpfile, 1, size, TRUE, &error);
-    g_clear_error(&error);
-    pixbuf = gdk_pixbuf_new_from_file_at_scale(tmpfile, 1, size, FALSE, &error);
-    if (pixbuf != NULL) {
-        g_clear_object(&pixbuf);
-    } else {
-        g_clear_error(&error);
-    }
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/gdk-pixbuf/targets/stream_fuzzer.c b/projects/gdk-pixbuf/targets/stream_fuzzer.c
deleted file mode 100644
index 64e7103..0000000
--- a/projects/gdk-pixbuf/targets/stream_fuzzer.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "fuzzer_temp_file.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    GError *error = NULL;
-    GdkPixbuf *pixbuf;
-    GFile *file;
-    GInputStream *stream;
-
-    char *tmpfile = fuzzer_get_tmpfile(data, size);
-    file = g_file_new_for_path(tmpfile);
-    stream = (GInputStream *) g_file_read(file, NULL, &error);
-    if (error != NULL) {
-        g_clear_error(&error);
-        g_object_unref(file);
-        fuzzer_release_tmpfile(tmpfile);
-        return 0;
-    }
-
-    pixbuf = gdk_pixbuf_new_from_stream(stream, NULL, &error);
-    if (pixbuf != NULL) {
-        g_object_unref(pixbuf);
-    }
-
-    g_clear_error(&error);
-    g_object_unref(stream);
-    g_object_unref(file);
-    fuzzer_release_tmpfile(tmpfile);
-    return 0;
-}
diff --git a/projects/gfwx/Dockerfile b/projects/gfwx/Dockerfile
index 30a9bb7..3344848 100644
--- a/projects/gfwx/Dockerfile
+++ b/projects/gfwx/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER fyffe@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/guidovranken/gfwx-fuzzers.git gfwx-fuzzers
 WORKDIR gfwx-fuzzers
diff --git a/projects/gfwx/project.yaml b/projects/gfwx/project.yaml
index 5ab07b1..cba2965 100644
--- a/projects/gfwx/project.yaml
+++ b/projects/gfwx/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.gfwx.org/"
-language: c++
 primary_contact: "fyffe@google.com"
 sanitizers:
  - address
diff --git a/projects/ghostscript/Dockerfile b/projects/ghostscript/Dockerfile
index c21bb87..c4cdbd9 100644
--- a/projects/ghostscript/Dockerfile
+++ b/projects/ghostscript/Dockerfile
@@ -15,14 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER skau@google.com
 
-RUN apt-get update && apt-get install -y autoconf zlibc libtool liblcms2-dev libpng-dev
+RUN apt-get update && apt-get install -y autoconf zlibc libtool liblcms2-dev libpng-dev libtiff-dev
 RUN git clone --branch branch-2.2 --single-branch --depth 1 https://github.com/apple/cups.git cups
-RUN git clone --branch VER-2-10-1 --single-branch --depth 1 https://git.savannah.gnu.org/git/freetype/freetype2.git freetype
+RUN git clone --branch VER-2-10-1 --single-branch --depth 1 https://git.savannah.nongnu.org/git/freetype/freetype2.git freetype
 RUN git clone --single-branch --depth 1 git://git.ghostscript.com/ghostpdl.git ghostpdl
+
 RUN mkdir ghostpdl/fuzz
+COPY gstoraster_fuzzer.cc ghostpdl/fuzz
 
-WORKDIR ghostpdl
-
-COPY gstoraster_fuzzer.cc $SRC/
 COPY build.sh $SRC/
diff --git a/projects/ghostscript/build.sh b/projects/ghostscript/build.sh
index b74772f..11ca104 100755
--- a/projects/ghostscript/build.sh
+++ b/projects/ghostscript/build.sh
@@ -16,7 +16,7 @@
 ################################################################################
 
 # Build CUPS
-pushd $SRC/cups
+pushd cups
 # Fix bad line
 sed -i '2110s/\(\s\)f->value/\1(int)f->value/' cups/ppd-cache.c
 
@@ -29,12 +29,14 @@
 install -m755 cups-config "$WORK"/cups-config
 popd
 
+cd ghostpdl
 rm -rf cups/libs || die
 rm -rf freetype || die
 rm -rf libpng || die
+rm -rf tiff || die
 rm -rf zlib || die
 
-mv $SRC/freetype freetype
+mv ../freetype freetype
 
 CUPSCONFIG="$WORK/cups-config"
 CUPS_CFLAGS=$($CUPSCONFIG --cflags)
@@ -42,7 +44,7 @@
 CUPS_LIBS=$($CUPSCONFIG --image --libs)
 export CXXFLAGS="$CXXFLAGS $CUPS_CFLAGS"
 
-CPPFLAGS="${CPPFLAGS:-} $CUPS_CFLAGS -DPACIFY_VALGRIND" ./autogen.sh \
+CPPFLAGS="${CPPFLAGS:-} $CUPS_CFLAGS" ./autogen.sh \
   CUPSCONFIG=$CUPSCONFIG \
   --enable-freetype --enable-fontconfig \
   --enable-cups --with-ijs --with-jbig2dec \
@@ -50,7 +52,7 @@
 make -j$(nproc) libgs
 
 $CXX $CXXFLAGS $CUPS_LDFLAGS -std=c++11 -I. \
-    $SRC/gstoraster_fuzzer.cc \
+    fuzz/gstoraster_fuzzer.cc \
     -o "$OUT/gstoraster_fuzzer" \
     -Wl,-rpath='$ORIGIN' \
     $CUPS_LIBS \
diff --git a/projects/ghostscript/gstoraster_fuzzer.cc b/projects/ghostscript/gstoraster_fuzzer.cc
index 897e99a..8bc457b 100644
--- a/projects/ghostscript/gstoraster_fuzzer.cc
+++ b/projects/ghostscript/gstoraster_fuzzer.cc
@@ -1,20 +1,6 @@
-/*
-# Copyright 2019 The Chromium OS Authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-*/
+// Copyright 2019 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
 
 #include <base/gserrors.h>
 #include <psi/iapi.h>
@@ -42,7 +28,7 @@
 	return to_copy;
 }
 
-static int gs_stdnull(void *inst, const char *buf, int len)
+static int gs_stdout(void *inst, const char *buf, int len)
 {
 	/* Just discard everything. */
 	return len;
@@ -55,22 +41,18 @@
 
 	/* Mostly stolen from cups-filters gstoraster. */
 	char *args[] = {
-		"gs",
 		"-K1048576",
 		"-r200x200",
-		"-sBandListStorage=memory",
-		"-dMaxBitmap=0",
-		"-dBufferSpace=450k",
 		"-dMediaPosition=1",
 		"-dcupsColorSpace=1", /* RGB */
 		"-dQUIET",
-		"-dSAFER",
+		"-dPARANOIDSAFER",
 		"-dNOPAUSE",
 		"-dBATCH",
 		"-dNOINTERPOLATE",
 		"-dNOMEDIAATTRS",
-		"-sstdout=%%stderr",
-		"-sOutputFile=/dev/null",
+		"-sstdout=%stderr",
+		"-sOutputFile=%stdout",
 		"-sDEVICE=cups",
 		"-_",
 	};
@@ -86,7 +68,7 @@
 		return ret;
 	}
 
-	gsapi_set_stdio(gs, gs_stdin, gs_stdnull, gs_stdnull);
+	gsapi_set_stdio(gs, gs_stdin, gs_stdout, NULL /* stderr */);
 	ret = gsapi_set_arg_encoding(gs, GS_ARG_ENCODING_UTF8);
 	if (ret < 0) {
 		fprintf(stderr, "gsapi_set_arg_encoding: error %d\n", ret);
diff --git a/projects/ghostscript/project.yaml b/projects/ghostscript/project.yaml
index d1f91d4..39a973b 100644
--- a/projects/ghostscript/project.yaml
+++ b/projects/ghostscript/project.yaml
@@ -1,14 +1,7 @@
 homepage: "https://ghostscript.com"
-language: c++
 primary_contact: "skau@google.com"
 auto_ccs:
   - "henry.stiles@artifex.com"
   - "skau@google.com"
-  - "sebastian.rasmussen@artifex.com"
-  - "julians.artifex@gmail.com"
-  - "chris.liddell@artifex.com"
-  - "kdlee@chromium.org"
 sanitizers:
   - address
-  - memory
-main_repo: 'git://git.ghostscript.com/ghostpdl.git'
diff --git a/projects/giflib/Dockerfile b/projects/giflib/Dockerfile
index 382ee81..0de6c7a 100644
--- a/projects/giflib/Dockerfile
+++ b/projects/giflib/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update -y && \
-    apt-get install -y make autoconf automake libtool wget zlib1g-dev \
-    binutils cmake ninja-build liblzma-dev libz-dev pkg-config
+MAINTAINER esr@thyrsus.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool wget zlib1g-dev
+RUN apt-get update && \
+apt-get install -y  libtool ninja-build cmake
 RUN git clone --depth=1 https://git.code.sf.net/p/giflib/code $SRC/giflib-code
 RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
 RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
diff --git a/projects/giflib/project.yaml b/projects/giflib/project.yaml
index 48415c2..613be7f 100644
--- a/projects/giflib/project.yaml
+++ b/projects/giflib/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://giflib.sourceforge.net/"
-language: c++
 primary_contact: "esr@thyrsus.com"
 auto_ccs:
   - "vincent.ulitzsch@live.de"
diff --git a/projects/git/Dockerfile b/projects/git/Dockerfile
index 91c05e4..3dbe4c6 100644
--- a/projects/git/Dockerfile
+++ b/projects/git/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER steadmon@google.com
 RUN apt-get update && \
     apt-get install --no-install-recommends -y \
         cvs cvsps gettext libcgi-pm-perl libcurl4-gnutls-dev \
diff --git a/projects/git/build.sh b/projects/git/build.sh
index 8770a83..0a39a97 100755
--- a/projects/git/build.sh
+++ b/projects/git/build.sh
@@ -34,7 +34,7 @@
 zip -j $OUT/fuzz-pack-headers_seed_corpus.zip .git/objects/pack/*.pack.trimmed
 
 # build commit-graph corpus
-ASAN_OPTIONS=detect_leaks=0 ./git commit-graph write
+./git commit-graph write
 zip -j $OUT/fuzz-commit-graph_seed_corpus .git/objects/info/commit-graph
 
 # Mute stderr
diff --git a/projects/git/project.yaml b/projects/git/project.yaml
index 8203db6..4549fd0 100644
--- a/projects/git/project.yaml
+++ b/projects/git/project.yaml
@@ -1,9 +1,2 @@
 homepage: "https://git-scm.com"
-language: c++
 primary_contact: "steadmon@google.com"
-auto_ccs:
-  - "git-fuzz-reports@google.com"
-  - "emilyshaffer@google.com"
-  - "jonathantanmy@google.com"
-  - "jrn@google.com"
-main_repo: 'https://github.com/git/git'
diff --git a/projects/gitea/Dockerfile b/projects/gitea/Dockerfile
deleted file mode 100644
index 9403123..0000000
--- a/projects/gitea/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/go-gitea/gitea
-COPY build.sh $SRC/
-WORKDIR $SRC/gitea
diff --git a/projects/gitea/build.sh b/projects/gitea/build.sh
deleted file mode 100644
index a031afb..0000000
--- a/projects/gitea/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer code.gitea.io/gitea/tools FuzzMarkdownRenderRaw fuzz_markdown_render_raw gofuzz
-compile_go_fuzzer code.gitea.io/gitea/tools FuzzMarkupPostProcess fuzz_markup_post_process gofuzz
diff --git a/projects/gitea/project.yaml b/projects/gitea/project.yaml
deleted file mode 100644
index 8fcd31f..0000000
--- a/projects/gitea/project.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-homepage: "https://github.com/go-gitea/gitea"
-primary_contact: "security@gitea.io"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "xiaolunwen@gmail.com"
-  - "lauris@nix.lv"
-  - "techknowlogick@gitea.io"
-  - "sapk@sapk.fr"
-  - "zeripath@gmail.com"
-  - "john.olheiser@gmail.com"
-  - "6543@obermui.de"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: "https://github.com/go-gitea/gitea"
diff --git a/projects/glib/Dockerfile b/projects/glib/Dockerfile
index 72449d5..a834934 100644
--- a/projects/glib/Dockerfile
+++ b/projects/glib/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pdknsk@gmail.com
 RUN apt-get update && apt-get install -y python3-pip
 RUN pip3 install -U meson ninja
 RUN git clone --depth 1 https://gitlab.gnome.org/GNOME/glib
diff --git a/projects/glib/build.sh b/projects/glib/build.sh
index b0d8f39..4b4ac07 100755
--- a/projects/glib/build.sh
+++ b/projects/glib/build.sh
@@ -24,7 +24,7 @@
   -Doss_fuzz=enabled \
   -Db_lundef=false \
   -Ddefault_library=static \
-  -Dlibmount=disabled
+  -Dlibmount=false
 
 ninja -C $BUILD
 
diff --git a/projects/glib/project.yaml b/projects/glib/project.yaml
index 64889c8..90a03d0 100644
--- a/projects/glib/project.yaml
+++ b/projects/glib/project.yaml
@@ -1,5 +1,4 @@
-homepage: "https://gitlab.gnome.org/GNOME/glib/"
-language: c++
+homepage: "https://www.gnu.org/directory/glib.html"
 primary_contact: "bugzilla@tecnocode.co.uk"
 auto_ccs:
 - philip.withnall@gmail.com
@@ -10,4 +9,3 @@
 - undefined
 - memory
 help_url: https://gitlab.gnome.org/GNOME/glib/tree/master/fuzzing#how-to-reproduce-oss-fuzz-bugs-locally
-main_repo: 'https://gitlab.gnome.org/GNOME/glib'
diff --git a/projects/gnupg/Dockerfile b/projects/gnupg/Dockerfile
index 57dc905..02bc37e 100644
--- a/projects/gnupg/Dockerfile
+++ b/projects/gnupg/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER p.antoine@catenacyber.fr
 RUN apt-get update && apt-get install -y make autoconf automake libtool gettext bzip2 gnupg bison flex
 
 RUN git clone --depth 1 git://git.gnupg.org/libgpg-error.git libgpg-error
diff --git a/projects/gnupg/build.sh b/projects/gnupg/build.sh
index 846bc8d..a346c13 100755
--- a/projects/gnupg/build.sh
+++ b/projects/gnupg/build.sh
@@ -60,5 +60,13 @@
 
 # build fuzzers
 cd tests/fuzz
-# export fuzzers and other associated stuff
-cp fuzz_* $OUT/
+#export other associated stuff
+cp *.options $OUT/
+cp fuzz_*_seed_corpus.zip $OUT/
+
+ls fuzz_*.c | cut -d_ -f2 | cut -d. -f1 | while read target
+do
+    $CC $CFLAGS -DHAVE_CONFIG_H -I. -I../..  -I../../common -I../../g10 -c fuzz_$target.c -o fuzz_$target.o
+
+    $CXX $CXXFLAGS -std=c++11 -DHAVE_CONFIG_H fuzz_$target.o -o $OUT/fuzz_$target ../../g10/libgpg.a ../../kbx/libkeybox.a ../../common/libcommon.a ../../common/libgpgrl.a $LIB_FUZZING_ENGINE -lgcrypt -lgpg-error -lassuan -lnpth
+done
diff --git a/projects/gnupg/fuzz_decrypt.c b/projects/gnupg/fuzz_decrypt.c
index f92c15d..ebc7d7d 100644
--- a/projects/gnupg/fuzz_decrypt.c
+++ b/projects/gnupg/fuzz_decrypt.c
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include <stdint.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -20,7 +5,6 @@
 #include <stdbool.h>
 #include <ftw.h>
 
-#define INCLUDED_BY_MAIN_MODULE 1
 #include "config.h"
 #include "gpg.h"
 #include "../common/types.h"
diff --git a/projects/gnupg/fuzz_import.c b/projects/gnupg/fuzz_import.c
index a05f54a..e410fff 100644
--- a/projects/gnupg/fuzz_import.c
+++ b/projects/gnupg/fuzz_import.c
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include <stdint.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -20,7 +5,6 @@
 #include <stdbool.h>
 #include <ftw.h>
 
-#define INCLUDED_BY_MAIN_MODULE 1
 #include "config.h"
 #include "gpg.h"
 #include "../common/types.h"
diff --git a/projects/gnupg/fuzz_list.c b/projects/gnupg/fuzz_list.c
index d5a44ce..048eec1 100644
--- a/projects/gnupg/fuzz_list.c
+++ b/projects/gnupg/fuzz_list.c
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include <stdint.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -20,7 +5,6 @@
 #include <stdbool.h>
 #include <ftw.h>
 
-#define INCLUDED_BY_MAIN_MODULE 1
 #include "config.h"
 #include "gpg.h"
 #include "../common/types.h"
diff --git a/projects/gnupg/fuzz_verify.c b/projects/gnupg/fuzz_verify.c
index c32c1b7..f08ef0f 100644
--- a/projects/gnupg/fuzz_verify.c
+++ b/projects/gnupg/fuzz_verify.c
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 #include <stdint.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -20,7 +5,6 @@
 #include <stdbool.h>
 #include <ftw.h>
 
-#define INCLUDED_BY_MAIN_MODULE 1
 #include "config.h"
 #include "gpg.h"
 #include "../common/types.h"
diff --git a/projects/gnupg/project.yaml b/projects/gnupg/project.yaml
index c2c6ab2..48e8e08 100644
--- a/projects/gnupg/project.yaml
+++ b/projects/gnupg/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://www.gnupg.org"
-language: c++
 primary_contact: "p.antoine@catenacyber.fr"
-main_repo: 'git://git.gnupg.org/gnupg.git'
diff --git a/projects/gnutls/Dockerfile b/projects/gnutls/Dockerfile
index 4630429..a2182ee 100644
--- a/projects/gnutls/Dockerfile
+++ b/projects/gnutls/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alex.gaynor@gmail.com
 RUN apt-get update && apt-get install -y \
  make \
  pkg-config \
diff --git a/projects/gnutls/project.yaml b/projects/gnutls/project.yaml
index 8d9a6a2..87928f7 100644
--- a/projects/gnutls/project.yaml
+++ b/projects/gnutls/project.yaml
@@ -1,7 +1,7 @@
 homepage: "https://www.gnutls.org"
-language: c++
-primary_contact: "daiki.ueno@gmail.com"
+primary_contact: "n.mavrogiannopoulos@gmail.com"
 auto_ccs:
+  - "daiki.ueno@gmail.com"
   - "rockdaboot@gmail.com"
   - "nisse@google.com"
   - "anderjuaristi.cictg@gmail.com"
@@ -11,4 +11,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://gitlab.com/gnutls/gnutls.git'
diff --git a/projects/go-attestation/Dockerfile b/projects/go-attestation/Dockerfile
index 4e1651c..ff24e92 100644
--- a/projects/go-attestation/Dockerfile
+++ b/projects/go-attestation/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER bweeks@google.com
 
 RUN go get -u -d github.com/google/go-attestation/...
 
diff --git a/projects/go-attestation/build.sh b/projects/go-attestation/build.sh
index 7130cba..1aec572 100755
--- a/projects/go-attestation/build.sh
+++ b/projects/go-attestation/build.sh
@@ -15,13 +15,20 @@
 #
 ################################################################################
 
+# Based on the function from oss-fuzz/projects/golang/build.sh script.
+function compile_fuzzer {
+  package=$1
+  function=$2
+  fuzzer=$3
 
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $package
 
-compile_go_fuzzer github.com/google/go-attestation/attest FuzzParseEventLog \
-    parse_event_log_fuzzer
-compile_go_fuzzer github.com/google/go-attestation/attest FuzzParseAKPublic12 \
-    parse_ak_public12_fuzzer
-compile_go_fuzzer github.com/google/go-attestation/attest FuzzParseAKPublic20 \
-    parse_ak_public20_fuzzer
-compile_go_fuzzer github.com/google/go-attestation/attest FuzzParseEKCertificate \
-    parse_ek_certificate_fuzzer
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
+
+compile_fuzzer github.com/google/go-attestation/attest FuzzParseEventLog parse_event_log_fuzzer
+compile_fuzzer github.com/google/go-attestation/attest FuzzParseAKPublic12 parse_ak_public12_fuzzer
+compile_fuzzer github.com/google/go-attestation/attest FuzzParseAKPublic20 parse_ak_public20_fuzzer
+compile_fuzzer github.com/google/go-attestation/attest FuzzParseEKCertificate parse_ek_certificate_fuzzer
diff --git a/projects/go-attestation/project.yaml b/projects/go-attestation/project.yaml
index 87355e3..3dd47d8 100644
--- a/projects/go-attestation/project.yaml
+++ b/projects/go-attestation/project.yaml
@@ -8,4 +8,3 @@
 sanitizers:
   - address
 language: go
-main_repo: 'https://github.com/google/go-attestation'
diff --git a/projects/go-coredns/Dockerfile b/projects/go-coredns/Dockerfile
deleted file mode 100644
index 7991879..0000000
--- a/projects/go-coredns/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-ENV GO111MODULE=on
-RUN git clone --depth 1  https://github.com/coredns/coredns $GOPATH/src/github.com/coredns/coredns
-
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/go-coredns/build.sh b/projects/go-coredns/build.sh
deleted file mode 100755
index 50e4234..0000000
--- a/projects/go-coredns/build.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Same as usual except for added -tags gofuzz.
-
-cd $GOPATH/src/github.com/coredns/coredns
-
-#make
-ls plugin/*/fuzz.go | while read target
-do
-    fuzzed_plugin=`echo $target | cut -d'/' -f 2`
-    compile_go_fuzzer github.com/coredns/coredns/plugin/$fuzzed_plugin Fuzz fuzz_plugin_$fuzzed_plugin gofuzz
-done
-
-compile_go_fuzzer github.com/coredns/coredns/test Fuzz fuzz_core gofuzz
diff --git a/projects/go-coredns/project.yaml b/projects/go-coredns/project.yaml
deleted file mode 100644
index da4504b..0000000
--- a/projects/go-coredns/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://coredns.io"
-primary_contact: "security@coredns.io"
-auto_ccs :
-- "miek@miek.nl"
-- "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
diff --git a/projects/go-dns/Dockerfile b/projects/go-dns/Dockerfile
deleted file mode 100644
index a5576e7..0000000
--- a/projects/go-dns/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN go get -t github.com/miekg/dns
-
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/go-dns/build.sh b/projects/go-dns/build.sh
deleted file mode 100755
index d274ad9..0000000
--- a/projects/go-dns/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-# Same as usual except for added -tags fuzz.
-compile_go_fuzzer github.com/miekg/dns FuzzNewRR fuzz_newrr fuzz
-compile_go_fuzzer github.com/miekg/dns Fuzz fuzz_msg_unpack fuzz
diff --git a/projects/go-dns/project.yaml b/projects/go-dns/project.yaml
deleted file mode 100644
index 929485c..0000000
--- a/projects/go-dns/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/miekg/dns"
-primary_contact: "miek@miek.nl"
-auto_ccs:
-  - "me+google@tomthorogood.co.uk"
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: "https://github.com/miekg/dns"
diff --git a/projects/go-ethereum/Dockerfile b/projects/go-ethereum/Dockerfile
deleted file mode 100644
index 8323922..0000000
--- a/projects/go-ethereum/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --single-branch --depth=1 https://github.com/ethereum/go-ethereum $GOPATH/src/github.com/ethereum/go-ethereum 
-RUN (cd $GOPATH/src/github.com/ethereum/go-ethereum && go mod download)
-
-RUN cp $GOPATH/src/github.com/ethereum/go-ethereum/oss-fuzz.sh $SRC/build.sh
-# Enable this for easier local testing / repro
-#ADD build.sh $SRC/build.sh
-
-WORKDIR $SRC/
-
diff --git a/projects/go-ethereum/project.yaml b/projects/go-ethereum/project.yaml
deleted file mode 100644
index a4c8532..0000000
--- a/projects/go-ethereum/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/ethereum/go-ethereum"
-primary_contact: "peter@ethereum.org"
-auto_ccs :
-  - "fjl@ethereum.org"
-  - "martin.swende@ethereum.org"
-  - "marius.vanderwijden@ethereum.org"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/ethereum/go-ethereum'
diff --git a/projects/go-json-iterator/Dockerfile b/projects/go-json-iterator/Dockerfile
index 5d4cf02..eef259a 100644
--- a/projects/go-json-iterator/Dockerfile
+++ b/projects/go-json-iterator/Dockerfile
@@ -15,8 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/json-iterator/go json-iterator
+MAINTAINER taowen@gmail.com
+RUN go get github.com/json-iterator/go
 
-COPY fuzz_json.go $SRC/json-iterator/
+RUN mkdir fuzz
+COPY fuzz_json.go fuzz/
 COPY build.sh $SRC/
-WORKDIR $SRC/json-iterator/
+WORKDIR fuzz
diff --git a/projects/go-json-iterator/build.sh b/projects/go-json-iterator/build.sh
index f247b24..c8edbc3 100755
--- a/projects/go-json-iterator/build.sh
+++ b/projects/go-json-iterator/build.sh
@@ -15,5 +15,17 @@
 #
 ################################################################################
 
+# build target function
+function compile_fuzzer {
+  path=$1
+  function=$2
+  fuzzer=$3
 
-compile_go_fuzzer github.com/json-iterator/go Fuzz fuzz_json
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path
+
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
+
+compile_fuzzer . Fuzz fuzz_json
diff --git a/projects/go-json-iterator/fuzz_json.go b/projects/go-json-iterator/fuzz_json.go
index e5236be..c057a63 100644
--- a/projects/go-json-iterator/fuzz_json.go
+++ b/projects/go-json-iterator/fuzz_json.go
@@ -2,11 +2,12 @@
 // Use of this source code is governed by Apache 2 LICENSE.
 // Modified from original file https://github.com/dvyukov/go-fuzz-corpus/blob/master/json/json.go
 
-package jsoniter
+package jsonfuzz
 
 import (
 	"encoding/json"
 	"fmt"
+	jsoniter "github.com/json-iterator/go"
 	"reflect"
 )
 
@@ -20,7 +21,7 @@
 		func() interface{} { return new(S) },
 	} {
 		v := ctor()
-		if ConfigCompatibleWithStandardLibrary.Unmarshal(data, v) != nil {
+		if jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(data, v) != nil {
 			continue
 		}
 		score = 1
@@ -35,12 +36,12 @@
 			panic("not equal")
 		}
 
-		data1, err := ConfigCompatibleWithStandardLibrary.Marshal(v)
+		data1, err := jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(v)
 		if err != nil {
 			panic(err)
 		}
 		v1 := ctor()
-		if ConfigCompatibleWithStandardLibrary.Unmarshal(data1, v1) != nil {
+		if jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(data1, v1) != nil {
 			continue
 		}
 		if !reflect.DeepEqual(v, v1) {
@@ -84,9 +85,9 @@
 }
 
 func (m *Marshaller) MarshalJSON() ([]byte, error) {
-	return ConfigCompatibleWithStandardLibrary.Marshal(m.v)
+	return jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(m.v)
 }
 
 func (m *Marshaller) UnmarshalJSON(data []byte) error {
-	return ConfigCompatibleWithStandardLibrary.Unmarshal(data, &m.v)
+	return jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(data, &m.v)
 }
diff --git a/projects/go-redis/Dockerfile b/projects/go-redis/Dockerfile
deleted file mode 100644
index b0ad177..0000000
--- a/projects/go-redis/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/go-redis/redis redis
-COPY build.sh $SRC/
-WORKDIR $SRC/redis
-
diff --git a/projects/go-redis/build.sh b/projects/go-redis/build.sh
deleted file mode 100644
index e297cd3..0000000
--- a/projects/go-redis/build.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#github.com/go-redis/redis/fuzz is not a module, so needs local build
-compile_go_fuzzer ./fuzz Fuzz fuzz gofuzz
diff --git a/projects/go-redis/project.yaml b/projects/go-redis/project.yaml
deleted file mode 100644
index b434a04..0000000
--- a/projects/go-redis/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/go-redis/redis"
-main_repo: "https://github.com/go-redis/redis"
-primary_contact: "vladimir.webdev@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/go-sftp/Dockerfile b/projects/go-sftp/Dockerfile
deleted file mode 100644
index 0269d8e..0000000
--- a/projects/go-sftp/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/pkg/sftp
-
-COPY build.sh $SRC/
-WORKDIR $SRC/sftp
diff --git a/projects/go-sftp/build.sh b/projects/go-sftp/build.sh
deleted file mode 100755
index 0e8460f..0000000
--- a/projects/go-sftp/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer . Fuzz fuzz_sftp
diff --git a/projects/go-sftp/project.yaml b/projects/go-sftp/project.yaml
deleted file mode 100644
index 5f0d4e9..0000000
--- a/projects/go-sftp/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/pkg/sftp"
-primary_contact: "nicola.murino@gmail.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/pkg/sftp'
diff --git a/projects/go-snappy/Dockerfile b/projects/go-snappy/Dockerfile
deleted file mode 100644
index d6d08af..0000000
--- a/projects/go-snappy/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/golang/snappy
-
-COPY build.sh $SRC/
-COPY fuzz.go $SRC/snappy
-WORKDIR $SRC/snappy
diff --git a/projects/go-snappy/build.sh b/projects/go-snappy/build.sh
deleted file mode 100755
index 805eefb..0000000
--- a/projects/go-snappy/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer . FuzzRoundTrip fuzz_roundtrip gofuzz
-compile_go_fuzzer . FuzzDecode fuzz_decode gofuzz
diff --git a/projects/go-snappy/fuzz.go b/projects/go-snappy/fuzz.go
deleted file mode 100644
index 6722fd0..0000000
--- a/projects/go-snappy/fuzz.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// +build gofuzz
-
-package snappy
-
-import (
-	"bytes"
-)
-
-func FuzzRoundTrip(data []byte) int {
-	if len(data) > 1234567 {
-		return 0
-	}
-	encoded := Encode(nil, data)
-	decoded, err := Decode(nil, encoded)
-	if err != nil {
-		panic("Error decoding snappy-encoded")
-	}
-	if !bytes.Equal(data, decoded) {
-		panic("Different result on roundtrip encode/decode")
-	}
-	return 1
-}
-
-func FuzzDecode(data []byte) int {
-	if n, _ := DecodedLen(data); n > 1234567 {
-		return 0
-	}
-	_, err := Decode(nil, data)
-	if err != nil {
-		return 0
-	}
-	return 1
-}
diff --git a/projects/go-snappy/project.yaml b/projects/go-snappy/project.yaml
deleted file mode 100644
index 8a732cc..0000000
--- a/projects/go-snappy/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/golang/snappy"
-primary_contact: "nigeltao@golang.org"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/golang/snappy'
diff --git a/projects/go-sqlite3/Dockerfile b/projects/go-sqlite3/Dockerfile
deleted file mode 100644
index f1b10e1..0000000
--- a/projects/go-sqlite3/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 http://github.com/mattn/go-sqlite3 $GOPATH/src/github.com/mattn/go-sqlite3
-
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/go-sqlite3/build.sh b/projects/go-sqlite3/build.sh
deleted file mode 100755
index 6efdb06..0000000
--- a/projects/go-sqlite3/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $GOPATH/src/github.com/mattn/go-sqlite3
-
-compile_go_fuzzer github.com/mattn/go-sqlite3/_example/fuzz FuzzOpenExec fuzz_open_exec
-
-# generate corpus
-go run _example/simple/simple.go
-echo -n -e "select id, name from foo\x00" > simple.fuzc
-cat foo.db >> simple.fuzc
-zip -r $OUT/fuzz_open_exec_seed_corpus.zip simple.fuzc
diff --git a/projects/go-sqlite3/project.yaml b/projects/go-sqlite3/project.yaml
deleted file mode 100644
index 11ef0b1..0000000
--- a/projects/go-sqlite3/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "http://mattn.github.io/go-sqlite3/"
-primary_contact: "mattn.jp@gmail.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/mattn/go-sqlite3/'
diff --git a/projects/golang-protobuf/Dockerfile b/projects/golang-protobuf/Dockerfile
index 1347a76..be337f8 100644
--- a/projects/golang-protobuf/Dockerfile
+++ b/projects/golang-protobuf/Dockerfile
@@ -15,11 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER dneil@google.com
 
 ENV GO111MODULE="on"
 ENV GOFUZZ111MODULE="on"
 
 RUN go get google.golang.org/protobuf/proto
-RUN git clone https://go.googlesource.com/protobuf $GOPATH/src/google.golang.org/protobuf
+RUN git clone https://go.googlesource.com/protobuf $SRC/protobuf
 COPY build.sh $SRC/
-WORKDIR $GOPATH/src/google.golang.org/protobuf
+WORKDIR $SRC/protobuf
diff --git a/projects/golang-protobuf/build.sh b/projects/golang-protobuf/build.sh
index ce1fc40..bd1da14 100755
--- a/projects/golang-protobuf/build.sh
+++ b/projects/golang-protobuf/build.sh
@@ -1,14 +1,19 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-. internal/fuzz/oss-fuzz-build.sh
+function compile_fuzzer {
+  path=$1
+  function=$2
+  fuzzer=$3
+
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path
+
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
+
+for x in internal/fuzz/*; do
+  if [ -d $x/corpus ]; then
+    name=$(basename $x)
+    compile_fuzzer ./$x Fuzz $name
+    zip -jr $OUT/${name}_seed_corpus.zip $x/corpus
+  fi
+done
diff --git a/projects/golang-protobuf/project.yaml b/projects/golang-protobuf/project.yaml
index 7117b12..71ee2df 100644
--- a/projects/golang-protobuf/project.yaml
+++ b/projects/golang-protobuf/project.yaml
@@ -2,7 +2,6 @@
 primary_contact: "dneil@google.com"
 auto_ccs:
  - "joetsai@google.com"
- - "herbie@google.com"
 sanitizers:
  - address
 fuzzing_engines:
diff --git a/projects/golang/Dockerfile b/projects/golang/Dockerfile
index 1118ce4..bb59761 100644
--- a/projects/golang/Dockerfile
+++ b/projects/golang/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 
 RUN mkdir -p $GOPATH/src/github.com/dvyukov/ && \
     cd $GOPATH/src/github.com/dvyukov/ && \
diff --git a/projects/golang/build.sh b/projects/golang/build.sh
index 064378a..efcbcfa 100755
--- a/projects/golang/build.sh
+++ b/projects/golang/build.sh
@@ -1,25 +1,21 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
 function compile_fuzzer {
-  fuzzer=$(basename $1)
+    fuzzer=$(basename $1)
 
-  compile_go_fuzzer "github.com/dvyukov/go-fuzz-corpus/$fuzzer" Fuzz $fuzzer
+    # Instrument all Go files relevant to this fuzzer, compile and store in $fuzzer.a
+    go-fuzz-build -libfuzzer -o $fuzzer.a github.com/dvyukov/go-fuzz-corpus/$fuzzer
 
-  # Pack the seed corpus
-  zip -r $OUT/fuzzer-${fuzzer}_seed_corpus.zip \
-      $GOPATH/src/github.com/dvyukov/go-fuzz-corpus/$fuzzer/corpus
+    # Instrumented, compiled Go ($fuzzer.a) + libFuzzer = fuzzer binary
+    $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o fuzzer-$fuzzer
+
+    # Copy the fuzzer binary
+    cp fuzzer-$fuzzer $OUT
+
+    # Pack the seed corpus
+    zip -r fuzzer-${fuzzer}_seed_corpus.zip \
+        $GOPATH/src/github.com/dvyukov/go-fuzz-corpus/$fuzzer/corpus
+
+    # Copy the seed corpus
+    cp fuzzer-${fuzzer}_seed_corpus.zip $OUT
 }
 
 export -f compile_fuzzer
diff --git a/projects/golang/project.yaml b/projects/golang/project.yaml
index ed1e863..939f457 100644
--- a/projects/golang/project.yaml
+++ b/projects/golang/project.yaml
@@ -1,9 +1,9 @@
 homepage: "https://golang.org/"
-primary_contact: "golang-fuzz@googlegroups.com"
+primary_contact: "guidovranken@gmail.com"
 auto_ccs:
+ - "golang-fuzz@googlegroups.com"
  - "mmoroz@chromium.org"
  - "josharian@gmail.com"
- - "emmanuel@orijtech.com"
 language: go
 sanitizers:
  - address
diff --git a/projects/gonids/Dockerfile b/projects/gonids/Dockerfile
index 66e9a89..6ca5bd5 100644
--- a/projects/gonids/Dockerfile
+++ b/projects/gonids/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN go get -t github.com/google/gonids
+MAINTAINER duane.security@gmail.com
+RUN go get github.com/google/gonids
 
 ADD https://rules.emergingthreats.net/open/suricata/emerging.rules.zip emerging.rules.zip
 
diff --git a/projects/gonids/build.sh b/projects/gonids/build.sh
index 590045f..e98d54c 100755
--- a/projects/gonids/build.sh
+++ b/projects/gonids/build.sh
@@ -15,7 +15,20 @@
 #
 ################################################################################
 
-compile_go_fuzzer github.com/google/gonids FuzzParseRule fuzz_parserule
+# build target function
+function compile_fuzzer {
+  path=$1
+  function=$2
+  fuzzer=$3
+
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path
+
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
+
+compile_fuzzer /root/go/src/github.com/google/gonids/ FuzzParseRule fuzz_parserule
 
 unzip emerging.rules.zip
 cd rules
@@ -25,4 +38,4 @@
 set +x
 cat *.rules | while read l; do echo $l > corpus/$i.rule; i=$((i+1)); done
 set -x
-zip -q -r $OUT/fuzz_parserule_seed_corpus.zip corpus
+zip -r $OUT/fuzz_parserule_seed_corpus.zip corpus
diff --git a/projects/gonids/project.yaml b/projects/gonids/project.yaml
index c57d8bb..2b36088 100644
--- a/projects/gonids/project.yaml
+++ b/projects/gonids/project.yaml
@@ -1,10 +1,8 @@
 homepage: "https://github.com/google/gonids"
 primary_contact: "duane.security@gmail.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
+auto_ccs : "p.antoine@catenacyber.fr"
 language: go
 fuzzing_engines:
-  - libfuzzer
+- libfuzzer
 sanitizers:
-  - address
-main_repo: 'https://github.com/google/gonids'
+- address
diff --git a/projects/gopacket/Dockerfile b/projects/gopacket/Dockerfile
deleted file mode 100644
index f8816e5..0000000
--- a/projects/gopacket/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN go get github.com/google/gopacket
-
-COPY build.sh $SRC/
-WORKDIR $SRC
diff --git a/projects/gopacket/build.sh b/projects/gopacket/build.sh
deleted file mode 100755
index 6fc07e6..0000000
--- a/projects/gopacket/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-
-compile_go_fuzzer github.com/google/gopacket/layers FuzzLayer fuzz_layers
diff --git a/projects/gopacket/project.yaml b/projects/gopacket/project.yaml
deleted file mode 100644
index eec259b..0000000
--- a/projects/gopacket/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/google/gopacket"
-primary_contact: "gconnell@google.com"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/google/gopacket'
diff --git a/projects/gpac/Dockerfile b/projects/gpac/Dockerfile
deleted file mode 100755
index cf7fc80..0000000
--- a/projects/gpac/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y build-essential pkg-config libz-dev
-RUN git clone https://github.com/gpac/gpac
-
-WORKDIR $SRC
-COPY build.sh $SRC/
-COPY fuzz_parse.c $SRC/
diff --git a/projects/gpac/build.sh b/projects/gpac/build.sh
deleted file mode 100755
index 904f5f2..0000000
--- a/projects/gpac/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd gpac
-./configure --static-build --extra-cflags="${CFLAGS}" --extra-ldflags="${CFLAGS}"
-make
-cp $SRC/fuzz_parse.c . 
-
-$CC $CFLAGS $LIB_FUZZING_ENGINE fuzz_parse.c -o $OUT/fuzz_parse \
-    -I./include -I./ ./bin/gcc/libgpac_static.a \
-    -lm -lz -lpthread -DGPAC_HAVE_CONFIG_H 
diff --git a/projects/gpac/fuzz_parse.c b/projects/gpac/fuzz_parse.c
deleted file mode 100644
index b7c9ac9..0000000
--- a/projects/gpac/fuzz_parse.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2021 Google LLC
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-      http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-#include <stdio.h>
-#include <unistd.h>
-
-#include <gpac/internal/isomedia_dev.h>
-#include <gpac/constants.h>
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    char filename[256];
-    sprintf(filename, "/tmp/libfuzzer.%d", getpid());
-
-    FILE *fp = fopen(filename, "wb");
-    if (!fp) {
-        return 0;
-    }
-    fwrite(data, size, 1, fp);
-    fclose(fp);
-
-    GF_ISOFile *movie = NULL;
-    movie = gf_isom_open_file(filename, GF_ISOM_OPEN_READ_DUMP, NULL);
-    if (movie != NULL) {
-        gf_isom_close(movie);
-    }
-    unlink(filename);
-    return 0;
-}
diff --git a/projects/gpac/project.yaml b/projects/gpac/project.yaml
deleted file mode 100755
index 1229d12..0000000
--- a/projects/gpac/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://gpac.wp.imt.fr/"
-main_repo: "https://github.com/gpac/gpac"
-primary_contact: "project.gpac@gmail.com"
-language: c
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/graphicsfuzz-spirv/project.yaml b/projects/graphicsfuzz-spirv/project.yaml
index 7613cff..add495c 100644
--- a/projects/graphicsfuzz-spirv/project.yaml
+++ b/projects/graphicsfuzz-spirv/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.graphicsfuzz.com"
-language: c++
 primary_contact: "afdx@google.com"
 auto_ccs:
   - "paulthomson@google.com"
@@ -16,6 +15,3 @@
 architectures:
   - x86_64
   - i386
-
-disabled: True
-blackbox: true
diff --git a/projects/graphicsmagick/Dockerfile b/projects/graphicsmagick/Dockerfile
index 97f3a56..8869d1d 100644
--- a/projects/graphicsmagick/Dockerfile
+++ b/projects/graphicsmagick/Dockerfile
@@ -15,10 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y mercurial automake autopoint cmake libtool nasm pkg-config po4a
-RUN hg clone --time -b default https://hg.osdn.net/view/graphicsmagick/GM graphicsmagick || \
-    hg clone --time -b default https://hg.osdn.net/view/graphicsmagick/GM graphicsmagick || \
-    hg clone --time -b default https://hg.osdn.net/view/graphicsmagick/GM graphicsmagick
+MAINTAINER alex.gaynor@gmail.com
+RUN apt-get update && apt-get install -y mercurial automake autopoint cmake libtool nasm pkg-config
+RUN hg clone --time -b default http://hg.code.sf.net/p/graphicsmagick/code graphicsmagick || \
+    hg clone --time -b default http://hg.code.sf.net/p/graphicsmagick/code graphicsmagick || \
+    hg clone --time -b default http://hg.code.sf.net/p/graphicsmagick/code graphicsmagick
 
 RUN git clone --depth 1 https://gitlab.com/libtiff/libtiff
 RUN git clone --depth 1 https://github.com/webmproject/libwebp
@@ -26,13 +27,11 @@
 RUN git clone --depth 1 https://github.com/xz-mirror/xz
 RUN git clone --depth 1 https://github.com/facebook/zstd
 RUN git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo
-RUN git clone https://git.savannah.nongnu.org/r/freetype/freetype2.git/
+RUN git clone --depth 1 https://git.savannah.nongnu.org/r/freetype/freetype2
 RUN git clone --depth 1 https://github.com/pnggroup/libpng
 RUN git clone --depth 1 https://github.com/mm2/Little-CMS
 RUN git clone https://git.ghostscript.com/ghostpdl.git
 RUN git clone --depth 1 https://gitlab.com/federicomenaquintero/bzip2.git
-RUN git clone --depth 1 https://github.com/jasper-software/jasper
-RUN git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
 
 WORKDIR graphicsmagick
 COPY build.sh $SRC/
diff --git a/projects/graphicsmagick/project.yaml b/projects/graphicsmagick/project.yaml
index 7b16f6c..fc74038 100644
--- a/projects/graphicsmagick/project.yaml
+++ b/projects/graphicsmagick/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.graphicsmagick.org/"
-language: c++
 primary_contact: "bobjfriesenhahn@gmail.com"
 auto_ccs:
     - troyjp@gmail.com
diff --git a/projects/grok/Dockerfile b/projects/grok/Dockerfile
deleted file mode 100644
index 9551e85..0000000
--- a/projects/grok/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/GrokImageCompression/grok.git grok
-RUN git clone --depth 1 https://github.com/GrokImageCompression/grok-test-data.git grok-data
-WORKDIR grok
-COPY build.sh $SRC/
diff --git a/projects/grok/build.sh b/projects/grok/build.sh
deleted file mode 100755
index 4ec01fb..0000000
--- a/projects/grok/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mkdir build
-cd build
-cmake ..
-make clean -s
-make -j$(nproc) -s
-cd ..
-
-./tests/fuzzers/build_google_oss_fuzzers.sh
-./tests/fuzzers/build_seed_corpus.sh
diff --git a/projects/grok/project.yaml b/projects/grok/project.yaml
deleted file mode 100644
index 15541d0..0000000
--- a/projects/grok/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/GrokImageCompression/grok"
-primary_contact: "boxerab@gmail.com"
-language: c++
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-sanitizers:
-  - address
-  - memory
-  - undefined
-main_repo: 'https://github.com/GrokImageCompression/grok.git'
diff --git a/projects/grpc-gateway/Dockerfile b/projects/grpc-gateway/Dockerfile
deleted file mode 100644
index 9a7cad2..0000000
--- a/projects/grpc-gateway/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-ENV GO111MODULE on
-RUN git clone https://github.com/grpc-ecosystem/grpc-gateway
-COPY build.sh $SRC/
-WORKDIR $SRC/grpc-gateway
diff --git a/projects/grpc-gateway/build.sh b/projects/grpc-gateway/build.sh
deleted file mode 100755
index 19c4ac5..0000000
--- a/projects/grpc-gateway/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-if [ "$SANITIZER" = "coverage" ]
-then
-	go get github.com/grpc-ecosystem/grpc-gateway/...
-	compile_go_fuzzer github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule Fuzz fuzz gofuzz
-else
-	compile_go_fuzzer github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule Fuzz fuzz gofuzz
-fi
diff --git a/projects/grpc-gateway/project.yaml b/projects/grpc-gateway/project.yaml
deleted file mode 100644
index f2ad693..0000000
--- a/projects/grpc-gateway/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/grpc-ecosystem/grpc-gateway"
-primary_contact: "grpc-gateway-maintainers@googlegroups.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/grpc-ecosystem/grpc-gateway'
diff --git a/projects/grpc-go/Dockerfile b/projects/grpc-go/Dockerfile
deleted file mode 100644
index dc00af5..0000000
--- a/projects/grpc-go/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-ENV GO111MODULE=on
-RUN go get google.golang.org/protobuf/cmd/protoc-gen-go google.golang.org/grpc/cmd/protoc-gen-go-grpc
-RUN git clone --depth 1 https://github.com/grpc/grpc-go $GOPATH/src/google.golang.org/grpc
-
-COPY build.sh fuzz_*.go $SRC/
-WORKDIR $SRC/
diff --git a/projects/grpc-go/build.sh b/projects/grpc-go/build.sh
deleted file mode 100755
index 09f3df6..0000000
--- a/projects/grpc-go/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cp $SRC/fuzz*.go $GOPATH/src/google.golang.org/grpc/examples/
-
-# seems needed to build the targets with the golang modules...
-cd $GOPATH/src/google.golang.org/grpc/examples/
-compile_go_fuzzer google.golang.org/grpc/examples FuzzHelloClient fuzz_helloclient
-compile_go_fuzzer google.golang.org/grpc/examples FuzzHelloServer fuzz_helloserver
diff --git a/projects/grpc-go/fuzz_hello.go b/projects/grpc-go/fuzz_hello.go
deleted file mode 100644
index 1202b96..0000000
--- a/projects/grpc-go/fuzz_hello.go
+++ /dev/null
@@ -1,113 +0,0 @@
-package grpc_hello_fuzz
-
-import (
-	"context"
-	"log"
-	"net"
-	"time"
-
-	"google.golang.org/grpc"
-	pb "google.golang.org/grpc/examples/helloworld/helloworld"
-)
-
-var initialized = 0
-
-type server struct {
-	pb.UnimplementedGreeterServer
-}
-
-// SayHello implements helloworld.GreeterServer
-func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
-	log.Printf("Received: %v", in.GetName())
-	return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
-}
-
-func FuzzHelloServer(data []byte) int {
-	if initialized == 0 {
-		lis, err := net.Listen("tcp", ":50051")
-		if err != nil {
-			log.Printf("failed to listen: %v\n", err)
-			return 0
-		}
-		s := grpc.NewServer()
-		pb.RegisterGreeterServer(s, &server{})
-		// start server as a separate goroutine
-		go func() {
-			if err := s.Serve(lis); err != nil {
-				log.Printf("failed to serve: %v\n", err)
-			}
-		}()
-		initialized = 1
-	}
-
-	conn, err := net.Dial("tcp", "localhost:50051")
-	if err != nil {
-		log.Printf("failed to dial: %v\n", err)
-		return 0
-	}
-	conn.Write(data)
-	response := make([]byte, 1+len(data))
-	n, err := conn.Read(response)
-	conn.Close()
-	if err != nil || n == 0 {
-		return 0
-	}
-	return 1
-}
-
-var fuzzdata []byte
-
-func FuzzHelloClient(data []byte) int {
-	if len(data) == 0 {
-		return 0
-	}
-	if initialized == 0 {
-		lis, err := net.Listen("tcp", ":50051")
-		if err != nil {
-			log.Printf("failed to listen: %v\n", err)
-			return 0
-		}
-		go func() {
-			for {
-				conn, err := lis.Accept()
-				if err != nil {
-					log.Printf("did not accept: %v", err)
-					break
-				}
-				conn.SetDeadline(time.Now().Add(time.Millisecond * 100))
-				request := make([]byte, 24)
-				n, err := conn.Read(request)
-				if err != nil || n == 0 {
-					log.Printf("did not read: %v", err)
-					conn.Close()
-					break
-				}
-				n, err = conn.Write(fuzzdata)
-				if err != nil || n == 0 {
-					log.Printf("did not write: %v", err)
-				}
-				conn.Close()
-			}
-		}()
-		initialized = 1
-	}
-
-	fuzzdata = data
-	// Set up a connection to the server.
-	ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*10)
-	defer cancel()
-	conn, err := grpc.DialContext(ctx, "localhost:50051", grpc.WithInsecure(), grpc.WithBlock())
-	if err != nil {
-		return 0
-	}
-	defer conn.Close()
-	c := pb.NewGreeterClient(conn)
-
-	// Contact the server and print out its response.
-	r, err := c.SayHello(ctx, &pb.HelloRequest{Name: "world"})
-	if err != nil {
-		return 0
-	}
-	r.GetMessage()
-	return 1
-}
diff --git a/projects/grpc-go/project.yaml b/projects/grpc-go/project.yaml
deleted file mode 100644
index 10821f8..0000000
--- a/projects/grpc-go/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://grpc.io/"
-primary_contact: "menghanl@google.com"
-auto_ccs:
-  - "dfawley@google.com"
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/grpc/grpc-go'
diff --git a/projects/grpc/Dockerfile b/projects/grpc/Dockerfile
index 6d2a310..8f004bf 100644
--- a/projects/grpc/Dockerfile
+++ b/projects/grpc/Dockerfile
@@ -14,7 +14,10 @@
 #
 ################################################################################
 
-FROM gcr.io/oss-fuzz-base/base-builder
+# TODO(https://github.com/google/oss-fuzz/issues/3093): Stop specifying the
+# image SHA once the bug is fixed.
+FROM gcr.io/oss-fuzz-base/base-builder@sha256:276813aef0ce5972db43c0230f96162003994fa742fb1b2f4e66c67498575c65
+MAINTAINER yangg@google.com
 
 RUN apt-get update && apt-get install -y software-properties-common python-software-properties
 RUN add-apt-repository ppa:webupd8team/java
@@ -25,8 +28,7 @@
 	make            \
         curl            \
         autoconf        \
-        libtool         \
-        rsync
+        libtool
 
 # Install dependencies
 
diff --git a/projects/grpc/build.sh b/projects/grpc/build.sh
index fc82bac..8583153 100755
--- a/projects/grpc/build.sh
+++ b/projects/grpc/build.sh
@@ -24,7 +24,7 @@
 
 readonly FUZZER_TARGETS=(
   test/core/json:json_fuzzer
-  test/core/uri:uri_fuzzer_test
+  test/core/client_channel:uri_fuzzer_test
   test/core/http:request_fuzzer
   test/core/http:response_fuzzer
   test/core/nanopb:fuzzer_response
@@ -129,7 +129,7 @@
 # We don't have a consistent naming convention between fuzzer files and corpus
 # directories so we resort to hard coding zipping corpuses
 zip "${OUT}/json_fuzzer_seed_corpus.zip" test/core/json/corpus/*
-zip "${OUT}/uri_fuzzer_test_seed_corpus.zip" test/core/uri/uri_corpus/*
+zip "${OUT}/uri_fuzzer_test_seed_corpus.zip" test/core/client_channel/uri_corpus/*
 zip "${OUT}/request_fuzzer_seed_corpus.zip" test/core/http/request_corpus/*
 zip "${OUT}/response_fuzzer_seed_corpus.zip" test/core/http/response_corpus/*
 zip "${OUT}/fuzzer_response_seed_corpus.zip" test/core/nanopb/corpus_response/*
diff --git a/projects/grpc/project.yaml b/projects/grpc/project.yaml
index 6c0d25f..3807e7c 100644
--- a/projects/grpc/project.yaml
+++ b/projects/grpc/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.grpc.io/"
-language: c++
 primary_contact: "nnoble@google.com"
 auto_ccs:
   - "donnadionne@google.com"
@@ -11,4 +10,3 @@
 fuzzing_engines:
   - libfuzzer
 coverage_extra_args: -ignore-filename-regex=.*\.cache.*
-main_repo: 'https://github.com/grpc/grpc'
diff --git a/projects/gstreamer/Dockerfile b/projects/gstreamer/Dockerfile
index 46318a5..4df66ca 100644
--- a/projects/gstreamer/Dockerfile
+++ b/projects/gstreamer/Dockerfile
@@ -15,25 +15,25 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER bilboed@bilboed.com
 # Install the build dependencies
 
 # install the minimum
 
 RUN sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list" && \
    apt-get update && \
-   apt-get install -y build-essential pkg-config bison flex gettext \
-    libffi-dev liblzma-dev libvorbis-dev libtheora-dev libogg-dev zlib1g-dev \
-    python3-pip && \
-   pip3 install meson==0.55.1 ninja==1.10.0.post2
+   apt-get install -y make autoconf automake libtool build-essential \
+    autopoint pkg-config bison flex gettext libffi-dev liblzma-dev \
+    libvorbis-dev libtheora-dev libogg-dev zlib1g-dev
 
-ADD https://ftp.gnome.org/pub/gnome/sources/glib/2.64/glib-2.64.2.tar.xz $SRC
+ADD https://ftp.gnome.org/pub/gnome/sources/glib/2.54/glib-2.54.2.tar.xz $SRC
 
 # Checkout all development repositories
 #RUN for i in orc  gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav; do git clone --depth 1 --recursive https://anongit.freedesktop.org/git/gstreamer/$i $i; done  
 RUN \
-  git clone --depth 1 --recursive https://gitlab.freedesktop.org/gstreamer/gstreamer.git gstreamer && \
-  git clone --depth 1 --recursive https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git gst-plugins-base && \
-  git clone --depth 1 --recursive https://gitlab.freedesktop.org/gstreamer/gst-ci.git gst-ci
+  git clone --depth 1 --recursive https://anongit.freedesktop.org/git/gstreamer/gstreamer gstreamer && \
+  git clone --depth 1 --recursive https://anongit.freedesktop.org/git/gstreamer/gst-plugins-base gst-plugins-base && \
+  git clone --depth 1 --recursive https://anongit.freedesktop.org/git/gstreamer/gst-ci gst-ci
 
 ADD https://people.freedesktop.org/~bilboed/gst-discoverer_seed_corpus.zip $SRC
 
diff --git a/projects/gstreamer/project.yaml b/projects/gstreamer/project.yaml
index dd0fe14..3908093 100644
--- a/projects/gstreamer/project.yaml
+++ b/projects/gstreamer/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://gstreamer.freedesktop.org/"
-language: c++
 primary_contact: "gstreamer-security@lists.freedesktop.org"
 auto_ccs:
  - "bilboed@bilboed.com"
@@ -9,4 +8,3 @@
  - "saunierthibault@gmail.com"
  - "ystreet00@gmail.com"
  - "thaytan@noraisin.net"
-main_repo: 'https://gitlab.freedesktop.org/gstreamer/gstreamer.git'
diff --git a/projects/guetzli/Dockerfile b/projects/guetzli/Dockerfile
index cb17099..28ad615 100644
--- a/projects/guetzli/Dockerfile
+++ b/projects/guetzli/Dockerfile
@@ -15,10 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER robryk@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool libpng-dev pkg-config curl
 
 RUN mkdir afl-testcases
-RUN cd afl-testcases/ && curl https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar -xz
+RUN cd afl-testcases/ && curl http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar -xz
 RUN zip guetzli_fuzzer_seed_corpus.zip afl-testcases/jpeg/full/images/* afl-testcases/jpeg_turbo/full/images/* $SRC/libjpeg-turbo/testimages/
 
 RUN git clone --depth=1 https://github.com/google/guetzli guetzli
diff --git a/projects/guetzli/project.yaml b/projects/guetzli/project.yaml
index b17faaa..a797056 100644
--- a/projects/guetzli/project.yaml
+++ b/projects/guetzli/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/guetzli"
-language: c++
 primary_contact: "robryk@google.com"
 auto_ccs:
   - "szabadka@google.com"
@@ -7,4 +6,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/google/guetzli'
diff --git a/projects/h2o/Dockerfile b/projects/h2o/Dockerfile
index 02cf2c5..ad2f4e4 100644
--- a/projects/h2o/Dockerfile
+++ b/projects/h2o/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan.foote@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
 RUN git clone https://github.com/h2o/h2o
 WORKDIR h2o
diff --git a/projects/h2o/project.yaml b/projects/h2o/project.yaml
index 3c32e81..585efec 100644
--- a/projects/h2o/project.yaml
+++ b/projects/h2o/project.yaml
@@ -1,12 +1,7 @@
 homepage: "https://github.com/h2o/h2o"
-language: c++
 primary_contact: "jonathan.foote@gmail.com"
-sanitizers:
-  - address
-  - undefined
 auto_ccs:
   - "frederik.deweerdt@gmail.com"
   - "kazuhooku@gmail.com"
   - "i.nagata110@gmail.com"
   - "security@fastly.com"
-main_repo: 'https://github.com/h2o/h2o'
diff --git a/projects/haproxy/Dockerfile b/projects/haproxy/Dockerfile
deleted file mode 100755
index 92a30f6..0000000
--- a/projects/haproxy/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-RUN git clone https://github.com/haproxy/haproxy
-
-WORKDIR $SRC
-
-COPY build.sh $SRC
-COPY fuzz* $SRC/
diff --git a/projects/haproxy/build.sh b/projects/haproxy/build.sh
deleted file mode 100755
index b7afc78..0000000
--- a/projects/haproxy/build.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-export ORIG_CFLAGS=${CFLAGS}
-cd haproxy
-
-# Fix some things in the Makefile where there are no options available
-sed 's/CFLAGS = $(ARCH_FLAGS) $(CPU_CFLAGS) $(DEBUG_CFLAGS) $(SPEC_CFLAGS)/CFLAGS = $(ARCH_FLAGS) $(CPU_CFLAGS) $(DEBUG_CFLAGS) $(SPEC_CFLAGS) ${ORIG_CFLAGS}/g' -i Makefile
-sed 's/LDFLAGS = $(ARCH_FLAGS) -g/LDFLAGS = $(ARCH_FLAGS) -g ${CXXFLAGS}/g' -i Makefile
-make TARGET=generic CC=${CC} LD=${CXX} 
-
-# Make a copy of the main file since it has many global functions we need to declare
-# We dont want the main function but we need the rest of the stuff in haproxy.c
-cd /src/haproxy
-sed 's/int main(int argc/int main2(int argc/g' -i ./src/haproxy.c
-sed 's/dladdr(main,/dladdr(main2,/g' -i ./src/tools.c
-sed 's/(void*)main/(void*)main2/g' -i ./src/tools.c
-
-
-SETTINGS="-Iinclude -g -DUSE_POLL -DUSE_TPROXY -DCONFIG_HAPROXY_VERSION=\"\" -DCONFIG_HAPROXY_DATE=\"\""
-
-$CC $CFLAGS $SETTINGS -c -o ./src/haproxy.o ./src/haproxy.c
-ar cr libhaproxy.a ./src/*.o
-
-for fuzzer in hpack_decode cfg_parser; do
-  cp $SRC/fuzz_${fuzzer}.c .
-  $CC $CFLAGS $SETTINGS -c fuzz_${fuzzer}.c  -o fuzz_${fuzzer}.o
-  $CXX -g $CXXFLAGS $LIB_FUZZING_ENGINE  fuzz_${fuzzer}.o libhaproxy.a -o $OUT/fuzz_${fuzzer}
-done
diff --git a/projects/haproxy/fuzz_cfg_parser.c b/projects/haproxy/fuzz_cfg_parser.c
deleted file mode 100644
index 2879731..0000000
--- a/projects/haproxy/fuzz_cfg_parser.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-*/
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    if (size < 50)
-        return 0;
-
-	char filename[256];
-	sprintf(filename, "/tmp/libfuzzer.%d", getpid());
-
-	FILE *fp = fopen(filename, "wb");
-	if (!fp)
-			return 0;
-	fwrite(data, size, 1, fp);
-	fclose(fp);
-
-	// Fuzz the cfg parser
-	readcfgfile(filename);
-
-	unlink(filename);
-
-	return 0;
-}
diff --git a/projects/haproxy/fuzz_hpack_decode.c b/projects/haproxy/fuzz_hpack_decode.c
deleted file mode 100644
index 80ba8c3..0000000
--- a/projects/haproxy/fuzz_hpack_decode.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * # Copyright 2020 Google Inc.
- * #
- * # Licensed under the Apache License, Version 2.0 (the "License");
- * # you may not use this file except in compliance with the License.
- * # You may obtain a copy of the License at
- * #
- * #      http://www.apache.org/licenses/LICENSE-2.0
- * #
- * # Unless required by applicable law or agreed to in writing, software
- * # distributed under the License is distributed on an "AS IS" BASIS,
- * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * # See the License for the specific language governing permissions and
- * # limitations under the License.
- * #
- * ################################################################################
- * */
-#define HPACK_STANDALONE
-
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <haproxy/chunk.h>
-#include <haproxy/hpack-dec.h>
-
-#define MAX_RQ_SIZE 65536
-#define MAX_HDR_NUM 1000
-
-char hex[MAX_RQ_SIZE*3+3]; // enough for "[ XX]* <CR> <LF> \0"
-uint8_t buf[MAX_RQ_SIZE];
-
-char trash_buf[MAX_RQ_SIZE];
-char tmp_buf[MAX_RQ_SIZE];
-
-struct buffer tmp   = { .area = tmp_buf,   .data = 0, .size = sizeof(tmp_buf)   };
-
-/* Empty function we dont need - we just need a callback */
-void debug_hexdump(FILE *out, const char *pfx, const char *buf,
-                   unsigned int baseaddr, int len)
-{ }
-
-// These must be included here
-#include "../src/hpack-huff.c"
-#include "../src/hpack-tbl.c"
-#include "../src/hpack-dec.c"
-
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size){
-        char *new_str = (char *)malloc(size+1);
-        struct hpack_dht *dht;
-        struct pool_head pool;
-        int dht_size = 4096;
-        if (new_str == NULL){
-                return 0;
-        }
-        memcpy(new_str, data, size);
-        new_str[size] = '\0';
-        struct http_hdr list[MAX_HDR_NUM];
-
-        pool.size = dht_size;
-        pool_head_hpack_tbl = &pool;
-        dht = hpack_dht_alloc();
-
-        if (dht != NULL)
-        {
-            hpack_decode_frame(dht, new_str, size, list,sizeof(list)/sizeof(list[0]), &tmp);
-            if (dht != NULL)
-            {
-                free(dht);
-            }
-        }
-        free(new_str);
-        return 0;
-}
diff --git a/projects/haproxy/project.yaml b/projects/haproxy/project.yaml
deleted file mode 100755
index 7f5b430..0000000
--- a/projects/haproxy/project.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-homepage: "https://github.com/haproxy/haproxy"
-primary_contact: "adam@adalogics.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-  - "timwolla@googlemail.com"
-  - "willy@1wt.eu"
-  - "tribuslukas58@gmail.com"
-  - "christopher.faulet@gmail.com"
-sanitizers:
-  - address
-
-# Bug reports are public by default:
-view_restrictions: none
-main_repo: 'https://github.com/haproxy/haproxy'
diff --git a/projects/harfbuzz/Dockerfile b/projects/harfbuzz/Dockerfile
index d8131b0..7de247d 100644
--- a/projects/harfbuzz/Dockerfile
+++ b/projects/harfbuzz/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y python3-pip ragel pkg-config && \
-    pip3 install meson==0.53.0 ninja
+MAINTAINER mmoroz@chromium.org
+RUN apt-get update && apt-get install -y make autoconf automake libtool ragel pkg-config
+
 RUN git clone --depth 1 https://github.com/harfbuzz/harfbuzz.git
 WORKDIR harfbuzz
 COPY build.sh $SRC/
diff --git a/projects/harfbuzz/build.sh b/projects/harfbuzz/build.sh
index 3509a67..c3d0520 100755
--- a/projects/harfbuzz/build.sh
+++ b/projects/harfbuzz/build.sh
@@ -17,26 +17,23 @@
 
 # Disable:
 # 1. UBSan vptr since target built with -fno-rtti.
-export CFLAGS="$CFLAGS -fno-sanitize=vptr -DHB_NO_VISIBILITY"
-export CXXFLAGS="$CXXFLAGS -fno-sanitize=vptr -DHB_NO_VISIBILITY"
-
-# setup
-build=$WORK/build
-
-# cleanup
-rm -rf $build
-mkdir -p $build
+export CFLAGS="$CFLAGS -fno-sanitize=vptr"
+export CXXFLAGS="$CXXFLAGS -fno-sanitize=vptr"
 
 # Build the library.
-meson --default-library=static --wrap-mode=nodownload \
-      -Dexperimental_api=true \
-      -Dfuzzer_ldflags="$(echo $LIB_FUZZING_ENGINE)" \
-      $build \
-  || (cat build/meson-logs/meson-log.txt && false)
+./autogen.sh
+./configure --enable-static --disable-shared
+make clean
+make -j$(nproc) CPPFLAGS="-DHB_NO_VISIBILITY" V=1 all
 
-# Build the fuzzers.
-ninja -v -j$(nproc) -C $build test/fuzzing/hb-{shape,draw,subset,set}-fuzzer
-mv $build/test/fuzzing/hb-{shape,draw,subset,set}-fuzzer $OUT/
+# Build the fuzzer.
+$CXX $CXXFLAGS -std=c++11 -Isrc \
+    ./test/fuzzing/hb-shape-fuzzer.cc -o $OUT/hb-shape-fuzzer \
+    $LIB_FUZZING_ENGINE ./src/.libs/libharfbuzz.a
+
+$CXX $CXXFLAGS -std=c++11 -Isrc \
+    ./test/fuzzing/hb-subset-fuzzer.cc -o $OUT/hb-subset-fuzzer \
+    $LIB_FUZZING_ENGINE ./src/.libs/libharfbuzz-subset.a ./src/.libs/libharfbuzz.a
 
 # Archive and copy to $OUT seed corpus if the build succeeded.
 mkdir all-fonts
@@ -51,6 +48,4 @@
 	cp $d/* all-fonts/
 done
 zip $OUT/hb-shape-fuzzer_seed_corpus.zip all-fonts/*
-cp $OUT/hb-shape-fuzzer_seed_corpus.zip $OUT/hb-draw-fuzzer_seed_corpus.zip
 cp $OUT/hb-shape-fuzzer_seed_corpus.zip $OUT/hb-subset-fuzzer_seed_corpus.zip
-zip $OUT/hb-set-fuzzer_seed_corpus.zip ./test/fuzzing/sets/*
diff --git a/projects/harfbuzz/hb-draw-fuzzer.options b/projects/harfbuzz/hb-draw-fuzzer.options
deleted file mode 100644
index ea2a7a2..0000000
--- a/projects/harfbuzz/hb-draw-fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-timeout = 5
diff --git a/projects/harfbuzz/hb-set-fuzzer.options b/projects/harfbuzz/hb-set-fuzzer.options
deleted file mode 100644
index ea2a7a2..0000000
--- a/projects/harfbuzz/hb-set-fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-timeout = 5
diff --git a/projects/harfbuzz/project.yaml b/projects/harfbuzz/project.yaml
index fd12a50..005daa5 100644
--- a/projects/harfbuzz/project.yaml
+++ b/projects/harfbuzz/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/harfbuzz/harfbuzz"
-language: c++
 primary_contact: "harfbuzz-admin@googlegroups.com"
 auto_ccs:
   - "behdad.esfahbod@gmail.com"
@@ -14,22 +13,20 @@
   - "ariza@typekit.com"
   - "qxliu@google.com"
   - "ckitagawa@google.com"
-  - "drott@chromium.org"
 vendor_ccs:
   - "jmuizelaar@mozilla.com"
   - "lsalzman@mozilla.com"
   - "twsmith@mozilla.com"
 fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
+ - libfuzzer
+ - afl
+ - honggfuzz
+ - dataflow
 sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
+ - address
+ - undefined
+ - memory
+ - dataflow
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/harfbuzz/harfbuzz.git'
diff --git a/projects/hermes/Dockerfile b/projects/hermes/Dockerfile
deleted file mode 100644
index eb59a38..0000000
--- a/projects/hermes/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y make autoconf automake libtool wget libicu-dev \
-    ninja-build python zip libreadline-dev libatomic-ops-dev
-
-RUN git clone https://github.com/facebook/hermes.git
-WORKDIR hermes
-COPY build.sh $SRC/
diff --git a/projects/hermes/build.sh b/projects/hermes/build.sh
deleted file mode 100755
index 01c11f3..0000000
--- a/projects/hermes/build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-if [ "${SANITIZER}" = address ]
-then
-    CONFIGURE_FLAGS="--enable-asan"
-elif [ "${SANITIZER}" = undefined ]
-then
-    CONFIGURE_FLAGS="--enable-ubsan"
-else
-    CONFIGURE_FLAGS=""
-fi
-
-./utils/build/configure.py "${OUT}/build" --build-system "Ninja" ${CONFIGURE_FLAGS} \
-                           --cmake-flags="-DHERMES_USE_STATIC_ICU=ON -DHERMES_FUZZING_FLAG=${LIB_FUZZING_ENGINE} -DHERMES_ENABLE_LIBFUZZER=ON"
-cmake --build "$OUT/build"  --parallel --target fuzzer-jsi-entry
-cp "${OUT}/build/bin/fuzzer-jsi-entry" "${OUT}"
diff --git a/projects/hermes/project.yaml b/projects/hermes/project.yaml
deleted file mode 100644
index 0e614fe..0000000
--- a/projects/hermes/project.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-homepage: "https://github.com/facebook/hermes"
-language: c++
-primary_contact: "neildhar@fb.com"
-auto_ccs:
-  - "dulinr@fb.com"
-  - "mhl@fb.com"
-vendor_ccs:
-  - "oss-fuzz@fb.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/facebook/hermes.git'
diff --git a/projects/hiredis/Dockerfile b/projects/hiredis/Dockerfile
deleted file mode 100644
index 3f96259..0000000
--- a/projects/hiredis/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/redis/hiredis
-WORKDIR hiredis
-COPY build.sh $SRC/
diff --git a/projects/hiredis/build.sh b/projects/hiredis/build.sh
deleted file mode 100755
index 72888be..0000000
--- a/projects/hiredis/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-make USE_SSL=0
-mv fuzzing/format_command_fuzzer.c .
-
-$CC $CFLAGS -std=c99 -pedantic -c -O3 -fPIC \
-	format_command_fuzzer.c -o format_command_fuzzer.o
-
-$CC $CFLAGS -O3 -fPIC $LIB_FUZZING_ENGINE format_command_fuzzer.o \
-	-o $OUT/format_command_fuzzer libhiredis.a
diff --git a/projects/hiredis/project.yaml b/projects/hiredis/project.yaml
deleted file mode 100755
index b863fe8..0000000
--- a/projects/hiredis/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/redis/hiredis"
-primary_contact: "michael.grunder@gmail.com"
-language: c
-auto_ccs:
-  - "Adam@adalogics.com"
-main_repo: "https://github.com/redis/hiredis"
diff --git a/projects/hoextdown/Dockerfile b/projects/hoextdown/Dockerfile
index 075ef60..d4f7d1d 100644
--- a/projects/hoextdown/Dockerfile
+++ b/projects/hoextdown/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kjclev@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/kjdev/hoextdown.git hoextdown
 WORKDIR hoextdown
diff --git a/projects/hoextdown/project.yaml b/projects/hoextdown/project.yaml
index 1499307..ed77533 100644
--- a/projects/hoextdown/project.yaml
+++ b/projects/hoextdown/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://github.com/kjdev/hoextdown"
-language: c++
 primary_contact: "kjclev@gmail.com"
-main_repo: 'https://github.com/kjdev/hoextdown.git'
diff --git a/projects/hostap/Dockerfile b/projects/hostap/Dockerfile
index 3a1df86..5d38a06 100644
--- a/projects/hostap/Dockerfile
+++ b/projects/hostap/Dockerfile
@@ -15,9 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y make autoconf automake libtool g++ libssl-dev \
-                       libssl-dev:i386
+MAINTAINER elver@google.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool g++
 RUN git clone --depth 1 git://w1.fi/srv/git/hostap.git hostap
 WORKDIR hostap
 COPY build.sh $SRC/
diff --git a/projects/hostap/build.sh b/projects/hostap/build.sh
index 2a0da93..881146c 100755
--- a/projects/hostap/build.sh
+++ b/projects/hostap/build.sh
@@ -21,24 +21,12 @@
 export LDFLAGS="$CXXFLAGS $LIB_FUZZING_ENGINE"
 export CFLAGS="$CFLAGS -MMD"
 
-if [[ "$ARCHITECTURE" == "i386" ]]; then
-	# Force static link
-	rm -v /lib/i386-linux-gnu/libcrypto.so* || :
-fi
-
 # Specific to hostap's rules.include: set empty, as we directly set required
 # sanitizer flags in CFLAGS and LDFLAGS (above).
 export FUZZ_FLAGS=
 
 for target in fuzzing/*; do
   [[ -d "$target" ]] || continue
-
-  if [[ "$SANITIZER" == "dataflow" ]]; then
-	  # libcrypto seems to cause problems with 'dataflow' sanitizer.
-	  [[ "$target" == "fuzzing/dpp-uri" ]] && continue || :
-	  [[ "$target" == "fuzzing/sae" ]] && continue || :
-  fi
-
   (
     cd "$target"
     make clean
diff --git a/projects/hostap/project.yaml b/projects/hostap/project.yaml
index db978e1..ab97da4 100644
--- a/projects/hostap/project.yaml
+++ b/projects/hostap/project.yaml
@@ -1,19 +1,11 @@
 homepage: "https://w1.fi/cvs.html"
-language: c++
 primary_contact: "j@w1.fi"
 auto_ccs:
    - "elver@google.com"
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
   - undefined
   - memory
-  - dataflow
 architectures:
   - x86_64
   - i386
-main_repo: 'git://w1.fi/srv/git/hostap.git'
diff --git a/projects/htslib/Dockerfile b/projects/htslib/Dockerfile
index f3b6cd1..1ad58da 100644
--- a/projects/htslib/Dockerfile
+++ b/projects/htslib/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rmd@sanger.ac.uk
 RUN apt-get update && apt-get install -y make autoconf automake zlib1g-dev libbz2-dev liblzma-dev libcurl4-gnutls-dev libssl-dev
-RUN git clone --depth 1 --shallow-submodules --recurse-submodules https://github.com/samtools/htslib.git htslib
+RUN git clone --depth 1 https://github.com/samtools/htslib.git htslib
 WORKDIR htslib
 COPY build.sh $SRC/
diff --git a/projects/htslib/project.yaml b/projects/htslib/project.yaml
index 56f5201..f784ab1 100644
--- a/projects/htslib/project.yaml
+++ b/projects/htslib/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://www.htslib.org/"
-language: c++
 primary_contact: "rmd@sanger.ac.uk"
 auto_ccs:
         - "aw7@sanger.ac.uk"
         - "jkb@sanger.ac.uk"
         - "vo2@sanger.ac.uk"
-main_repo: 'https://github.com/samtools/htslib.git'
diff --git a/projects/http-parser/Dockerfile b/projects/http-parser/Dockerfile
deleted file mode 100755
index 88e93fd..0000000
--- a/projects/http-parser/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake
-RUN git clone https://github.com/nodejs/http-parser
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/http-parser/build.sh b/projects/http-parser/build.sh
deleted file mode 100755
index dcd2ac2..0000000
--- a/projects/http-parser/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd http-parser
-make
-
-$CC $CFLAGS -I. -DHTTP_PARSER_STRICT=0  -Wall -Wextra -Werror -c fuzzers/fuzz_parser.c -o fuzz_parser.o
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE -Wall -Wextra -Werror http_parser.o fuzz_parser.o -o $OUT/fuzz_parser
-
-$CC $CFLAGS -I. -DHTTP_PARSER_STRICT=0  -Wall -Wextra -Werror -c fuzzers/fuzz_url.c -o fuzz_url.o
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE -Wall -Wextra -Werror http_parser.o fuzz_url.o -o $OUT/fuzz_url 
diff --git a/projects/http-parser/project.yaml b/projects/http-parser/project.yaml
deleted file mode 100755
index b9ee477..0000000
--- a/projects/http-parser/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/nodejs/http-parser"
-primary_contact: "info@bnoordhuis.nl"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/nodejs/http-parser'
diff --git a/projects/httparse/Dockerfile b/projects/httparse/Dockerfile
deleted file mode 100644
index cffcc9f..0000000
--- a/projects/httparse/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone https://github.com/seanmonstar/httparse
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/httparse/build.sh b/projects/httparse/build.sh
deleted file mode 100755
index c4fdec2..0000000
--- a/projects/httparse/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/httparse
-cargo fuzz build -O
-cp fuzz/target/x86_64-unknown-linux-gnu/release/parse_request $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/parse_headers $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/parse_chunk_size $OUT/
diff --git a/projects/httparse/project.yaml b/projects/httparse/project.yaml
deleted file mode 100644
index 43bfec4..0000000
--- a/projects/httparse/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/seanmonstar/httparse"
-main_repo: "https://github.com/seanmonstar/httparse"
-primary_contact: "seanmonstar@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/httplib2/Dockerfile b/projects/httplib2/Dockerfile
deleted file mode 100644
index f7dcaf2..0000000
--- a/projects/httplib2/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/httplib2/httplib2
-
-COPY build.sh $SRC/
-
-WORKDIR $SRC/httplib2
diff --git a/projects/httplib2/build.sh b/projects/httplib2/build.sh
deleted file mode 100644
index 3a3d0ea..0000000
--- a/projects/httplib2/build.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-pip3 install six 
-python3 setup.py install
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find ./tests/ -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/httplib2/project.yaml b/projects/httplib2/project.yaml
deleted file mode 100644
index 210aa12..0000000
--- a/projects/httplib2/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/httplib2/httplib2"
-language: python
-primary_contact: "temotor@gmail.com"
-auto_ccs:
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: "https://github.com/httplib2/httplib2"
diff --git a/projects/hugo/Dockerfile b/projects/hugo/Dockerfile
deleted file mode 100644
index bfba1a2..0000000
--- a/projects/hugo/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone https://github.com/gohugoio/hugo
-COPY build.sh fuzz.go $SRC/
-WORKDIR $SRC/hugo
diff --git a/projects/hugo/build.sh b/projects/hugo/build.sh
deleted file mode 100755
index c1950ca..0000000
--- a/projects/hugo/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mv $SRC/fuzz.go $SRC/hugo/tpl/transform/
-
-compile_go_fuzzer github.com/gohugoio/hugo/tpl/transform FuzzMarkdownify fuzzmarkdownify
diff --git a/projects/hugo/fuzz.go b/projects/hugo/fuzz.go
deleted file mode 100644
index 7a22e6d..0000000
--- a/projects/hugo/fuzz.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// +build gofuzz
-
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package transform
-
-import (
-	"github.com/gohugoio/hugo/common/loggers"
-	"github.com/gohugoio/hugo/config"
-	"github.com/gohugoio/hugo/deps"
-	"github.com/gohugoio/hugo/helpers"
-	"github.com/gohugoio/hugo/hugofs"
-	"github.com/gohugoio/hugo/langs"
-	"github.com/spf13/afero"
-	"github.com/spf13/viper"
-)
-
-func newFuzzDeps(cfg config.Provider) *deps.Deps {
-	cfg.Set("contentDir", "content")
-	cfg.Set("i18nDir", "i18n")
-
-	l := langs.NewLanguage("en", cfg)
-
-	cs, _ := helpers.NewContentSpec(l, loggers.NewErrorLogger(), afero.NewMemMapFs())
-
-	return &deps.Deps{
-		Cfg:         cfg,
-		Fs:          hugofs.NewMem(l),
-		ContentSpec: cs,
-	}
-}
-
-func FuzzMarkdownify(data []byte) int {
-	v := viper.New()
-	v.Set("contentDir", "content")
-	ns := New(newFuzzDeps(v))
-
-	for _, test := range []struct {
-		s interface{}
-	}{
-		{string(data)},
-	} {
-		_, err := ns.Markdownify(test.s)
-		if err != nil {
-			return 0
-		}
-	}
-	return 1
-}
diff --git a/projects/hugo/project.yaml b/projects/hugo/project.yaml
deleted file mode 100644
index 2811a6e..0000000
--- a/projects/hugo/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/gohugoio/hugo"
-primary_contact: "bjorn.erik.pedersen@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/gohugoio/hugo'
diff --git a/projects/hunspell/Dockerfile b/projects/hunspell/Dockerfile
deleted file mode 100644
index 632863f..0000000
--- a/projects/hunspell/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y autoconf automake autopoint libtool
-RUN git clone --depth 1 https://github.com/hunspell/hunspell.git hunspell
-WORKDIR hunspell
-COPY build.sh $SRC/
diff --git a/projects/hunspell/build.sh b/projects/hunspell/build.sh
deleted file mode 100755
index eccf4aa..0000000
--- a/projects/hunspell/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mv -f ./tests/korean.* $OUT/
-mv -f ./tests/utf8_nonbmp.* $OUT/
-
-autoreconf -vfi
-./configure --disable-shared --enable-static
-make clean
-make -j$(nproc) 
-$CXX $CXXFLAGS -o $OUT/fuzzer -I./src/ $LIB_FUZZING_ENGINE ./src/tools/fuzzer.cxx ./src/hunspell/.libs/libhunspell-1.7.a
diff --git a/projects/hunspell/project.yaml b/projects/hunspell/project.yaml
deleted file mode 100644
index 48c3f88..0000000
--- a/projects/hunspell/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://hunspell.github.io/"
-language: c++
-primary_contact: "caolanm@redhat.com"
-auto_ccs:
-  - "security@documentfoundation.org"
-vendor_ccs:
-  - "ehsan.akhgari@gmail.com"
-  - "twsmith@mozilla.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
- - i386
- - x86_64
-main_repo: 'https://github.com/hunspell/hunspell.git'
diff --git a/projects/ibmswtpm2/Dockerfile b/projects/ibmswtpm2/Dockerfile
index 2f707e3..18fe690 100644
--- a/projects/ibmswtpm2/Dockerfile
+++ b/projects/ibmswtpm2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER john.s.andersen@intel.com
 ARG SIM_DL_URL=https://downloads.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
 RUN apt-get update && apt-get install -y make autoconf automake libtool libssl-dev curl tar g++
 RUN mkdir ibmswtpm2 && \
diff --git a/projects/ibmswtpm2/no_writes.patch b/projects/ibmswtpm2/no_writes.patch
index ca8d7c6..a9be0dc 100644
--- a/projects/ibmswtpm2/no_writes.patch
+++ b/projects/ibmswtpm2/no_writes.patch
@@ -84,10 +84,12 @@
 index cc3e410..c10ba5a 100644
 --- a/makefile
 +++ b/makefile
-@@ -40,16 +40,16 @@
+@@ -40,16 +40,19 @@
  
  
--CC = /usr/bin/gcc
+ CC = /usr/bin/gcc
++CC = clang
++CXX = clang++
  
 -CCFLAGS = -Wall  			\
 +CCFLAGS = $(CFLAGS) -Wall  			\
diff --git a/projects/ibmswtpm2/project.yaml b/projects/ibmswtpm2/project.yaml
index c1c6a96..1a439eb 100644
--- a/projects/ibmswtpm2/project.yaml
+++ b/projects/ibmswtpm2/project.yaml
@@ -1,5 +1,4 @@
 homepage: https://sourceforge.net/projects/ibmswtpm2/
-language: c++
 primary_contact: kgoldman@us.ibm.com
 auto_ccs:
   - "john.s.andersen@intel.com"
diff --git a/projects/icu/Dockerfile b/projects/icu/Dockerfile
index af7e2db..366cedc 100644
--- a/projects/icu/Dockerfile
+++ b/projects/icu/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mike.aizatsky@gmail.com
 RUN apt-get update && apt-get install -y make
 
 RUN git clone --depth 1 https://github.com/unicode-org/icu.git icu
diff --git a/projects/icu/project.yaml b/projects/icu/project.yaml
index d38b523..6df1b75 100644
--- a/projects/icu/project.yaml
+++ b/projects/icu/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://site.icu-project.org/"
-language: c++
 auto_ccs:
  - icu-security@unicode.org
  - andy.heninger@gmail.com
@@ -8,9 +7,7 @@
  - shane@unicode.org
  - srl295@gmail.com
  - nrunge@google.com
- - ftang@google.com
 sanitizers:
  - address
  - memory
 
-main_repo: 'https://github.com/unicode-org/icu.git'
diff --git a/projects/igraph/Dockerfile b/projects/igraph/Dockerfile
deleted file mode 100644
index c1d2c00..0000000
--- a/projects/igraph/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-  pkg-config cmake bison flex
-RUN git clone --depth 1 --branch develop  https://github.com/igraph/igraph
-WORKDIR igraph
-RUN cp $SRC/igraph/fuzzing/build.sh $SRC/build.sh
-
diff --git a/projects/igraph/project.yaml b/projects/igraph/project.yaml
deleted file mode 100644
index aedf56b..0000000
--- a/projects/igraph/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/igraph/igraph"
-main_repo: "https://github.com/igraph/igraph"
-language: c
-primary_contact: "szhorvat@gmail.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-  - "ntamas@gmail.com"
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/image-png/Dockerfile b/projects/image-png/Dockerfile
deleted file mode 100644
index cb953de..0000000
--- a/projects/image-png/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang
-
-RUN git clone https://github.com/image-rs/image-png
-WORKDIR $SRC
-
-COPY build.sh $SRC/
-COPY buf_independent.rs $SRC/image-png/fuzz/fuzz_targets/buf_independent.rs
diff --git a/projects/image-png/buf_independent.rs b/projects/image-png/buf_independent.rs
deleted file mode 100644
index f4a1f31..0000000
--- a/projects/image-png/buf_independent.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-#![no_main]
-extern crate libfuzzer_sys;
-use libfuzzer_sys::fuzz_target;
-extern crate png;
-
-use std::io::{BufRead, Read, Result};
-
-/// A reader that reads at most `n` bytes.
-struct SmalBuf<R: BufRead> {
-    inner: R,
-    cap: usize,
-}
-
-impl<R: BufRead> SmalBuf<R> {
-    fn new(inner: R, cap: usize) -> Self {
-        SmalBuf { inner, cap }
-    }
-}
-
-impl<R: BufRead> Read for SmalBuf<R> {
-    fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
-        let len = buf.len().min(self.cap);
-        self.inner.read(&mut buf[..len])
-    }
-}
-
-impl<R: BufRead> BufRead for SmalBuf<R> {
-    fn fill_buf(&mut self) -> Result<&[u8]> {
-        let buf = self.inner.fill_buf()?;
-        let len = buf.len().min(self.cap);
-        Ok(&buf[..len])
-    }
-
-    fn consume(&mut self, amt: usize) {
-        assert!(amt <= self.cap);
-        self.inner.consume(amt)
-    }
-}
-
-fuzz_target!(|data: &[u8]| {
-    // Small limits, we don't need them hopefully.
-    let limits = png::Limits { bytes: 1 << 16 };
-
-    let reference = png::Decoder::new_with_limits(data, limits);
-    let smal = png::Decoder::new_with_limits(SmalBuf::new(data, 1), limits);
-
-    let _ = png_compare(reference, smal);
-});
-
-#[inline(always)]
-fn png_compare<R: BufRead, S: BufRead>(reference: png::Decoder<R>, smal: png::Decoder<S>)
-    -> std::result::Result<png::OutputInfo, ()>
-{
-    let mut smal = Some(smal);
-    let (info, mut reference) = reference.read_info().map_err(|_| {
-        assert!(smal.take().unwrap().read_info().is_err());
-    })?;
-
-    let (sinfo, mut smal) = smal.take().unwrap().read_info().expect("Deviation");
-    assert_eq!(info, sinfo);
-
-    if info.buffer_size() > 5_000_000 {
-        return Err(());
-    }
-
-    let mut ref_data = vec![0; info.buffer_size()];
-    let mut smal_data = vec![0; info.buffer_size()];
-
-    let _rref = reference.next_frame(&mut ref_data);
-    let _rsmal = smal.next_frame(&mut smal_data);
-
-    assert_eq!(smal_data, ref_data);
-    return Ok(info);
-}
diff --git a/projects/image-png/build.sh b/projects/image-png/build.sh
deleted file mode 100755
index c8b7f49..0000000
--- a/projects/image-png/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC
-cd image-png
-cargo fuzz build -O
-cp fuzz/target/x86_64-unknown-linux-gnu/release/decode $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/buf_independent $OUT/
diff --git a/projects/image-png/project.yaml b/projects/image-png/project.yaml
deleted file mode 100644
index aa86d3a..0000000
--- a/projects/image-png/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://docs.rs/image/0.23.14/image"
-main_repo: "https://github.com/image-rs/image-png"
-primary_contact: "andreas.molzer@gmx.de"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "fintelia@gmail.com"
-  - "david@adalogics.com"
diff --git a/projects/imageio/Dockerfile b/projects/imageio/Dockerfile
deleted file mode 100644
index 87c1811..0000000
--- a/projects/imageio/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/imageio/imageio
-
-COPY build.sh $SRC/
-WORKDIR $SRC/imageio
diff --git a/projects/imageio/build.sh b/projects/imageio/build.sh
deleted file mode 100644
index aeef84e..0000000
--- a/projects/imageio/build.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-python3 setup.py build install
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find . -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/imageio/project.yaml b/projects/imageio/project.yaml
deleted file mode 100644
index 73389b5..0000000
--- a/projects/imageio/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://imageio.github.io"
-language: python
-primary_contact: "almar.klein@gmail.com"
-auto_ccs:
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/imageio/imageio'
diff --git a/projects/imagemagick/Dockerfile b/projects/imagemagick/Dockerfile
index 058158b..6a12e0c 100644
--- a/projects/imagemagick/Dockerfile
+++ b/projects/imagemagick/Dockerfile
@@ -15,8 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y make autoconf automake groff libtool pkg-config cmake nasm autopoint po4a libc6:i386 libc6-dev:i386
+MAINTAINER paul.l.kehrer@gmail.com
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
+    apt-get install -y make autoconf automake libtool pkg-config cmake nasm autopoint libc6:i386 libc6-dev:i386
 RUN git clone --depth 1 https://github.com/imagemagick/imagemagick
 RUN git clone --depth 1 https://gitlab.com/libtiff/libtiff
 RUN git clone --depth 1 https://github.com/strukturag/libde265
@@ -25,14 +27,13 @@
 RUN git clone --depth 1 https://github.com/webmproject/libwebp
 RUN git clone --depth 1 https://github.com/madler/zlib
 RUN git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo
-RUN git clone https://git.savannah.nongnu.org/r/freetype/freetype2.git/
+RUN git clone --depth 1 https://git.savannah.nongnu.org/r/freetype/freetype2
 RUN git clone --depth 1 https://github.com/xz-mirror/xz
 RUN git clone --depth 1 https://github.com/libraw/libraw
 RUN git clone --depth 1 https://github.com/pnggroup/libpng
 RUN git clone --depth 1 https://github.com/mm2/Little-CMS
-RUN git clone https://www.cl.cam.ac.uk/~mgk25/git/jbigkit # does not support shallow
 RUN svn export https://github.com/mozillasecurity/fuzzdata.git/trunk/samples/heic heic_corpus
 RUN git clone --depth 1 https://gitlab.com/federicomenaquintero/bzip2.git
-ADD https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz afl_testcases.tgz
+ADD http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz afl_testcases.tgz
 WORKDIR imagemagick
 COPY build.sh $SRC/
diff --git a/projects/imagemagick/project.yaml b/projects/imagemagick/project.yaml
index 509c8c1..4210008 100644
--- a/projects/imagemagick/project.yaml
+++ b/projects/imagemagick/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.imagemagick.org"
-language: c++
 primary_contact: "dirk@lemstra.org"
 auto_ccs:
   - paul.l.kehrer@gmail.com
@@ -12,4 +11,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/imagemagick/imagemagick'
diff --git a/projects/immer/Dockerfile b/projects/immer/Dockerfile
deleted file mode 100644
index 6605b72..0000000
--- a/projects/immer/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake libgc-dev
-RUN git clone --depth 1 https://github.com/arximboldi/immer.git immer
-WORKDIR immer
-COPY build.sh $SRC/
diff --git a/projects/immer/build.sh b/projects/immer/build.sh
deleted file mode 100755
index cf367fe..0000000
--- a/projects/immer/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-mkdir build
-cd build
-cmake .. \
-      -DBOEHM_GC_INCLUDE_DIR=/usr/include \
-      -DBOEHM_GC_LIBRARIES=/usr/lib/x86_64-linux-gnu/libgc.a
-make -j$(nproc) fuzzers
-
-for fuzzer in extra/fuzzer/*; do
-    if [[ -f $fuzzer && -x $fuzzer ]]; then
-        cp $fuzzer $OUT
-    fi
-done
diff --git a/projects/immer/project.yaml b/projects/immer/project.yaml
deleted file mode 100644
index 8235c7f..0000000
--- a/projects/immer/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "https://sinusoid.es/immer"
-language: c++
-primary_contact: "juanpe@sinusoid.al"
-main_repo: 'https://github.com/arximboldi/immer.git'
diff --git a/projects/inchi/Dockerfile b/projects/inchi/Dockerfile
deleted file mode 100644
index ce2f398..0000000
--- a/projects/inchi/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget make unzip git
-RUN wget https://www.inchi-trust.org/download/106/INCHI-1-SRC.zip
-RUN unzip INCHI-1-SRC.zip
-WORKDIR INCHI-1-SRC
-COPY build.sh *_fuzzer.c $SRC/
diff --git a/projects/inchi/build.sh b/projects/inchi/build.sh
deleted file mode 100644
index 50c3314..0000000
--- a/projects/inchi/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-$CC $CFLAGS -Wno-everything -DTARGET_API_LIB -DCOMPILE_ANSI_ONLY -ansi -c \
-    INCHI_BASE/src/*.c INCHI_API/libinchi/src/*.c INCHI_API/libinchi/src/ixa/*.c
-ar rcs $WORK/libinchi.a *.o
-
-for fuzzer in $SRC/*_fuzzer.c; do
-  fuzzer_basename=$(basename -s .c $fuzzer)
-
-  $CC $CFLAGS \
-      -I INCHI_BASE/src/ \
-      -I INCHI_API/libinchi/src/ \
-      -I INCHI_API/libinchi/src/ixa/ \
-      $fuzzer -c -o ${fuzzer_basename}.o
-
-  $CXX $CXXFLAGS \
-      ${fuzzer_basename}.o -o $OUT/$fuzzer_basename \
-      $LIB_FUZZING_ENGINE $WORK/libinchi.a
-done
diff --git a/projects/inchi/inchi_input_fuzzer.c b/projects/inchi/inchi_input_fuzzer.c
deleted file mode 100644
index 6cacedf..0000000
--- a/projects/inchi/inchi_input_fuzzer.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "inchi_api.h"
-
-// Define the maximum value for size_t. We return if the fuzzing input is equal
-// to kSizeMax because appending the null-terminator to the InChI buffer would
-// cause wraparound, thereby initializing the buffer to size 0.
-static const size_t kSizeMax = (size_t)-1;
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  if (size == kSizeMax)
-    return 0;
-
-  char *szINCHISource = malloc(sizeof(char) * (size + 1));
-  memcpy(szINCHISource, data, size);
-  szINCHISource[size] = '\0'; // InChI string must be null-terminated
-
-  // Buffer lengths taken from InChI API reference, located at
-  // https://www.inchi-trust.org/download/104/InChI_API_Reference.pdf, page 24
-  char szINCHIKey[28], szXtra1[65], szXtra2[65];
-  GetINCHIKeyFromINCHI(szINCHISource, 0, 0, szINCHIKey, szXtra1, szXtra2);
-
-  inchi_InputINCHI inpInChI;
-  inpInChI.szInChI = szINCHISource;
-
-  inchi_Output out;
-  GetINCHIfromINCHI(&inpInChI, &out);
-
-  inchi_OutputStruct outStruct;
-  GetStructFromINCHI(&inpInChI, &outStruct);
-
-  free(szINCHISource);
-  FreeINCHI(&out);
-  FreeStructFromINCHI(&outStruct);
-
-  return 0;
-}
diff --git a/projects/inchi/project.yaml b/projects/inchi/project.yaml
deleted file mode 100644
index 360948d..0000000
--- a/projects/inchi/project.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-homepage: "https://www.inchi-trust.org/"
-language: c
-primary_contact: "member-info@inchi-trust.org"
-sanitizers:
-  - address
diff --git a/projects/influxdb/Dockerfile b/projects/influxdb/Dockerfile
deleted file mode 100644
index e00af14..0000000
--- a/projects/influxdb/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-MAINTAINER william@influxdata.com
-RUN go get github.com/influxdata/influxdb
-RUN go get github.com/dgrijalva/jwt-go
-
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/influxdb/build.sh b/projects/influxdb/build.sh
deleted file mode 100644
index 69c86ed..0000000
--- a/projects/influxdb/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-
-compile_go_fuzzer github.com/influxdata/influxdb/jsonweb FuzzJsonWeb fuzzjsonweb
diff --git a/projects/influxdb/project.yaml b/projects/influxdb/project.yaml
deleted file mode 100644
index 23b3f88..0000000
--- a/projects/influxdb/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/influxdata/influxdb"
-language: go
-primary_contact: "william@influxdata.com"
-auto_ccs:
-  - "palbert@influxdata.com"
-  - "ryan@influxdata.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-disabled: true
-main_repo: 'https://github.com/influxdata/influxdb'
diff --git a/projects/ipfs/Dockerfile b/projects/ipfs/Dockerfile
deleted file mode 100644
index aee4c4c..0000000
--- a/projects/ipfs/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/ipfs/go-datastore
-
-COPY build.sh $SRC/
-WORKDIR $SRC/go-datastore
diff --git a/projects/ipfs/build.sh b/projects/ipfs/build.sh
deleted file mode 100755
index e1d577c..0000000
--- a/projects/ipfs/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd fuzz
-
-function compile_ds_fuzzer {
-  fuzzer=$1
-
-  if [ $# == 2 ]; then
-    rm provider* || true
-    DS_PROVIDERS="$2" go generate
-  fi
-
-  compile_go_fuzzer github.com/ipfs/go-datastore/fuzz Fuzz $fuzzer
-}
-
-compile_ds_fuzzer ipfs_ds_flatfs
-compile_ds_fuzzer ipfs_ds_badger "github.com/ipfs/go-ds-badger"
-compile_ds_fuzzer ipfs_ds_badger2 "github.com/ipfs/go-ds-badger2"
-
diff --git a/projects/ipfs/project.yaml b/projects/ipfs/project.yaml
deleted file mode 100644
index 72a5e90..0000000
--- a/projects/ipfs/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/ipfs/go-datastore"
-primary_contact: "will.scott@protocol.ai"
-auto_ccs :
-- "stebalien@protocol.ai"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/ipfs/go-datastore'
diff --git a/projects/iroha/Dockerfile b/projects/iroha/Dockerfile
index 8a3e83e..a50decf 100644
--- a/projects/iroha/Dockerfile
+++ b/projects/iroha/Dockerfile
@@ -15,19 +15,41 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER konstantin@soramitsu.co.jp
   
 RUN set -e; \
     apt-get update && \
     apt-get -y --no-install-recommends install libicu-dev \
         apt-utils git curl wget unzip tar; \
     apt-get -y clean
-
-RUN git clone --depth 1 --single-branch --branch master https://github.com/hyperledger/iroha.git
+     
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.tar.gz && tar -xzvf cmake-3.14.4-Linux-x86_64.tar.gz && cp -a cmake-3.14.4-Linux-x86_64/bin/. /usr/bin/ && cp -a cmake-3.14.4-Linux-x86_64/share/. /usr/share/
+  
+  
+# Get *your* source code here.
+RUN git clone --depth 1 https://github.com/hyperledger/iroha.git
 
 WORKDIR iroha
 
-RUN cp -R $SRC/iroha/vcpkg /tmp/vcpkg-vars
+RUN cp -R $SRC/iroha/vcpkg_old /tmp/vcpkg-vars
 
-RUN ["bash", "/tmp/vcpkg-vars/oss/build_deps.sh"]
+RUN set -e; \
+    git clone https://github.com/microsoft/vcpkg /tmp/vcpkg; \
+    (cd /tmp/vcpkg ; git checkout $(cat /tmp/vcpkg-vars/VCPKG_COMMIT_SHA)); \
+    for i in /tmp/vcpkg-vars/patches/*.patch; do git -C /tmp/vcpkg apply $i; done; \
+    for i in /tmp/vcpkg-vars/patches/oss/*.patch; do git -C /tmp/vcpkg apply $i; done; \
+    sh /tmp/vcpkg/bootstrap-vcpkg.sh; \
+    /tmp/vcpkg/vcpkg install $(cat /tmp/vcpkg-vars/VCPKG_BOOST_LOCALE_DEPS_LIST | cut -d':' -f1 | tr '\n' ' '); \
+    (cd /tmp/vcpkg ; git checkout -- scripts/toolchains/linux.cmake); \
+    (cd /tmp/vcpkg ; git apply /tmp/vcpkg-vars/patches/oss/0002-vcpkg-dependencies-flags.patch); \
+    /tmp/vcpkg/vcpkg install boost-locale; \
+    (cd /tmp/vcpkg ; git apply /tmp/vcpkg-vars/patches/oss/0003-vcpkg-dependencies-sanitizer.patch); \
+    /tmp/vcpkg/vcpkg install $(sed 's/grpc://' /tmp/vcpkg-vars/VCPKG_DEPS_LIST | cut -d':' -f1 | tr '\n' ' '); \
+    bash -c 'function bumper { while sleep 1; do echo bump; done; }; function run_with_bumper { bumper & p=$!; $@; kill $p; }; ASAN_OPTIONS=detect_leaks=0 run_with_bumper /tmp/vcpkg/vcpkg install grpc'; \ 
+    /tmp/vcpkg/vcpkg install --head $(cat /tmp/vcpkg-vars/VCPKG_HEAD_DEPS_LIST | cut -d':' -f1 | tr '\n' ' '); \
+    /tmp/vcpkg/vcpkg export $(/tmp/vcpkg/vcpkg list | cut -d':' -f1 | tr '\n' ' ') --raw --output=dependencies; \
+    mv /tmp/vcpkg/dependencies /opt/dependencies; \
+    chmod +x /opt/dependencies/installed/x64-linux/tools/protobuf/protoc*; \
+    rm -rf /tmp/vcpkg*
 
 COPY build.sh $SRC/
diff --git a/projects/iroha/project.yaml b/projects/iroha/project.yaml
index c44a2b1..dc5b2bf 100644
--- a/projects/iroha/project.yaml
+++ b/projects/iroha/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/hyperledger/iroha"
-language: c++
 primary_contact: "boldrev@soramitsu.co.jp"
 auto_ccs:
   - "andrei@soramitsu.co.jp"
@@ -7,5 +6,4 @@
   - "igor@soramitsu.co.jp"
   - "gorbachev@soramitsu.co.jp"
 sanitizers:
-  - address
-main_repo: 'https://github.com/hyperledger/iroha.git'
+  - address
\ No newline at end of file
diff --git a/projects/irssi/Dockerfile b/projects/irssi/Dockerfile
index 5ec650f..7d2c694 100644
--- a/projects/irssi/Dockerfile
+++ b/projects/irssi/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER joseph.bisch@gmail.com
 RUN apt-get update && apt-get install -y pkg-config libncurses5-dev libssl-dev python3-pip
 RUN pip3 install -U meson ninja
 RUN git clone https://github.com/irssi/irssi
diff --git a/projects/irssi/project.yaml b/projects/irssi/project.yaml
index aa119af..7429a1c 100644
--- a/projects/irssi/project.yaml
+++ b/projects/irssi/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/irssi/irssi"
-language: c++
 primary_contact: "ahf@irssi.org"
 auto_ccs:
   - "dx@dxzone.com.ar"
@@ -9,4 +8,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/irssi/irssi'
diff --git a/projects/istio/Dockerfile b/projects/istio/Dockerfile
deleted file mode 100644
index 4ba44e2..0000000
--- a/projects/istio/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/istio/istio
-COPY build.sh $SRC/
-WORKDIR $SRC/istio
diff --git a/projects/istio/build.sh b/projects/istio/build.sh
deleted file mode 100644
index cb148e8..0000000
--- a/projects/istio/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-compile_go_fuzzer ./tests/fuzz FuzzParseInputs fuzz_parse_inputs
-compile_go_fuzzer ./tests/fuzz FuzzParseAndBuildSchema fuzz_parse_and_build_schema
diff --git a/projects/istio/project.yaml b/projects/istio/project.yaml
deleted file mode 100644
index f877df6..0000000
--- a/projects/istio/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/istio/istio"
-primary_contact: "istio-security-vulnerability-reports@googlegroups.com"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "howardjohn@google.com"
-  - "kconner@redhat.com"
-  - "bavery@redhat.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/istio/istio'
diff --git a/projects/jackson-core/Dockerfile b/projects/jackson-core/Dockerfile
deleted file mode 100644
index 1ff7850..0000000
--- a/projects/jackson-core/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y maven
-
-RUN git clone --depth 1 https://github.com/google/fuzzing
-RUN cat fuzzing/dictionaries/json.dict > $SRC/JsonFuzzer.dict
-
-RUN git clone --depth 1 https://github.com/dvyukov/go-fuzz-corpus && \
-    zip -j $SRC/JsonFuzzer_seed_corpus.zip go-fuzz-corpus/json/corpus/*
-
-ENV JACKSON_BRANCH=2.13
-
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-core
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-databind
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-annotations
-
-COPY build.sh $SRC/
-COPY JsonFuzzer.java $SRC/
-WORKDIR $SRC/
diff --git a/projects/jackson-core/JsonFuzzer.java b/projects/jackson-core/JsonFuzzer.java
deleted file mode 100644
index 05c0bb3..0000000
--- a/projects/jackson-core/JsonFuzzer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.io.IOException;
-
-public class JsonFuzzer {
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    ObjectMapper mapper = new ObjectMapper();
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.ALLOW_COMMENTS);
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.ALLOW_SINGLE_QUOTES);
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES);
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.ALLOW_YAML_COMMENTS);
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.IGNORE_UNDEFINED);
-    if (data.consumeBoolean())
-      mapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
-
-    try {
-      mapper.readTree(data.consumeRemainingAsBytes());
-    } catch (IOException ignored) {
-    }
-  }
-}
diff --git a/projects/jackson-core/build.sh b/projects/jackson-core/build.sh
deleted file mode 100644
index 5cbf19c..0000000
--- a/projects/jackson-core/build.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Copy seed corpus and dictionary.
-mv $SRC/{*.zip,*.dict} $OUT
-
-MAVEN_ARGS="-P!java14+ -Dmaven.test.skip=true -Djavac.src.version=15 -Djavac.target.version=15"
-
-DEPENDENCIES="jackson-core jackson-databind jackson-annotations"
-for dependency in $DEPENDENCIES; do
-  cd $SRC/$dependency
-  mvn package $MAVEN_ARGS
-  current_version=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
-  -Dexpression=project.version -q -DforceStdout)
-  cp "target/$dependency-$current_version.jar" $OUT/$dependency.jar
-done
-
-ALL_JARS=$(echo $DEPENDENCIES | xargs printf -- "%s.jar ")
-
-# The classpath at build-time includes the project jars in $OUT as well as the
-# Jazzer API.
-BUILD_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
-
-# All .jar and .class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "\$this_dir/%s:"):\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  # Create an execution wrapper that executes Jazzer with the correct arguments.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/jackson-core/project.yaml b/projects/jackson-core/project.yaml
deleted file mode 100644
index 90c85c5..0000000
--- a/projects/jackson-core/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/FasterXML/jackson-core"
-language: jvm
-primary_contact: "tatu@fasterxml.com"
-auto_ccs:
-  - "meumertzheim@code-intelligence.com"
-fuzzing_engines:
-  - libfuzzer
-main_repo: "https://github.com/FasterXML/jackson-core"
-sanitizers:
-  - address
diff --git a/projects/jackson-dataformats-binary/CborFuzzer.java b/projects/jackson-dataformats-binary/CborFuzzer.java
deleted file mode 100644
index e0f9a48..0000000
--- a/projects/jackson-dataformats-binary/CborFuzzer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.cbor.databind.CBORMapper;
-import java.io.IOException;
-
-public class CborFuzzer {
-  public static void fuzzerTestOneInput(byte[] input) {
-    ObjectMapper mapper = new CBORMapper();
-    try {
-      mapper.readTree(input);
-    } catch (IOException ignored) {
-    }
-  }
-}
diff --git a/projects/jackson-dataformats-binary/Dockerfile b/projects/jackson-dataformats-binary/Dockerfile
deleted file mode 100644
index 0e4ea82..0000000
--- a/projects/jackson-dataformats-binary/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y maven
-
-ENV JACKSON_BRANCH=2.13
-
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-dataformats-binary
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-databind
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-core
-RUN git clone --depth 1 --branch=$JACKSON_BRANCH https://github.com/FasterXML/jackson-annotations
-
-COPY build.sh $SRC/
-COPY CborFuzzer.java SmileFuzzer.java $SRC/
-WORKDIR $SRC/
diff --git a/projects/jackson-dataformats-binary/SmileFuzzer.java b/projects/jackson-dataformats-binary/SmileFuzzer.java
deleted file mode 100644
index 1d179fe..0000000
--- a/projects/jackson-dataformats-binary/SmileFuzzer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.smile.databind.SmileMapper;
-import java.io.IOException;
-
-public class SmileFuzzer {
-  public static void fuzzerTestOneInput(byte[] input) {
-    ObjectMapper mapper = new SmileMapper();
-    try {
-      mapper.readTree(input);
-    } catch (IOException ignored) {
-    }
-  }
-}
diff --git a/projects/jackson-dataformats-binary/build.sh b/projects/jackson-dataformats-binary/build.sh
deleted file mode 100644
index 3c3c0af..0000000
--- a/projects/jackson-dataformats-binary/build.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-MAVEN_ARGS="-P!java14+ -Dmaven.test.skip=true -Djavac.src.version=15 -Djavac.target.version=15"
-
-cd $SRC/jackson-dataformats-binary
-mvn package $MAVEN_ARGS
-CURRENT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
- -Dexpression=project.version -q -DforceStdout)
-DATAFORMAT_PREFIX=jackson-dataformat
-cp "cbor/target/$DATAFORMAT_PREFIX-cbor-$CURRENT_VERSION.jar" $OUT/$DATAFORMAT_PREFIX-cbor.jar
-cp "smile/target/$DATAFORMAT_PREFIX-smile-$CURRENT_VERSION.jar" $OUT/$DATAFORMAT_PREFIX-smile.jar
-
-PROJECT_JARS="$DATAFORMAT_PREFIX-cbor.jar $DATAFORMAT_PREFIX-smile.jar"
-
-DEPENDENCIES="jackson-core jackson-databind jackson-annotations"
-for dependency in $DEPENDENCIES; do
-  cd $SRC/$dependency
-  mvn package $MAVEN_ARGS
-  current_version=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
-  -Dexpression=project.version -q -DforceStdout)
-  cp "target/$dependency-$current_version.jar" $OUT/$dependency.jar
-done
-
-FUZZER_JARS=$(echo $DEPENDENCIES | xargs printf -- "%s.jar ")
-
-ALL_JARS="$PROJECT_JARS $FUZZER_JARS"
-
-# The classpath at build-time includes the project jars in $OUT as well as the
-# Jazzer API.
-BUILD_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
-
-# All .jar and .class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "\$this_dir/%s:"):\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  # Create an execution wrapper that executes Jazzer with the correct arguments.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/jackson-dataformats-binary/project.yaml b/projects/jackson-dataformats-binary/project.yaml
deleted file mode 100644
index c556cce..0000000
--- a/projects/jackson-dataformats-binary/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/FasterXML/jackson-dataformats-binary"
-language: jvm
-primary_contact: "tatu@fasterxml.com"
-auto_ccs:
-  - "meumertzheim@code-intelligence.com"
-fuzzing_engines:
-  - libfuzzer
-main_repo: "https://github.com/FasterXML/jackson-dataformats-binary"
-sanitizers:
-  - address
diff --git a/projects/janet/Dockerfile b/projects/janet/Dockerfile
deleted file mode 100755
index 0a24e47..0000000
--- a/projects/janet/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake
-RUN git clone https://github.com/janet-lang/janet
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/janet/build.sh b/projects/janet/build.sh
deleted file mode 100755
index 0627307..0000000
--- a/projects/janet/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-export CFLAGS="$CFLAGS -fPIC"
-cd janet
-make
-
-clang $CFLAGS -std=c99 -Isrc/include -Isrc/conf -fPIC  -o fuzz_dostring.o -c ./test/fuzzers/fuzz_dostring.c
-clang++ $CXXFLAGS $LIB_FUZZING_ENGINE fuzz_dostring.o build/libjanet.a -o $OUT/fuzz_dostring
diff --git a/projects/janet/project.yaml b/projects/janet/project.yaml
deleted file mode 100755
index 891df2e..0000000
--- a/projects/janet/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/janet-lang/janet"
-primary_contact: "calsrose@gmail.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/janet-lang/janet'
diff --git a/projects/jansson/Dockerfile b/projects/jansson/Dockerfile
index fc5fef3..dd0ed50 100644
--- a/projects/jansson/Dockerfile
+++ b/projects/jansson/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cmeister2@gmail.com
 
 RUN git clone --depth 1 https://github.com/akheron/jansson.git /src/jansson
 
diff --git a/projects/jansson/project.yaml b/projects/jansson/project.yaml
index 0962237..0aaa7c0 100644
--- a/projects/jansson/project.yaml
+++ b/projects/jansson/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/akheron/jansson"
-language: c++
 primary_contact: "git@cfware.com"
 auto_ccs:
   - "cmeister2@gmail.com"
@@ -10,4 +9,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/akheron/jansson.git'
diff --git a/projects/janus-gateway/Dockerfile b/projects/janus-gateway/Dockerfile
index f0c56cd..791997d 100644
--- a/projects/janus-gateway/Dockerfile
+++ b/projects/janus-gateway/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER toppi.ale@gmail.com
 RUN apt-get update && apt-get install -y \
 	autoconf autoconf-archive \
 	automake \
diff --git a/projects/janus-gateway/project.yaml b/projects/janus-gateway/project.yaml
index f2a640a..800eada 100644
--- a/projects/janus-gateway/project.yaml
+++ b/projects/janus-gateway/project.yaml
@@ -1,11 +1,23 @@
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
 homepage: "https://github.com/meetecho/janus-gateway"
-language: c++
 primary_contact: "toppi.ale@gmail.com"
-auto_ccs:
-  - "lminiero@gmail.com"
 sanitizers:
   - address
   - memory
   - undefined
 coverage_extra_args: -ignore-filename-regex=.*glib.* -ignore-filename-regex=.*log.c
-main_repo: 'https://github.com/meetecho/janus-gateway.git'
diff --git a/projects/java-example/Dockerfile b/projects/java-example/Dockerfile
deleted file mode 100644
index 316e9a8..0000000
--- a/projects/java-example/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-COPY build.sh $SRC/
-
-COPY ExampleFuzzerNative.h ExampleFuzzerNative.cpp $SRC/
-COPY ExampleFuzzer.java ExampleValueProfileFuzzer.java ExampleFuzzerNative.java default.options $SRC/
-
-WORKDIR $SRC/
diff --git a/projects/java-example/ExampleFuzzer.java b/projects/java-example/ExampleFuzzer.java
deleted file mode 100644
index 4dde09a..0000000
--- a/projects/java-example/ExampleFuzzer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-import java.security.SecureRandom;
-
-public class ExampleFuzzer {
-  public static void fuzzerInitialize() {
-    // Optional initialization to be run before the first call to fuzzerTestOneInput.
-  }
-
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    String input = data.consumeRemainingAsString();
-    long random = 123123132;
-    if (input.startsWith("magicstring" + random) && input.length() > 30
-        && input.charAt(25) == 'C') {
-      throw new IllegalStateException("Not reached");
-    }
-  }
-}
diff --git a/projects/java-example/ExampleFuzzerNative.cpp b/projects/java-example/ExampleFuzzerNative.cpp
deleted file mode 100644
index 7ae0de8..0000000
--- a/projects/java-example/ExampleFuzzerNative.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include "ExampleFuzzerNative.h"
-
-#include <string>
-
-// simple function containing a crash that requires coverage and string compare
-// instrumentation for the fuzzer to find
-void parseInternal(const std::string &input) {
-  if (input[0] == 'a' && input[1] == 'b' && input[5] == 'c') {
-    if (input.find("secret_in_native_library") != std::string::npos) {
-      // BOOM
-      *(char *)1 = 2;
-    }
-  }
-}
-
-JNIEXPORT jboolean JNICALL Java_ExampleFuzzerNative_parse(
-    JNIEnv *env, jobject o, jstring bytes) {
-  const char *input(env->GetStringUTFChars(bytes, nullptr));
-  parseInternal(input);
-  env->ReleaseStringUTFChars(bytes, input);
-  return false;
-}
diff --git a/projects/java-example/ExampleFuzzerNative.h b/projects/java-example/ExampleFuzzerNative.h
deleted file mode 100644
index 7c9b8a5..0000000
--- a/projects/java-example/ExampleFuzzerNative.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class ExampleFuzzerNative */
-
-#ifndef _Included_ExampleFuzzerNative
-#define _Included_ExampleFuzzerNative
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     ExampleFuzzerNative
- * Method:    parse
- * Signature: (Ljava/lang/String;)Z
- */
-JNIEXPORT jboolean JNICALL
-Java_ExampleFuzzerNative_parse(JNIEnv *, jobject, jstring);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/projects/java-example/ExampleFuzzerNative.java b/projects/java-example/ExampleFuzzerNative.java
deleted file mode 100644
index daf75fa..0000000
--- a/projects/java-example/ExampleFuzzerNative.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-
-public class ExampleFuzzerNative {
-  static {
-    System.loadLibrary("native");
-  }
-
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    int val = data.consumeInt();
-    String stringData = data.consumeRemainingAsString();
-    if (val == 17759716 && stringData.length() > 10 && stringData.contains("jazzer")) {
-      // call native function which contains a crash
-      parse(stringData);
-    }
-  }
-
-  private static native boolean parse(String bytes);
-}
diff --git a/projects/java-example/ExampleValueProfileFuzzer.java b/projects/java-example/ExampleValueProfileFuzzer.java
deleted file mode 100644
index 22b4ce5..0000000
--- a/projects/java-example/ExampleValueProfileFuzzer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-import java.util.Base64;
-
-public class ExampleValueProfileFuzzer {
-  private static String base64(byte[] input) {
-    return Base64.getEncoder().encodeToString(input);
-  }
-
-  private static long insecureEncrypt(long input) {
-    long key = 0xefe4eb93215cb6b0L;
-    return input ^ key;
-  }
-
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    // Without -use_value_profile=1, the fuzzer gets stuck here as there is no direct correspondence
-    // between the input bytes and the compared string. With value profile, the fuzzer can guess the
-    // expected input byte by byte, which takes linear rather than exponential time.
-    if (base64(data.consumeBytes(6)).equals("SmF6emVy")) {
-      long[] plaintextBlocks = data.consumeLongs(2);
-      if (plaintextBlocks.length != 2)
-        return;
-      if (insecureEncrypt(plaintextBlocks[0]) == 0x9fc48ee64d3dc090L) {
-        // Without --fake_pcs (enabled by default with -use_value_profile=1), the fuzzer would get
-        // stuck here as the value profile information for long comparisons would not be able to
-        // distinguish between this comparison and the one above.
-        if (insecureEncrypt(plaintextBlocks[1]) == 0x888a82ff483ad9c2L) {
-          mustNeverBeCalled();
-        }
-      }
-    }
-  }
-
-  private static void mustNeverBeCalled() {
-    throw new IllegalStateException("mustNeverBeCalled has been called");
-  }
-}
diff --git a/projects/java-example/build.sh b/projects/java-example/build.sh
deleted file mode 100755
index 63f4c95..0000000
--- a/projects/java-example/build.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build native library.
-JVM_INCLUDES="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
-$CXX $CXXFLAGS $JVM_INCLUDES -fPIC -shared \
-    ExampleFuzzerNative.cpp -o $OUT/libnative.so
-
-BUILD_CLASSPATH=$JAZZER_API_PATH
-
-# All class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java' -or -name '*FuzzerNative.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  if [[ $fuzzer_basename == *FuzzerNative ]]; then
-    driver=jazzer_driver_asan
-  else
-    driver=jazzer_driver
-  fi
-
-  cp default.options $OUT/"$fuzzer_basename".options
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/java-example/default.options b/projects/java-example/default.options
deleted file mode 100644
index 5931803..0000000
--- a/projects/java-example/default.options
+++ /dev/null
@@ -1,3 +0,0 @@
-[asan]
-handle_segv=1
-allow_user_segv_handler=1
diff --git a/projects/java-example/project.yaml b/projects/java-example/project.yaml
deleted file mode 100644
index e71c405..0000000
--- a/projects/java-example/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://github.com/CodeIntelligenceTesting/jazzer"
-language: jvm
-primary_contact: "meumertzheim@code-intelligence.com"
-fuzzing_engines:
-  - libfuzzer
-main_repo: "https://github.com/CodeIntelligenceTesting/jazzer"
-sanitizers:
-  - address
diff --git a/projects/jbig2dec/Dockerfile b/projects/jbig2dec/Dockerfile
index 22d95b7..c0ff588 100644
--- a/projects/jbig2dec/Dockerfile
+++ b/projects/jbig2dec/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER sebastian.rasmussen@artifex.com
 RUN apt-get update && apt-get install -y make libtool pkg-config vim libreadline-dev wget autoconf
 RUN git clone --recursive --depth 1 git://git.ghostscript.com/jbig2dec.git jbig2dec
 RUN mkdir tests
diff --git a/projects/jbig2dec/jbig2_fuzzer.cc b/projects/jbig2dec/jbig2_fuzzer.cc
index 4b94f2c..fda32f6 100644
--- a/projects/jbig2dec/jbig2_fuzzer.cc
+++ b/projects/jbig2dec/jbig2_fuzzer.cc
@@ -23,104 +23,85 @@
 
 #include "jbig2.h"
 
-#define ALIGNMENT ((size_t) 16)
-#define KBYTE ((size_t) 1024)
-#define MBYTE (1024 * KBYTE)
-#define GBYTE (1024 * MBYTE)
-#define MAX_ALLOCATION (1 * GBYTE)
+#define ALIGNMENT 16
+#define MAX_ALLOCATION (1024 * 1024 * 1024)
 
-static size_t used;
+static uint64_t total = 0;
 
-static void *jbig2_fuzzer_reached_limit(size_t oldsize, size_t size)
+static void *jbig2_alloc(Jbig2Allocator *allocator, size_t size)
 {
-  if (oldsize == 0)
-    fprintf(stderr, "limit: %zu Mbyte used: %zu Mbyte allocation: %zu: limit reached\n", MAX_ALLOCATION / MBYTE, used / MBYTE, size);
-  else
-    fprintf(stderr, "limit: %zu Mbyte used: %zu Mbyte reallocation: %zu -> %zu: limit reached\n", MAX_ALLOCATION / MBYTE, used / MBYTE, oldsize, size);
-  fflush(0);
-  return NULL;
-}
-
-static void *jbig2_fuzzer_alloc(Jbig2Allocator *allocator, size_t size)
-{
-  char *ptr = NULL;
+  void *ptr;
 
   if (size == 0)
     return NULL;
+
+  ptr = malloc(size + ALIGNMENT);
+  memcpy(ptr, &size, sizeof(size));
+  total += size + ALIGNMENT;
+
+  return (unsigned char *) ptr + ALIGNMENT;
+}
+
+static void jbig2_free(Jbig2Allocator *allocator, void *p)
+{
+  int size;
+
+  if (p == NULL)
+    return;
+
+  memcpy(&size, (unsigned char *) p - ALIGNMENT, sizeof(size));
+  total -= size + ALIGNMENT;
+  free((unsigned char *) p - ALIGNMENT);
+}
+
+static void *jbig2_realloc(Jbig2Allocator *allocator, void *p, size_t size)
+{
+  unsigned char *oldp = p ? (unsigned char *) p - ALIGNMENT : NULL;
+
   if (size > SIZE_MAX - ALIGNMENT)
     return NULL;
-  if (size + ALIGNMENT > MAX_ALLOCATION - used)
-    return jbig2_fuzzer_reached_limit(0, size + ALIGNMENT);
 
-  ptr = (char *) malloc(size + ALIGNMENT);
-  if (ptr == NULL)
+  if (size > MAX_ALLOCATION - ALIGNMENT - total)
     return NULL;
 
-  memcpy(ptr, &size, sizeof(size));
-  used += size + ALIGNMENT;
+  if (oldp == NULL)
+  {
+    if (size == 0)
+      return NULL;
 
-  return ptr + ALIGNMENT;
-}
-
-static void jbig2_fuzzer_free(Jbig2Allocator *allocator, void *ptr)
-{
-  size_t size;
-
-  if (ptr == NULL)
-    return;
-  if (ptr < (void *) ALIGNMENT)
-    return;
-
-  ptr = (char *) ptr - ALIGNMENT;
-  memcpy(&size, ptr, sizeof(size));
-
-  used -= size + ALIGNMENT;
-  free(ptr);
-}
-
-static void *jbig2_fuzzer_realloc(Jbig2Allocator *allocator, void *old, size_t size)
-{
-  size_t oldsize;
-  char *ptr;
-
-  if (old == NULL)
-    return jbig2_fuzzer_alloc(allocator, size);
-  if (old < (void *) ALIGNMENT)
-    return NULL;
-
-  if (size == 0) {
-    jbig2_fuzzer_free(allocator, old);
-    return NULL;
+    p = malloc(size + ALIGNMENT);
   }
-  if (size > SIZE_MAX - ALIGNMENT)
-    return NULL;
+  else
+  {
+    int oldsize;
+    memcpy(&oldsize, oldp, sizeof(oldsize));
 
-  old = (char *) old - ALIGNMENT;
-  memcpy(&oldsize, old, sizeof(oldsize));
+    if (size == 0)
+    {
+      total -= oldsize + ALIGNMENT;
+      free(oldp);
+      return NULL;
+    }
 
-  if (size + ALIGNMENT > MAX_ALLOCATION - used + oldsize + ALIGNMENT)
-    return jbig2_fuzzer_reached_limit(oldsize + ALIGNMENT, size + ALIGNMENT);
+    p = realloc(oldp, size + ALIGNMENT);
+    if (p == NULL)
+      return NULL;
 
-  ptr = (char *) realloc(old, size + ALIGNMENT);
-  if (ptr == NULL)
-    return NULL;
+    total -= oldsize + ALIGNMENT;
+  }
 
-  used -= oldsize + ALIGNMENT;
-  memcpy(ptr, &size, sizeof(size));
-  used += size + ALIGNMENT;
-
-  return ptr + ALIGNMENT;
+  memcpy(p, &size, sizeof(size));
+  total += size + ALIGNMENT;
+  return (unsigned char *) p + ALIGNMENT;
 }
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   Jbig2Allocator allocator;
   Jbig2Ctx *ctx = NULL;
 
-  used = 0;
-
-  allocator.alloc = jbig2_fuzzer_alloc;
-  allocator.free = jbig2_fuzzer_free;
-  allocator.realloc = jbig2_fuzzer_realloc;
+  allocator.alloc = jbig2_alloc;
+  allocator.free = jbig2_free;
+  allocator.realloc = jbig2_realloc;
 
   ctx = jbig2_ctx_new(&allocator, (Jbig2Options) 0, NULL, NULL, NULL);
   if (jbig2_data_in(ctx, data, size) == 0)
diff --git a/projects/jbig2dec/project.yaml b/projects/jbig2dec/project.yaml
index 7f14e07..e7b3df1 100644
--- a/projects/jbig2dec/project.yaml
+++ b/projects/jbig2dec/project.yaml
@@ -1,13 +1,5 @@
 homepage: "https://www.jbig2dec.com"
-language: c++
 primary_contact: sebastian.rasmussen@artifex.com
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
   - memory
-  - dataflow
-main_repo: 'git://git.ghostscript.com/jbig2dec.git'
diff --git a/projects/jsc/Dockerfile b/projects/jsc/Dockerfile
index d98b69e..ddd3543 100644
--- a/projects/jsc/Dockerfile
+++ b/projects/jsc/Dockerfile
@@ -15,9 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER ochang@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool python ruby ninja-build bison flex gperf wget
-
+# Requires newer CMake than available in Ubuntu 16.04
+RUN wget -q -O - https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.sh > /tmp/install_cmake.sh && \
+    cd /usr && bash /tmp/install_cmake.sh -- --skip-license && \
+    rm /tmp/install_cmake.sh
 RUN git clone --depth 1 git://git.webkit.org/WebKit.git
-RUN wget https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-src.tgz && tar xzvf icu4c-66_1-src.tgz
+RUN wget http://download.icu-project.org/files/icu4c/60.1/icu4c-60_1-src.tgz && tar xzvf icu4c-60_1-src.tgz
 WORKDIR WebKit
 COPY build.sh $SRC
diff --git a/projects/jsc/build.sh b/projects/jsc/build.sh
index b2e3adc..2e722bd 100755
--- a/projects/jsc/build.sh
+++ b/projects/jsc/build.sh
@@ -21,6 +21,8 @@
 cd $SRC/icu/source
 ./configure --disable-shared --enable-static --disable-layoutex \
   --disable-tests --disable-samples --with-data-packaging=static --prefix=$DEPS_PATH
+# ugly hack to avoid build error
+echo '#include <locale.h>' >>i18n/digitlst.h
 make install -j$(nproc)
 
 # Ugly ugly hack to get static linking to work for icu.
diff --git a/projects/jsc/project.yaml b/projects/jsc/project.yaml
index 1f1016f..a7dd02f 100644
--- a/projects/jsc/project.yaml
+++ b/projects/jsc/project.yaml
@@ -1,6 +1,8 @@
 homepage: https://webkit.org/
-language: c++
-primary_contact: "ddkilzer@apple.com"
+fuzzing_engines:
+  - none
+sanitizers:
+  - address
 auto_ccs:
   - "mark.lam@apple.com"
   - "akilsrin@apple.com"
@@ -8,9 +10,3 @@
   - "jfb@chromium.org"
   - "sbarati@apple.com"
   - "ysuzuki@apple.com"
-fuzzing_engines:
-  - none
-sanitizers:
-  - address
-blackbox: true
-main_repo: 'git://git.webkit.org/WebKit.git'
diff --git a/projects/json-c/Dockerfile b/projects/json-c/Dockerfile
index 3bb1222..c63d6b7 100644
--- a/projects/json-c/Dockerfile
+++ b/projects/json-c/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake
+MAINTAINER chriswwolfe@gmail.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/json-c/json-c.git json-c
 WORKDIR json-c
 COPY build.sh *.cc *.dict $SRC/
diff --git a/projects/json-c/build.sh b/projects/json-c/build.sh
index 9f7128a..244504d 100755
--- a/projects/json-c/build.sh
+++ b/projects/json-c/build.sh
@@ -14,17 +14,17 @@
 # limitations under the License.
 #
 ################################################################################
-mkdir json-c-build
-cd json-c-build
-cmake -DBUILD_SHARED_LIBS=OFF ..
-make -j$(nproc)
-cd ..
+
+./autogen.sh
+./configure --enable-static --disable-shared
+make -j$(nproc) all
+ar rc json_c.a *.o
 
 cp $SRC/*.dict $OUT/
 
 for f in $SRC/*_fuzzer.cc; do
     fuzzer=$(basename "$f" _fuzzer.cc)
-    $CXX $CXXFLAGS -std=c++11 -I$SRC/json-c -I$SRC/json-c/json-c-build\
+    $CXX $CXXFLAGS -std=c++11 -I$SRC/json-c \
          $SRC/${fuzzer}_fuzzer.cc -o $OUT/${fuzzer}_fuzzer \
-         $LIB_FUZZING_ENGINE $SRC/json-c/json-c-build/libjson-c.a
+         $LIB_FUZZING_ENGINE $SRC/json-c/json_c.a
 done
diff --git a/projects/json-c/project.yaml b/projects/json-c/project.yaml
index 1491cd3..435a803 100644
--- a/projects/json-c/project.yaml
+++ b/projects/json-c/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://json-c.github.io/json-c/"
-language: c++
 primary_contact: "erh+git@nimenees.com"
 auto_ccs:
   - "chriswwolfe@gmail.com"
@@ -15,4 +14,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/json-c/json-c.git'
diff --git a/projects/json-sanitizer/DenylistFuzzer.java b/projects/json-sanitizer/DenylistFuzzer.java
deleted file mode 100644
index 4e73cfc..0000000
--- a/projects/json-sanitizer/DenylistFuzzer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-import com.code_intelligence.jazzer.api.FuzzerSecurityIssueHigh;
-import com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium;
-import com.google.json.JsonSanitizer;
-
-public class DenylistFuzzer {
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    String input = data.consumeRemainingAsString();
-    String output;
-    try {
-      output = JsonSanitizer.sanitize(input, 10);
-    } catch (ArrayIndexOutOfBoundsException e) {
-      // ArrayIndexOutOfBoundsException is expected if nesting depth is
-      // exceeded.
-      return;
-    }
-
-    // Check for forbidden substrings. As these would enable Cross-Site
-    // Scripting, treat every finding as a high severity vulnerability.
-    assert !output.contains("</script")
-        : new FuzzerSecurityIssueHigh("Output contains </script");
-    assert !output.contains("]]>")
-        : new FuzzerSecurityIssueHigh("Output contains ]]>");
-
-    // Check for more forbidden substrings. As these would not directly enable
-    // Cross-Site Scripting in general, but may impact script execution on the
-    // embedding page, treat each finding as a medium severity vulnerability.
-    assert !output.contains("<script")
-        : new FuzzerSecurityIssueMedium("Output contains <script");
-    assert !output.contains("<!--")
-        : new FuzzerSecurityIssueMedium("Output contains <!--");
-  }
-}
diff --git a/projects/json-sanitizer/Dockerfile b/projects/json-sanitizer/Dockerfile
deleted file mode 100644
index f36a136..0000000
--- a/projects/json-sanitizer/Dockerfile
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y maven
-
-RUN git clone --depth 1 https://github.com/google/fuzzing
-RUN cat fuzzing/dictionaries/json.dict \
-        fuzzing/dictionaries/html.dict \
-        fuzzing/dictionaries/xml.dict \
-      > $SRC/DenylistFuzzer.dict
-RUN cp fuzzing/dictionaries/json.dict $SRC/IdempotenceFuzzer.dict
-RUN cp fuzzing/dictionaries/json.dict $SRC/ValidJsonFuzzer.dict
-
-RUN git clone --depth 1 https://github.com/dvyukov/go-fuzz-corpus && \
-    zip -q $SRC/DenylistFuzzer_seed_corpus.zip go-fuzz-corpus/json/corpus/* && \
-    zip -q $SRC/IdempotenceFuzzer_seed_corpus.zip go-fuzz-corpus/json/corpus/* && \
-    zip -q $SRC/ValidJsonFuzzer_seed_corpus.zip go-fuzz-corpus/json/corpus/*
-
-RUN git clone --depth 1 https://github.com/OWASP/json-sanitizer
-COPY build.sh $SRC/
-
-COPY DenylistFuzzer.java IdempotenceFuzzer.java ValidJsonFuzzer.java $SRC/
-
-WORKDIR $SRC/json-sanitizer
diff --git a/projects/json-sanitizer/IdempotenceFuzzer.java b/projects/json-sanitizer/IdempotenceFuzzer.java
deleted file mode 100644
index a42c91a..0000000
--- a/projects/json-sanitizer/IdempotenceFuzzer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-
-import com.google.json.JsonSanitizer;
-
-public class IdempotenceFuzzer {
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    String input = data.consumeRemainingAsString();
-    String output;
-    try {
-      output = JsonSanitizer.sanitize(input, 10);
-    } catch (ArrayIndexOutOfBoundsException e) {
-      // ArrayIndexOutOfBoundsException is expected if nesting depth is
-      // exceeded.
-      return;
-    }
-
-    // Ensure that sanitizing twice does not give different output
-    // (idempotence). Since failure to be idempotent is not a security issue in
-    // itself, fail with a regular AssertionError.
-    assert JsonSanitizer.sanitize(output).equals(output) : "Not idempotent";
-  }
-}
diff --git a/projects/json-sanitizer/ValidJsonFuzzer.java b/projects/json-sanitizer/ValidJsonFuzzer.java
deleted file mode 100644
index c8fbe03..0000000
--- a/projects/json-sanitizer/ValidJsonFuzzer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import com.code_intelligence.jazzer.api.FuzzedDataProvider;
-import com.code_intelligence.jazzer.api.FuzzerSecurityIssueLow;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.json.JsonSanitizer;
-
-public class ValidJsonFuzzer {
-  private static Gson gson = new Gson();
-
-  public static void fuzzerTestOneInput(FuzzedDataProvider data) {
-    String input = data.consumeRemainingAsString();
-    String output;
-    try {
-      output = JsonSanitizer.sanitize(input, 10);
-    } catch (ArrayIndexOutOfBoundsException e) {
-      // ArrayIndexOutOfBoundsException is expected if nesting depth is
-      // exceeded.
-      return;
-    }
-
-    // Check that the output is valid JSON. Invalid JSON may crash other parts
-    // of the application that trust the output of the sanitizer.
-    try {
-      Gson gson = new Gson();
-      gson.fromJson(output, JsonElement.class);
-    } catch (Exception e) {
-      throw new FuzzerSecurityIssueLow("Output is invalid JSON", e);
-    }
-  }
-}
diff --git a/projects/json-sanitizer/build.sh b/projects/json-sanitizer/build.sh
deleted file mode 100755
index 64df5e5..0000000
--- a/projects/json-sanitizer/build.sh
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Move seed corpus and dictionary.
-mv $SRC/{*.zip,*.dict} $OUT
-
-# Build the json-sanitizer jar.
-CURRENT_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
--Dexpression=project.version -q -DforceStdout)
-mvn package
-cp "target/json-sanitizer-$CURRENT_VERSION.jar" $OUT/json-sanitizer.jar
-
-# The jar files containing the project (separated by spaces).
-PROJECT_JARS=json-sanitizer.jar
-
-# Get the fuzzer dependencies (gson).
-mvn dependency:copy -Dartifact=com.google.code.gson:gson:2.8.6 -DoutputDirectory=$OUT/
-
-# The jar files containing further dependencies of the fuzz targets (separated
-# by spaces).
-FUZZER_JARS=gson-2.8.6.jar
-
-# Build fuzzers in $OUT.
-ALL_JARS="$PROJECT_JARS $FUZZER_JARS"
-BUILD_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
-
-# All jars and class files lie in the same directory as the fuzzer at runtime.
-RUNTIME_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "\$this_dir/%s:"):.:\$this_dir
-
-for fuzzer in $(find $SRC -name '*Fuzzer.java'); do
-  fuzzer_basename=$(basename -s .java $fuzzer)
-  javac -cp $BUILD_CLASSPATH $fuzzer
-  cp $SRC/$fuzzer_basename.class $OUT/
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
-\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
---cp=$RUNTIME_CLASSPATH \
---target_class=$fuzzer_basename \
---jvm_args=\"-Xmx2048m\" \
-\$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/json-sanitizer/project.yaml b/projects/json-sanitizer/project.yaml
deleted file mode 100644
index 028335f..0000000
--- a/projects/json-sanitizer/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/OWASP/json-sanitizer"
-language: jvm
-primary_contact: "mikesamuel@gmail.com"
-auto_ccs:
-  - "meumertzheim@code-intelligence.com"
-fuzzing_engines:
-  - libfuzzer
-main_repo: "https://github.com/OWASP/json-sanitizer"
-sanitizers:
-  - address
diff --git a/projects/json/Dockerfile b/projects/json/Dockerfile
index 6bf74ed..18203ea 100644
--- a/projects/json/Dockerfile
+++ b/projects/json/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER vitalybuka@chromium.org
 RUN apt-get update && apt-get install -y binutils make
 
 RUN git clone --depth 1 -b develop https://github.com/nlohmann/json.git
 WORKDIR json/
-COPY build.sh *.options parse_afl_fuzzer.dict $SRC/
+COPY build.sh *.options $SRC/
diff --git a/projects/json/build.sh b/projects/json/build.sh
index 3cf7802..d53a1b4 100755
--- a/projects/json/build.sh
+++ b/projects/json/build.sh
@@ -23,4 +23,3 @@
     FUZZER=$(basename $F .cpp)
     cp $SRC/fuzzer-parse.options $OUT/$FUZZER.options
 done
-cp $SRC/parse_afl_fuzzer.dict $OUT/
diff --git a/projects/json/parse_afl_fuzzer.dict b/projects/json/parse_afl_fuzzer.dict
deleted file mode 100644
index c9ced21..0000000
--- a/projects/json/parse_afl_fuzzer.dict
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# AFL dictionary for JSON
-# -----------------------
-#
-# Just the very basics.
-#
-# Inspired by a dictionary by Jakub Wilk <jwilk@jwilk.net>
-#
-
-"0"
-",0"
-":0"
-"0:"
-"-1.2e+3"
-
-"true"
-"false"
-"null"
-
-"\"\""
-",\"\""
-":\"\""
-"\"\":"
-
-"{}"
-",{}"
-":{}"
-"{\"\":0}"
-"{{}}"
-
-"[]"
-",[]"
-":[]"
-"[0]"
-"[[]]"
-
-"''"
-"\\"
-"\\b"
-"\\f"
-"\\n"
-"\\r"
-"\\t"
-"\\u0000"
-"\\x00"
-"\\0"
-"\\uD800\\uDC00"
-"\\uDBFF\\uDFFF"
-
-"\"\":0"
-"//"
-"/**/"
\ No newline at end of file
diff --git a/projects/json/project.yaml b/projects/json/project.yaml
index 83f48e2..0dada2a 100644
--- a/projects/json/project.yaml
+++ b/projects/json/project.yaml
@@ -1,10 +1,6 @@
 homepage: "https://github.com/nlohmann/json"
-language: c++
 primary_contact: "niels.lohmann@gmail.com"
-auto_ccs:
-  - "tanujgarg@google.com"
 sanitizers:
  - address
  - undefined
  - memory
-main_repo: 'https://github.com/nlohmann/json.git'
diff --git a/projects/json5format/Dockerfile b/projects/json5format/Dockerfile
deleted file mode 100644
index c0117a5..0000000
--- a/projects/json5format/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/google/json5format
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/json5format/build.sh b/projects/json5format/build.sh
deleted file mode 100755
index c722bdb..0000000
--- a/projects/json5format/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/json5format
-cargo fuzz build -O
-cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_parse $OUT/fuzz_parse
diff --git a/projects/json5format/project.yaml b/projects/json5format/project.yaml
deleted file mode 100644
index e73905e..0000000
--- a/projects/json5format/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://crates.io/crates/json5format"
-main_repo: "https://github.com/google/json5format"
-primary_contact: "richkadel@google.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/jsoncons/Dockerfile b/projects/jsoncons/Dockerfile
deleted file mode 100755
index c3ade88..0000000
--- a/projects/jsoncons/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake
-RUN git clone https://github.com/danielaparker/jsoncons
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/jsoncons/build.sh b/projects/jsoncons/build.sh
deleted file mode 100755
index f53a06d..0000000
--- a/projects/jsoncons/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd jsoncons/fuzzers
-
-# Ensure script is executable
-chmod +x ./build_fuzzers.sh
-./build_fuzzers.sh
diff --git a/projects/jsoncons/project.yaml b/projects/jsoncons/project.yaml
deleted file mode 100755
index f086507..0000000
--- a/projects/jsoncons/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/danielaparker/jsoncons"
-primary_contact: "danielaparker@gmail.com"
-language: c++
-auto_ccs :
-  - "david@adalogics.com"
-main_repo: 'https://github.com/danielaparker/jsoncons'
diff --git a/projects/jsoncpp/Dockerfile b/projects/jsoncpp/Dockerfile
index eefbce9..c649d70 100644
--- a/projects/jsoncpp/Dockerfile
+++ b/projects/jsoncpp/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google Inc.
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,10 +15,15 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update -y && apt-get install -y curl wget \
-    binutils cmake ninja-build liblzma-dev libz-dev pkg-config autoconf libtool
+RUN apt-get update && apt-get install -y build-essential make curl wget
+
+# Install latest cmake.
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh; \
+    chmod +x cmake-3.14.5-Linux-x86_64.sh; \
+    ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/usr/local"
+
 RUN git clone --depth 1 https://github.com/open-source-parsers/jsoncpp
 WORKDIR jsoncpp
-RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
-RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
-COPY build.sh *.proto *.h *.cc $SRC/
+
+COPY build.sh $SRC/
+
diff --git a/projects/jsoncpp/build.sh b/projects/jsoncpp/build.sh
index 739dcd8..8bb8f00 100644
--- a/projects/jsoncpp/build.sh
+++ b/projects/jsoncpp/build.sh
@@ -1,5 +1,5 @@
 #!/bin/bash -eu
-# Copyright 2020 Google Inc.
+# Copyright 2018 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,21 +24,7 @@
 # Compile fuzzer.
 $CXX $CXXFLAGS -I../include $LIB_FUZZING_ENGINE \
     ../src/test_lib_json/fuzz.cpp -o $OUT/jsoncpp_fuzzer \
-    lib/libjsoncpp.a
+    src/lib_json/libjsoncpp.a
 
 # Add dictionary.
 cp $SRC/jsoncpp/src/test_lib_json/fuzz.dict $OUT/jsoncpp_fuzzer.dict
-
-if [[ $CFLAGS != *sanitize=memory* ]]; then
-# Compile json proto.
-rm -rf genfiles && mkdir genfiles && ../LPM/external.protobuf/bin/protoc json.proto --cpp_out=genfiles --proto_path=$SRC
-
-# Compile LPM fuzzer.
-$CXX $CXXFLAGS -I genfiles -I .. -I ../libprotobuf-mutator/ -I ../LPM/external.protobuf/include -I ../include $LIB_FUZZING_ENGINE \
-    $SRC/jsoncpp_fuzz_proto.cc genfiles/json.pb.cc $SRC/json_proto_converter.cc \
-    ../LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
-    ../LPM/src/libprotobuf-mutator.a \
-    ../LPM/external.protobuf/lib/libprotobuf.a \
-    -o  $OUT/jsoncpp_proto_fuzzer \
-    lib/libjsoncpp.a
-fi
\ No newline at end of file
diff --git a/projects/jsoncpp/json.proto b/projects/jsoncpp/json.proto
deleted file mode 100644
index 8dd9de4..0000000
--- a/projects/jsoncpp/json.proto
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// The proto definition for JSON format has been written based on
-// http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
-
-syntax = "proto2";
-
-package json_proto;
-
-message JsonParseAPI {
-  required int32 settings = 1;
-  required JsonObject object_value = 2;
-}
-
-message JsonObject {
-  required int32 settings = 1;
-  required string name = 2;
-  required JsonValue value = 3;
-}
-
-message JsonValue {
-  oneof value {
-    // Json value types:
-
-    // null: null, will be used when 'oneof' contains nothing
-
-    // object: another json object of any type
-    JsonObject object_value = 1;
-
-    // array: an array of values
-    ArrayValue array_value = 2;
-
-    // number: can be an integer, a float, an exponent
-    NumberValue number_value = 3;
-
-    // string: unicode string
-    StringValue string_value = 4;
-
-    // boolean: true or talse
-    BooleanValue boolean_value = 5;
-  }
-}
-
-message ArrayValue {
-  repeated JsonValue value = 1;
-}
-
-message NumberInteger {
-  required int64 value = 1;
-}
-
-message NumberFloat {
-  required double value = 1;
-}
-
-message NumberExponent {
-  required int32 base = 1;
-  required int32 exponent = 2;
-  required bool use_uppercase = 3;
-}
-
-message NumberExponentFrac {
-  required float base = 1;
-  required int32 exponent = 2;
-  required bool use_uppercase = 3;
-}
-
-message NumberValue {
-  required NumberInteger integer_value = 1;
-
-  // integer_value is used when oneof field below has nothing.
-  oneof value {
-    NumberFloat float_value = 2;
-    NumberExponent exponent_value = 3;
-    NumberExponentFrac exponent_frac_value = 4;
-  }
-}
-
-message StringValue {
-  required string value = 1;
-}
-
-message BooleanValue {
-  required bool value = 1;
-}
diff --git a/projects/jsoncpp/json_proto_converter.cc b/projects/jsoncpp/json_proto_converter.cc
deleted file mode 100644
index ed453be..0000000
--- a/projects/jsoncpp/json_proto_converter.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include "json_proto_converter.h"
-
-namespace json_proto {
-
-void JsonProtoConverter::AppendArray(const ArrayValue& array_value) {
-  data_ << '[';
-  bool need_comma = false;
-  for (const auto& value : array_value.value()) {
-    // Trailing comma inside of an array makes JSON invalid, avoid adding that.
-    if (need_comma)
-      data_ << ',';
-    else
-      need_comma = true;
-
-    AppendValue(value);
-  }
-  data_ << ']';
-}
-
-void JsonProtoConverter::AppendNumber(const NumberValue& number_value) {
-  if (number_value.has_float_value()) {
-    data_ << number_value.float_value().value();
-  } else if (number_value.has_exponent_value()) {
-    auto value = number_value.exponent_value();
-    data_ << value.base();
-    data_ << (value.use_uppercase() ? 'E' : 'e');
-    data_ << value.exponent();
-  } else if (number_value.has_exponent_frac_value()) {
-    auto value = number_value.exponent_value();
-    data_ << value.base();
-    data_ << (value.use_uppercase() ? 'E' : 'e');
-    data_ << value.exponent();
-  } else {
-    data_ << number_value.integer_value().value();
-  }
-}
-
-void JsonProtoConverter::AppendObject(const JsonObject& json_object) {
-  data_ << '{' << '"' << json_object.name() << '"' << ':';
-  AppendValue(json_object.value());
-  data_ << '}';
-}
-
-void JsonProtoConverter::AppendValue(const JsonValue& json_value) {
-  if (json_value.has_object_value()) {
-    AppendObject(json_value.object_value());
-  } else if (json_value.has_array_value()) {
-    AppendArray(json_value.array_value());
-  } else if (json_value.has_number_value()) {
-    AppendNumber(json_value.number_value());
-  } else if (json_value.has_string_value()) {
-    data_ << '"' << json_value.string_value().value() << '"';
-  } else if (json_value.has_boolean_value()) {
-    data_ << (json_value.boolean_value().value() ? "true" : "false");
-  } else {
-    data_ << "null";
-  }
-}
-
-std::string JsonProtoConverter::Convert(const JsonObject& json_object) {
-  AppendObject(json_object);
-  return data_.str();
-}
-
-std::string JsonProtoConverter::Convert(
-    const json_proto::ArrayValue& json_array) {
-  AppendArray(json_array);
-  return data_.str();
-}
-
-}  // namespace json_proto
diff --git a/projects/jsoncpp/json_proto_converter.h b/projects/jsoncpp/json_proto_converter.h
deleted file mode 100644
index c354672..0000000
--- a/projects/jsoncpp/json_proto_converter.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#ifndef JSON_PROTO_CONVERTER_H_
-#define JSON_PROTO_CONVERTER_H_
-
-#include <sstream>
-#include <string>
-
-#include "json.pb.h"
-
-namespace json_proto {
-
-class JsonProtoConverter {
- public:
-  std::string Convert(const json_proto::JsonObject&);
-  std::string Convert(const json_proto::ArrayValue&);
-
- private:
-  std::stringstream data_;
-
-  void AppendArray(const json_proto::ArrayValue&);
-  void AppendNumber(const json_proto::NumberValue&);
-  void AppendObject(const json_proto::JsonObject&);
-  void AppendValue(const json_proto::JsonValue&);
-};
-
-}  // namespace json_proto
-
-#endif  // TESTING_LIBFUZZER_PROTO_JSON_PROTO_CONVERTER_H_
diff --git a/projects/jsoncpp/jsoncpp_fuzz_proto.cc b/projects/jsoncpp/jsoncpp_fuzz_proto.cc
deleted file mode 100644
index 773821e..0000000
--- a/projects/jsoncpp/jsoncpp_fuzz_proto.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include "json.pb.h"
-#include "json_proto_converter.h"
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-
-#include <cstdint>
-#include <json/config.h>
-#include <json/json.h>
-#include <memory>
-#include <string>
-#include <iostream>
-#include <cstddef>
-#include <stdint.h>
-#include <cstring>
-#include <iostream>
-
-namespace Json {
-class Exception;
-}
-
-void FuzzJson(std::string data_str, int32_t hash_settings) {
-  Json::CharReaderBuilder builder;
-
-  builder.settings_["failIfExtra"] = hash_settings & (1 << 0);
-  builder.settings_["allowComments_"] = hash_settings & (1 << 1);
-  builder.settings_["strictRoot_"] = hash_settings & (1 << 2);
-  builder.settings_["allowDroppedNullPlaceholders_"] = hash_settings & (1 << 3);
-  builder.settings_["allowNumericKeys_"] = hash_settings & (1 << 4);
-  builder.settings_["allowSingleQuotes_"] = hash_settings & (1 << 5);
-  builder.settings_["failIfExtra_"] = hash_settings & (1 << 6);
-  builder.settings_["rejectDupKeys_"] = hash_settings & (1 << 7);
-  builder.settings_["allowSpecialFloats_"] = hash_settings & (1 << 8);
-  builder.settings_["collectComments"] = hash_settings & (1 << 9);
-  builder.settings_["allowTrailingCommas_"] = hash_settings & (1 << 10);
-
-  std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
-  
-  const char* begin = data_str.c_str();
-  const char* end = begin + data_str.length();
-
-  Json::Value root;
-  try {
-    reader->parse(begin, end, &root, nullptr);
-  } catch (Json::Exception const&) {
-  }
-}
-
-DEFINE_PROTO_FUZZER(const json_proto::JsonParseAPI &json_proto) {
-  json_proto::JsonProtoConverter converter;
-  std::string data_str = converter.Convert(json_proto.object_value());
-  int32_t hash_settings = json_proto.settings();
-  FuzzJson(data_str, hash_settings);
-}
diff --git a/projects/jsoncpp/project.yaml b/projects/jsoncpp/project.yaml
index 8dc8f02..08e3581 100644
--- a/projects/jsoncpp/project.yaml
+++ b/projects/jsoncpp/project.yaml
@@ -1,10 +1,8 @@
 homepage: "https://github.com/open-source-parsers/jsoncpp/"
-language: c++
-primary_contact: "chenguopingdota@163.com"
+primary_contact: "cdunn2001@gmail.com"
 auto_ccs:
  - "jophba@chromium.org"
 sanitizers:
   - address
   - undefined
   - memory
-main_repo: 'https://github.com/open-source-parsers/jsoncpp'
diff --git a/projects/jsonnet/project.yaml b/projects/jsonnet/project.yaml
index 4b33850..e47162a 100644
--- a/projects/jsonnet/project.yaml
+++ b/projects/jsonnet/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/jsonnet"
-language: c++
 primary_contact: "dcunnin@google.com"
 auto_ccs:
   - "wwweiwang@google.com"
@@ -17,4 +16,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/google/jsonnet.git'
diff --git a/projects/jsonparser/Dockerfile b/projects/jsonparser/Dockerfile
deleted file mode 100644
index a5d91fa..0000000
--- a/projects/jsonparser/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/buger/jsonparser
-
-COPY build.sh $SRC/
-WORKDIR $SRC/jsonparser
diff --git a/projects/jsonparser/build.sh b/projects/jsonparser/build.sh
deleted file mode 100755
index 3b576e1..0000000
--- a/projects/jsonparser/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./oss-fuzz-build.sh
diff --git a/projects/jsonparser/project.yaml b/projects/jsonparser/project.yaml
deleted file mode 100644
index 28b579a..0000000
--- a/projects/jsonparser/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/buger/jsonparser"
-primary_contact: "leonsbox@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "leloucharcher@gmail.com"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/buger/jsonparser'
diff --git a/projects/jsonschema/Dockerfile b/projects/jsonschema/Dockerfile
deleted file mode 100644
index ffec717..0000000
--- a/projects/jsonschema/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN pip3 install hypothesis
-
-RUN git clone --depth=1 https://github.com/Julian/jsonschema
-WORKDIR $SRC/jsonschema
-
-COPY build.sh $SRC/
diff --git a/projects/jsonschema/build.sh b/projects/jsonschema/build.sh
deleted file mode 100644
index 71d4ad6..0000000
--- a/projects/jsonschema/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-pip3 install .
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/jsonschema/project.yaml b/projects/jsonschema/project.yaml
deleted file mode 100644
index d7ac42b..0000000
--- a/projects/jsonschema/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/Julian/jsonschema"
-language: python
-primary_contact: "Julian+Security@GrayVines.com"
-auto_ccs:
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/Julian/jsonschema'
diff --git a/projects/kamailio/Dockerfile b/projects/kamailio/Dockerfile
deleted file mode 100755
index 5b67dee..0000000
--- a/projects/kamailio/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y bison flex
-RUN git clone https://github.com/kamailio/kamailio
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/kamailio/build.sh b/projects/kamailio/build.sh
deleted file mode 100755
index 2b7c373..0000000
--- a/projects/kamailio/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/kamailio
-
-export CC_OPT="${CFLAGS}"
-export LD_EXTRA_OPTS="${CFLAGS}"
-
-sed -i 's/int main(/int main2(/g' ./src/main.c
-
-make || true
-cd src
-mkdir objects && find . -name "*.o" -exec cp {} ./objects/ \;
-ar -r libkamilio.a ./objects/*.o
-cd ../
-$CC $CFLAGS $LIB_FUZZING_ENGINE ./misc/fuzz/fuzz_uri.c -o $OUT/fuzz_uri \
-    -DFAST_LOCK -D__CPU_i386 ./src/libkamilio.a \
-    -I./src/ -I./src/core/parser -ldl -lresolv -lm
diff --git a/projects/kamailio/project.yaml b/projects/kamailio/project.yaml
deleted file mode 100755
index 46020a0..0000000
--- a/projects/kamailio/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "www.kamailio.org"
-main_repo: "https://github.com/kamailio/kamailio"
-primary_contact: "ossfuzz@kamailio.org"
-language: c
-auto_ccs:
-  - "miconda@gmail.com"
-  - "david@adalogics.com"
diff --git a/projects/karchive/Dockerfile b/projects/karchive/Dockerfile
index d6c65e0..24fedad 100644
--- a/projects/karchive/Dockerfile
+++ b/projects/karchive/Dockerfile
@@ -15,14 +15,15 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install --yes cmake make autoconf automake autopoint libtool wget po4a
+MAINTAINER tsdgeos@gmail.com
+RUN apt-get update && apt-get install --yes cmake make autoconf automake autopoint libtool wget
 RUN git clone --depth 1 https://github.com/madler/zlib.git
 RUN git clone --depth 1 https://github.com/nih-at/libzip.git
 RUN wget https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
 RUN git clone https://git.tukaani.org/xz.git
 RUN git clone --depth 1 --branch=5.15 git://code.qt.io/qt/qtbase.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/extra-cmake-modules.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/karchive.git
+RUN git clone --depth 1 git://anongit.kde.org/extra-cmake-modules
+RUN git clone --depth 1 git://anongit.kde.org/karchive
 COPY build.sh $SRC
 COPY karchive_fuzzer.cc $SRC
 WORKDIR karchive
diff --git a/projects/karchive/build.sh b/projects/karchive/build.sh
index 7c24c3d..b695ef7 100644
--- a/projects/karchive/build.sh
+++ b/projects/karchive/build.sh
@@ -78,7 +78,7 @@
 make install -j$(nproc)
 
 # Build karchive_fuzzer
-$CXX $CXXFLAGS -fPIC -std=c++11 $SRC/karchive_fuzzer.cc -o $OUT/karchive_fuzzer -I $SRC/qtbase/include/QtCore/ -I $SRC/qtbase/include/ -I $SRC/qtbase/include//QtGui -I $SRC/qtbase/mkspecs/linux-clang-libc++/ -I /usr/local/include/KF5/KArchive -L $SRC/qtbase/lib -lQt5Core -lm -lqtpcre2 -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libzip.a /usr/local/lib/libz.a -lKF5Archive /usr/local/lib/libbz2.a -llzma -lQt5Core /usr/local/lib/libz.a
+$CXX $CXXFLAGS -fPIC -std=c++11 $SRC/karchive_fuzzer.cc -o $OUT/karchive_fuzzer -I $SRC/qtbase/include/QtCore/ -I $SRC/qtbase/include/ -I $SRC/qtbase/include//QtGui -I $SRC/qtbase/mkspecs/linux-clang-libc++/ -I /usr/local/include/KF5/KArchive -L $SRC/qtbase/lib -lQt5Core -lm -lqtpcre2 -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libzip.a /usr/local/lib/libz.a -lKF5Archive /usr/local/lib/libbz2.a -llzma -lQt5Core
 
 cd $SRC
 find . -name "*.gz" -o -name "*.zip" -o -name "*.xz" -o -name "*.tar" | zip -q $OUT/karchive_fuzzer_seed_corpus.zip -@
diff --git a/projects/karchive/project.yaml b/projects/karchive/project.yaml
index 0e023cd..be82a3a 100644
--- a/projects/karchive/project.yaml
+++ b/projects/karchive/project.yaml
@@ -1,8 +1,6 @@
 homepage: https://cgit.kde.org/karchive.git/
-language: c++
 primary_contact: tsdgeos@gmail.com
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://invent.kde.org/frameworks/karchive.git'
diff --git a/projects/kcodecs/Dockerfile b/projects/kcodecs/Dockerfile
index 3d70e83..3a234bb 100644
--- a/projects/kcodecs/Dockerfile
+++ b/projects/kcodecs/Dockerfile
@@ -15,10 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tsdgeos@gmail.com
 RUN apt-get install --yes cmake gperf
 RUN git clone --depth 1 --branch=5.15 git://code.qt.io/qt/qtbase.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/kcodecs.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/extra-cmake-modules.git
+RUN git clone --depth 1 git://anongit.kde.org/kcodecs
+RUN git clone --depth 1 git://anongit.kde.org/extra-cmake-modules
 RUN git clone --depth 1 https://gitlab.freedesktop.org/uchardet/uchardet.git
 COPY build.sh $SRC
 COPY kcodecs_fuzzer.cc $SRC
diff --git a/projects/kcodecs/project.yaml b/projects/kcodecs/project.yaml
index 1b731e3..e6f8472 100644
--- a/projects/kcodecs/project.yaml
+++ b/projects/kcodecs/project.yaml
@@ -1,8 +1,6 @@
 homepage: https://cgit.kde.org/kcodecs.git/
-language: c++
 primary_contact: tsdgeos@gmail.com
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://invent.kde.org/frameworks/kcodecs.git'
diff --git a/projects/keystone/Dockerfile b/projects/keystone/Dockerfile
index 29bcdfd..3d0bbae 100644
--- a/projects/keystone/Dockerfile
+++ b/projects/keystone/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER keystone.engine@gmail.com
 RUN apt-get update && apt-get install -y make cmake
 RUN git clone --depth 1 https://github.com/keystone-engine/keystone.git
 WORKDIR $SRC
diff --git a/projects/keystone/project.yaml b/projects/keystone/project.yaml
index 860313b..105389b 100644
--- a/projects/keystone/project.yaml
+++ b/projects/keystone/project.yaml
@@ -1,11 +1,8 @@
 homepage: "https://www.keystone-engine.org"
-language: c++
 primary_contact: "keystone.engine@gmail.com"
-auto_ccs :
-  - "p.antoine@catenacyber.fr"
-  - "stalkr@stalkr.net"
+auto_ccs : "p.antoine@catenacyber.fr"
+
 sanitizers:
-  - address
-  - memory
-  - undefined
-main_repo: 'https://github.com/keystone-engine/keystone.git'
+- address
+- memory
+- undefined
diff --git a/projects/kimageformats/Dockerfile b/projects/kimageformats/Dockerfile
index 4acc31c..8e92b33 100644
--- a/projects/kimageformats/Dockerfile
+++ b/projects/kimageformats/Dockerfile
@@ -15,17 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tsdgeos@gmail.com
 RUN apt-get install --yes cmake
 RUN git clone --depth 1 https://github.com/madler/zlib.git
 RUN git clone --depth 1 https://github.com/nih-at/libzip.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/extra-cmake-modules.git
+RUN git clone --depth 1 git://anongit.kde.org/extra-cmake-modules
 RUN git clone --depth 1 --branch=5.15 git://code.qt.io/qt/qtbase.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/karchive.git
-RUN git clone --depth 1 https://invent.kde.org/frameworks/kimageformats.git
-RUN git clone --depth 1 -b v2.0.2 https://aomedia.googlesource.com/aom
-RUN git clone --depth 1 -b v0.9.0 https://github.com/AOMediaCodec/libavif.git
-RUN git clone --depth 1 https://github.com/strukturag/libde265.git
-RUN git clone --depth 1 https://github.com/strukturag/libheif.git
+RUN git clone --depth 1 git://anongit.kde.org/karchive
+RUN git clone --depth 1 git://anongit.kde.org/kimageformats
 COPY build.sh $SRC
 COPY kimgio_fuzzer.cc $SRC
 WORKDIR kimageformats
diff --git a/projects/kimageformats/build.sh b/projects/kimageformats/build.sh
index 0ffa60b..2928af2 100644
--- a/projects/kimageformats/build.sh
+++ b/projects/kimageformats/build.sh
@@ -1,20 +1,3 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
 cd $SRC
 cd zlib
 ./configure --static
@@ -50,45 +33,8 @@
 make install -j$(nproc)
 
 cd $SRC
-cd aom
-mkdir build.libavif
-cd build.libavif
-extra_libaom_flags='-DAOM_MAX_ALLOCABLE_MEMORY=536870912 -DDO_RANGE_CHECK_CLAMP=1'
-cmake -DBUILD_SHARED_LIBS=0 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCONFIG_PIC=1 -DAOM_TARGET_CPU=generic -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=12288 -DDECODE_WIDTH_LIMIT=12288 -DAOM_EXTRA_C_FLAGS="${extra_libaom_flags}" -DAOM_EXTRA_CXX_FLAGS="${extra_libaom_flags}" ..
-make -j$(nproc)
-make install -j$(nproc)
-
-cd $SRC
-ln -s "$SRC/aom" "$SRC/libavif/ext/"
-cd libavif
-mkdir build
-cd build
-CFLAGS="$CFLAGS -fPIC" cmake -DBUILD_SHARED_LIBS=OFF -DAVIF_ENABLE_WERROR=OFF -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_AOM=ON ..
-make -j$(nproc)
-
-cd $SRC
-cd libde265
-cmake -DBUILD_SHARED_LIBS=OFF -DDISABLE_SSE=ON .
-make -j$(nproc)
-make install -j$(nproc)
-
-cd $SRC
-cd libheif
-#Reduce max width and height to avoid allocating too much memory
-sed -i "s/static const int MAX_IMAGE_WIDTH = 32768;/static const int MAX_IMAGE_WIDTH = 8192;/g" libheif/heif_limits.h
-sed -i "s/static const int MAX_IMAGE_HEIGHT = 32768;/static const int MAX_IMAGE_HEIGHT = 8192;/g" libheif/heif_limits.h
-mkdir build
-cd build
-cmake -DBUILD_SHARED_LIBS=OFF -DWITH_AOM=ON -DWITH_DAV1D=OFF -DWITH_EXAMPLES=OFF -DWITH_LIBDE265=ON -DWITH_RAV1E=OFF -DWITH_X265=OFF ..
-make -j$(nproc)
-make install -j$(nproc)
-
-cd $SRC
 cd kimageformats
-HANDLER_TYPES="ANIHandler ani
-        QAVIFHandler avif
-        HEIFHandler heif
-        KraHandler kra
+HANDLER_TYPES="KraHandler kra
         OraHandler ora
         PCXHandler pcx
         SoftimagePICHandler pic
@@ -102,8 +48,7 @@
 (
   fuzz_target_name=kimgio_${format}_fuzzer
 
-  $SRC/qtbase/bin/moc $SRC/kimageformats/src/imageformats/$format.cpp -o $format.moc
-  $CXX $CXXFLAGS -fPIC -DHANDLER=$class -std=c++14 $SRC/kimgio_fuzzer.cc $SRC/kimageformats/src/imageformats/$format.cpp -o $OUT/$fuzz_target_name -I $SRC/qtbase/include/QtCore/ -I $SRC/qtbase/include/ -I $SRC/qtbase/include//QtGui -I $SRC/kimageformats/src/imageformats/ -I $SRC/karchive/src/ -I $SRC/qtbase/mkspecs/linux-clang-libc++/ -I $SRC/libavif/include/ -I . -L $SRC/qtbase/lib $SRC/libavif/build/libavif.a /usr/local/lib/libheif.a /usr/local/lib/liblibde265.a $SRC/aom/build.libavif/libaom.a -lQt5Gui -lQt5Core -lqtlibpng -lqtharfbuzz -lm -lqtpcre2 -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libzip.a /usr/local/lib/libz.a -lKF5Archive /usr/local/lib/libz.a
+  $CXX $CXXFLAGS -fPIC -DHANDLER=$class -std=c++11 $SRC/kimgio_fuzzer.cc $SRC/kimageformats/src/imageformats/$format.cpp -o $OUT/$fuzz_target_name -I $SRC/qtbase/include/QtCore/ -I $SRC/qtbase/include/ -I $SRC/qtbase/include//QtGui -I $SRC/kimageformats/src/imageformats/ -I $SRC/karchive/src/ -I $SRC/qtbase/mkspecs/linux-clang-libc++/ -L $SRC/qtbase/lib -lQt5Gui -lQt5Core -lqtlibpng -lqtharfbuzz -lm -lqtpcre2 -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libzip.a /usr/local/lib/libz.a -lKF5Archive
 
   find . -name "*.${format}" | zip -q $OUT/${fuzz_target_name}_seed_corpus.zip -@
 )
diff --git a/projects/kimageformats/kimgio_fuzzer.cc b/projects/kimageformats/kimgio_fuzzer.cc
index 5fe9cc6..7a17076 100644
--- a/projects/kimageformats/kimgio_fuzzer.cc
+++ b/projects/kimageformats/kimgio_fuzzer.cc
@@ -20,7 +20,7 @@
   Usage:
     python infra/helper.py build_image kimageformats
     python infra/helper.py build_fuzzers --sanitizer undefined|address|memory kimageformats
-    python infra/helper.py run_fuzzer kimageformats kimgio_[ani|avif|heif|kra|ora|pcx|pic|psd|ras|rgb|tga|xcf]_fuzzer
+    python infra/helper.py run_fuzzer kimageformats kimgio_[kra|ora|pcx|pic|psd|ras|rgb|tga|xcf]_fuzzer
 */
 
 
@@ -28,9 +28,6 @@
 #include <QCoreApplication>
 #include <QImage>
 
-#include "ani_p.h"
-#include "avif_p.h"
-#include "heif_p.h"
 #include "kra.h"
 #include "ora.h"
 #include "pcx_p.h"
diff --git a/projects/kimageformats/project.yaml b/projects/kimageformats/project.yaml
index d2551a8..f064f9f 100644
--- a/projects/kimageformats/project.yaml
+++ b/projects/kimageformats/project.yaml
@@ -1,8 +1,6 @@
 homepage: https://cgit.kde.org/kimageformats.git/
-language: c++
 primary_contact: tsdgeos@gmail.com
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://invent.kde.org/frameworks/kimageformats.git'
diff --git a/projects/knot-dns/Dockerfile b/projects/knot-dns/Dockerfile
index 3c96b70..4977181 100644
--- a/projects/knot-dns/Dockerfile
+++ b/projects/knot-dns/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan.foote@gmail.com
 RUN apt-get update && apt-get install -y \
  autoconf \
  autogen \
@@ -36,7 +37,6 @@
 RUN git clone --depth=1 --recursive https://git.savannah.gnu.org/git/libunistring.git
 RUN git clone --depth=1 https://git.lysator.liu.se/nettle/nettle.git
 RUN git clone --depth=1 https://gitlab.com/gnutls/gnutls.git
-RUN git clone --depth=1 https://github.com/LMDB/lmdb.git
 RUN git clone --depth=1 https://gitlab.labs.nic.cz/knot/knot-dns
 
 WORKDIR knot-dns
diff --git a/projects/knot-dns/build.sh b/projects/knot-dns/build.sh
index e451813..05fe836 100755
--- a/projects/knot-dns/build.sh
+++ b/projects/knot-dns/build.sh
@@ -56,22 +56,20 @@
 make -j$(nproc)
 make install
 
-cd $SRC/lmdb/libraries/liblmdb
-make -j$(nproc)
-make install
 
 # Compile knot, install fuzzers to $OUT
 
 cd $SRC/knot-dns
-sed -i 's/-llmdb/-Wl,-Bstatic,-llmdb,-Bdynamic/' configure.ac
 autoreconf -if
-./configure --with-oss-fuzz=yes --disable-shared --enable-static --disable-daemon --disable-utilities --disable-documentation \
-    --disable-fastparser --disable-modules
+
+./configure --with-oss-fuzz=yes --disable-shared --enable-static --disable-daemon --disable-utilities --disable-documentation --disable-fastparser --disable-modules
+
 make -j$(nproc)
 cd $SRC/knot-dns/tests-fuzz
 make check
 /bin/bash ../libtool   --mode=install /usr/bin/install -c fuzz_packet fuzz_zscanner fuzz_dname_to_str fuzz_dname_from_str "$OUT"
 
+
 # Set up fuzzing seeds
 
 git submodule update --init -- ./fuzz_packet.in
diff --git a/projects/knot-dns/project.yaml b/projects/knot-dns/project.yaml
index fff5830..7d207a7 100644
--- a/projects/knot-dns/project.yaml
+++ b/projects/knot-dns/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.knot-dns.cz/"
-language: c++
 primary_contact: "knot.dns@gmail.com"
 auto_ccs:
   - "jonathan.foote@gmail.com"
diff --git a/projects/kubernetes/Dockerfile b/projects/kubernetes/Dockerfile
index e4ebed8..e0c5afd 100644
--- a/projects/kubernetes/Dockerfile
+++ b/projects/kubernetes/Dockerfile
@@ -1,26 +1,12 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
 FROM gcr.io/oss-fuzz-base/base-builder
 
-RUN go get github.com/ianlancetaylor/demangle
-RUN git clone --depth 1 https://github.com/kubernetes/kubernetes.git
-RUN git clone --depth 1 https://github.com/google/AFL
-RUN git clone --depth 1 https://github.com/dvyukov/go-fuzz-corpus
-RUN git clone --depth 1 https://github.com/kubernetes/kops
-WORKDIR $SRC/
+ENV GOPATH /gopath
 
-COPY build.sh $SRC/
+RUN go get -u -d github.com/dvyukov/go-fuzz/...
+RUN go get github.com/ianlancetaylor/demangle
+
+RUN git clone --depth 1 https://github.com/kubernetes/kubernetes.git /gopath/src/k8s.io/kubernetes
+
+WORKDIR /gopath/src/k8s.io/kubernetes
+
+COPY build.sh $SRC/build.sh
diff --git a/projects/kubernetes/build.sh b/projects/kubernetes/build.sh
index d3d756f..539631b 100755
--- a/projects/kubernetes/build.sh
+++ b/projects/kubernetes/build.sh
@@ -20,21 +20,17 @@
 set -o errexit
 set -x
 
-# Compile kOps fuzzers
-(
-cd kops
-./tests/fuzz/build.sh
-)
-
-# Compile Kubernetes fuzzers
-cd $SRC/kubernetes
-
+# Based on the function from oss-fuzz/projects/golang/build.sh script.
 function compile_fuzzer {
   local pkg=$1
   local function=$2
   local fuzzer="${pkg}_${function}"
 
-  compile_go_fuzzer "k8s.io/kubernetes/test/fuzz/${pkg}" $function $fuzzer
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func "${function}" -o "${fuzzer}.a" "k8s.io/kubernetes/test/fuzz/${pkg}"
+
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE "${fuzzer}.a" -lpthread -o "${OUT}/${fuzzer}"
 }
 
 compile_fuzzer "yaml" "FuzzDurationStrict"
diff --git a/projects/kubernetes/project.yaml b/projects/kubernetes/project.yaml
index 3ebee0c..e834026 100644
--- a/projects/kubernetes/project.yaml
+++ b/projects/kubernetes/project.yaml
@@ -5,4 +5,3 @@
 sanitizers:
   - address
 language: go
-main_repo: 'https://github.com/kubernetes/kubernetes.git'
diff --git a/projects/lame/Dockerfile b/projects/lame/Dockerfile
index 8667b64..565626b 100644
--- a/projects/lame/Dockerfile
+++ b/projects/lame/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool subversion
 RUN git clone --depth 1 https://github.com/guidovranken/LAME-fuzzers
 RUN svn checkout https://svn.code.sf.net/p/lame/svn/trunk/lame $SRC/lame
diff --git a/projects/lame/project.yaml b/projects/lame/project.yaml
index b6bd382..646af59 100644
--- a/projects/lame/project.yaml
+++ b/projects/lame/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://sourceforge.net/projects/lame/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
     - "bouvigne@gmail.com"
diff --git a/projects/lcms/Dockerfile b/projects/lcms/Dockerfile
index ed65328..c720537 100644
--- a/projects/lcms/Dockerfile
+++ b/projects/lcms/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcwu@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/mm2/Little-CMS.git lcms
 WORKDIR lcms
-COPY build.sh cmsIT8_load_fuzzer.* cms_transform_fuzzer.* cms_overwrite_transform_fuzzer.* icc.dict $SRC/
+COPY build.sh cmsIT8_load_fuzzer.* cms_transform_fuzzer.* icc.dict $SRC/
diff --git a/projects/lcms/build.sh b/projects/lcms/build.sh
index 9a79b2c..4015b1b 100755
--- a/projects/lcms/build.sh
+++ b/projects/lcms/build.sh
@@ -20,7 +20,7 @@
 make -j$(nproc) all
 
 # build your fuzzer(s)
-FUZZERS="cmsIT8_load_fuzzer cms_transform_fuzzer cms_overwrite_transform_fuzzer"
+FUZZERS="cmsIT8_load_fuzzer cms_transform_fuzzer"
 for F in $FUZZERS; do
     $CC $CFLAGS -c -Iinclude \
         $SRC/$F.c -o $SRC/$F.o
diff --git a/projects/lcms/cms_overwrite_transform_fuzzer.c b/projects/lcms/cms_overwrite_transform_fuzzer.c
deleted file mode 100644
index df077ee..0000000
--- a/projects/lcms/cms_overwrite_transform_fuzzer.c
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include "lcms2.h"
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
- if (size < 2) {
-   return 0;
- }
-
- size_t mid = size / 2;
-
- cmsHPROFILE hInProfile, hOutProfile;
- cmsHTRANSFORM hTransform;
-
- hInProfile = cmsOpenProfileFromMem(data, mid);
- hOutProfile = cmsOpenProfileFromMem(data + mid, size - mid);
- hTransform = cmsCreateTransform(hInProfile, TYPE_BGR_8, hOutProfile,
-                                 TYPE_BGR_8, INTENT_PERCEPTUAL, 0);
- cmsCloseProfile(hInProfile);
- cmsCloseProfile(hOutProfile);
-
- if (hTransform) {
-   cmsDeleteTransform(hTransform);
- }
- return 0;
-}
diff --git a/projects/lcms/cms_overwrite_transform_fuzzer.options b/projects/lcms/cms_overwrite_transform_fuzzer.options
deleted file mode 100644
index beabdc2..0000000
--- a/projects/lcms/cms_overwrite_transform_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = icc.dict
diff --git a/projects/lcms/project.yaml b/projects/lcms/project.yaml
index a7aeff0..26e06e9 100644
--- a/projects/lcms/project.yaml
+++ b/projects/lcms/project.yaml
@@ -1,16 +1,10 @@
 homepage: "http://www.littlecms.com/"
-language: c++
 primary_contact: "marti.maria.s@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
+  - memory:
+     experimental: True
   - undefined
-  - memory
-  - dataflow
 architectures:
   - x86_64
   - i386
diff --git a/projects/leptonica/Dockerfile b/projects/leptonica/Dockerfile
index cf79bf5..a40efc3 100644
--- a/projects/leptonica/Dockerfile
+++ b/projects/leptonica/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER taking@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool \
   pkg-config cmake nasm
 RUN git clone --depth 1 https://github.com/DanBloomberg/leptonica.git leptonica
@@ -26,4 +27,4 @@
 RUN git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo libjpeg-turbo
 RUN git clone --depth 1 https://github.com/facebook/zstd zstd
 WORKDIR leptonica
-COPY build.sh $SRC/
+COPY build.sh pix_rotate_shear_fuzzer.cc $SRC/
diff --git a/projects/leptonica/build.sh b/projects/leptonica/build.sh
index ee51bdc..991c0cb 100755
--- a/projects/leptonica/build.sh
+++ b/projects/leptonica/build.sh
@@ -15,5 +15,105 @@
 #
 ################################################################################
 
-$SRC/leptonica/prog/fuzzing/oss-fuzz-build.sh
+# libz
+pushd $SRC/zlib
+./configure --static --prefix="$WORK"
+make -j$(nproc) all
+make install
+popd
+
+# libzstd
+pushd $SRC/zstd
+make -j$(nproc) install PREFIX="$WORK"
+popd
+
+# libjbig
+pushd "$SRC/jbigkit"
+make clean
+make -j$(nproc) lib
+cp "$SRC"/jbigkit/libjbig/*.a "$WORK/lib/"
+cp "$SRC"/jbigkit/libjbig/*.h "$WORK/include/"
+popd
+
+# libjpeg-turbo
+pushd $SRC/libjpeg-turbo
+cmake . -DCMAKE_INSTALL_PREFIX="$WORK" -DENABLE_STATIC:bool=on
+make -j$(nproc)
+make install
+popd
+
+# libpng
+pushd $SRC/libpng
+cat scripts/pnglibconf.dfa | \
+  sed -e "s/option WARNING /option WARNING disabled/" \
+> scripts/pnglibconf.dfa.temp
+mv scripts/pnglibconf.dfa.temp scripts/pnglibconf.dfa
+autoreconf -f -i
+./configure \
+  --prefix="$WORK" \
+  --disable-shared \
+  --enable-static \
+  LDFLAGS="-L$WORK/lib" \
+  CPPFLAGS="-I$WORK/include"
+make -j$(nproc)
+make install
+popd
+
+# libwebp
+pushd $SRC/libwebp
+export WEBP_CFLAGS="$CFLAGS -DWEBP_MAX_IMAGE_SIZE=838860800" # 800MiB
+./autogen.sh
+./configure \
+  --enable-libwebpdemux \
+  --enable-libwebpmux \
+  --disable-shared \
+  --disable-jpeg \
+  --disable-tiff \
+  --disable-gif \
+  --disable-wic \
+  --disable-threading \
+  --prefix="$WORK" \
+  CFLAGS="$WEBP_CFLAGS"
+make clean
+make -j$(nproc)
+make install
+popd
+
+# libtiff
+pushd "$SRC/libtiff"
+cmake . -DCMAKE_INSTALL_PREFIX="$WORK" -DBUILD_SHARED_LIBS=off
+make clean
+make -j$(nproc)
+make install
+popd
+
+# leptonica
+export LEPTONICA_LIBS="$WORK/lib/libjbig.a $WORK/lib/libzstd.a $WORK/lib/libwebp.a $WORK/lib/libpng.a"
+./autogen.sh
+./configure \
+  --enable-static \
+  --disable-shared \
+  --with-libpng \
+  --with-zlib \
+  --with-jpeg \
+  --with-libwebp \
+  --with-libtiff \
+  --prefix="$WORK" \
+  LIBS="$LEPTONICA_LIBS" \
+  LDFLAGS="-L$WORK/lib" \
+  CPPFLAGS="-I$WORK/include"
+make -j$(nproc)
+make install
+
+$CXX $CXXFLAGS -std=c++11 -I"$WORK/include" \
+  "$SRC/pix_rotate_shear_fuzzer.cc" -o "$OUT/pix_rotate_shear_fuzzer" \
+  "$WORK/lib/liblept.a" \
+  "$WORK/lib/libtiff.a" \
+  "$WORK/lib/libwebp.a" \
+  "$WORK/lib/libpng.a" \
+  "$WORK/lib/libjpeg.a" \
+  "$WORK/lib/libjbig.a" \
+  "$WORK/lib/libzstd.a" \
+  "$WORK/lib/libz.a" \
+  $LIB_FUZZING_ENGINE
 
diff --git a/projects/leptonica/pix_rotate_shear_fuzzer.cc b/projects/leptonica/pix_rotate_shear_fuzzer.cc
new file mode 100644
index 0000000..4ca2cc9
--- /dev/null
+++ b/projects/leptonica/pix_rotate_shear_fuzzer.cc
@@ -0,0 +1,79 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+// The fuzzer takes as input a buffer of bytes. The buffer is read in as:
+// <angle>, <x_center>, <y_center>, and the remaining bytes will be read
+// in as a <pix>. The image is then rotated by angle around the center. All
+// inputs should not result in undefined behavior.
+#include <cmath>
+#include <cstddef>
+#include <cstdint>
+#include <cstdlib>
+#include <cstring>
+#include "leptonica/allheaders.h"
+
+// Set to true only for debugging; always false for production
+static const bool DebugOutput = false;
+
+namespace {
+
+// Reads the front bytes of a data buffer containing `size` bytes as an int16_t,
+// and advances the buffer forward [if there is sufficient capacity]. If there
+// is insufficient capacity, this returns 0 and does not modify size or data.
+int16_t ReadInt16(const uint8_t** data, size_t* size) {
+  int16_t result = 0;
+  if (*size >= sizeof(result)) {
+    memcpy(&result, *data, sizeof(result));
+    *data += sizeof(result);
+    *size -= sizeof(result);
+  }
+  return result;
+}
+
+}  // namespace
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  const int16_t angle = ReadInt16(&data, &size);
+  const int16_t x_center = ReadInt16(&data, &size);
+  const int16_t y_center = ReadInt16(&data, &size);
+
+  // Check for pnm format; this can cause timeouts.
+  // The format checker requires at least 12 bytes.
+  if (size < 12) return EXIT_SUCCESS;
+  int format;
+  findFileFormatBuffer(data, &format);
+  if (format == IFF_PNM) return EXIT_SUCCESS;
+
+  Pix* pix = pixReadMem(reinterpret_cast<const unsigned char*>(data), size);
+  if (pix == nullptr) {
+    return EXIT_SUCCESS;
+  }
+
+  // Never in production
+  if (DebugOutput) {
+    L_INFO("w = %d, h = %d, d = %d\n", "fuzzer",
+           pixGetWidth(pix), pixGetHeight(pix), pixGetDepth(pix));
+  }
+
+  constexpr float deg2rad = M_PI / 180.;
+  Pix* pix_rotated = pixRotateShear(pix, x_center, y_center, deg2rad * angle,
+                                    L_BRING_IN_WHITE);
+  if (pix_rotated) {
+    pixDestroy(&pix_rotated);
+  }
+
+  pixDestroy(&pix);
+  return EXIT_SUCCESS;
+}
diff --git a/projects/leptonica/project.yaml b/projects/leptonica/project.yaml
index c6176df..d91418d 100644
--- a/projects/leptonica/project.yaml
+++ b/projects/leptonica/project.yaml
@@ -1,13 +1,9 @@
 homepage: "http://www.leptonica.com"
-language: c++
 primary_contact: "taking@google.com"
 auto_ccs:
   - "kusano@google.com"
   - "dbloomberg@google.com"
-  - "dan.bloomberg@gmail.com"
   - "stjoweil@googlemail.com"
-  - "Adam@adalogics.com"
-  - "ballbach@google.com"
 sanitizers:
   - address
   - undefined
@@ -15,4 +11,3 @@
 labels:
   pix_rotate_shear_fuzzer:
     - sundew
-main_repo: 'https://github.com/DanBloomberg/leptonica.git'
diff --git a/projects/leveldb/Dockerfile b/projects/leveldb/Dockerfile
deleted file mode 100644
index 7234203..0000000
--- a/projects/leveldb/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool gettext pkg-config build-essential
-RUN git clone --recurse-submodules https://github.com/google/leveldb.git
-
-WORKDIR $SRC/
-
-# Copy in our files
-COPY build.sh $SRC/
-COPY *.cc $SRC/leveldb/
-COPY *.options $SRC/
diff --git a/projects/leveldb/build.sh b/projects/leveldb/build.sh
deleted file mode 100755
index 7668c04..0000000
--- a/projects/leveldb/build.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-# Copyright 2020 Luca Boccassi <bluca@debian.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/leveldb
-mkdir -p build && cd build
-cmake -DCMAKE_BUILD_TYPE=Release -DLEVELDB_BUILD_TESTS=0 \
-    -DLEVELDB_BUILD_BENCHMARKS=0 .. && cmake --build .
-
-for fuzzer in fuzz_db; do
-    # Compile
-    $CXX $CXXFLAGS -c ../${fuzzer}.cc -o ${fuzzer}.o \
-        -DLEVELDB_PLATFORM_POSIX=1 -std=c++11 -Wall \
-        -I$SRC/leveldb/build/include -I$SRC/leveldb/ -I$SRC/leveldb/include
-
-    # Link
-    $CXX $LIB_FUZZING_ENGINE $CXXFLAGS ${fuzzer}.o -o $OUT/${fuzzer} libleveldb.a
-done
-
-# Copy options to out
-cp $SRC/*options $OUT/
diff --git a/projects/leveldb/fuzz_db.cc b/projects/leveldb/fuzz_db.cc
deleted file mode 100644
index 0147c12..0000000
--- a/projects/leveldb/fuzz_db.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-
-#include <cstdint>
-#include <cstddef>
-#include <filesystem>
-#include <memory>
-#include <string>
-
-#include "leveldb/db.h"
-#include "leveldb/iterator.h"
-#include "leveldb/options.h"
-#include "leveldb/status.h"
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-namespace {
-
-// Deletes the database directory when going out of scope.
-class AutoDbDeleter {
- public:
-  static constexpr char kDbPath[] = "/tmp/testdb";
-
-  AutoDbDeleter() = default;
-
-  AutoDbDeleter(const AutoDbDeleter&) = delete;
-  AutoDbDeleter& operator=(const AutoDbDeleter&) = delete;
-
-  ~AutoDbDeleter() {
-    std::__fs::filesystem::remove_all(kDbPath);
-  }
-};
-
-// static
-constexpr char AutoDbDeleter::kDbPath[];
-
-// Returns nullptr (a falsey unique_ptr) if opening fails.
-std::unique_ptr<leveldb::DB> OpenDB() {
-  leveldb::Options options;
-  options.create_if_missing = true;
-
-  leveldb::DB* db_ptr;
-  leveldb::Status status =
-      leveldb::DB::Open(options, AutoDbDeleter::kDbPath, &db_ptr);
-  if (!status.ok())
-    return nullptr;
-
-  return std::unique_ptr<leveldb::DB>(db_ptr);
-}
-
-enum class FuzzOp {
-  kPut = 0,
-  kGet = 1,
-  kDelete = 2,
-  kGetProperty = 3,
-  kIterate = 4,
-  kGetReleaseSnapshot = 5,
-  kReopenDb = 6,
-  kCompactRange = 7,
-  // Add new values here.
-
-  // When adding new values, update to the last value above.
-  kMaxValue = kCompactRange,
-};
-
-}  // namespace
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  // Must occur before `db` so the deletion doesn't happen while the DB is open.
-  AutoDbDeleter db_deleter;
-
-  std::unique_ptr<leveldb::DB> db = OpenDB();
-  if (!db.get())
-    return 0;
-
-  // Perform a sequence of operations on the database.
-  FuzzedDataProvider fuzzed_data(data, size);
-  while (fuzzed_data.remaining_bytes() != 0) {
-    FuzzOp fuzz_op = fuzzed_data.ConsumeEnum<FuzzOp>();
-
-    switch (fuzz_op) {
-    case FuzzOp::kPut: {
-      std::string key = fuzzed_data.ConsumeRandomLengthString();
-      std::string value = fuzzed_data.ConsumeRandomLengthString();
-      db->Put(leveldb::WriteOptions(), key, value);
-      break;
-    }
-    case FuzzOp::kGet: {
-      std::string key = fuzzed_data.ConsumeRandomLengthString();
-      std::string value;
-      db->Get(leveldb::ReadOptions(), key, &value);
-      break;
-    }
-    case FuzzOp::kDelete: {
-      std::string key = fuzzed_data.ConsumeRandomLengthString();
-      db->Delete(leveldb::WriteOptions(), key);
-      break;
-    }
-    case FuzzOp::kGetProperty: {
-      std::string name = fuzzed_data.ConsumeRandomLengthString();
-      std::string value;
-      db->GetProperty(name, &value);
-      break;
-    }
-    case FuzzOp::kIterate: {
-      std::unique_ptr<leveldb::Iterator> it(
-          db->NewIterator(leveldb::ReadOptions()));
-      for (it->SeekToFirst(); it->Valid(); it->Next())
-        continue;
-    }
-    case FuzzOp::kGetReleaseSnapshot: {
-      leveldb::ReadOptions snapshot_options;
-      snapshot_options.snapshot = db->GetSnapshot();
-      std::unique_ptr<leveldb::Iterator> it(db->NewIterator(snapshot_options));
-      db->ReleaseSnapshot(snapshot_options.snapshot);
-    }
-    case FuzzOp::kReopenDb: {
-      // The database must be closed before attempting to reopen it. Otherwise,
-      // the open will fail due to exclusive locking.
-      db.reset();
-      db = OpenDB();
-      if (!db)
-        return 0;  // Reopening the database failed.
-      break;
-    }
-    case FuzzOp::kCompactRange: {
-      std::string begin_key = fuzzed_data.ConsumeRandomLengthString();
-      std::string end_key =  fuzzed_data.ConsumeRandomLengthString();
-      leveldb::Slice begin_slice(begin_key);
-      leveldb::Slice end_slice(end_key);
-      db->CompactRange(&begin_slice, &end_slice);
-      break;
-    }
-    }
-  }
-
-  return 0;
-}
diff --git a/projects/leveldb/fuzz_db.options b/projects/leveldb/fuzz_db.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/leveldb/fuzz_db.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/leveldb/project.yaml b/projects/leveldb/project.yaml
deleted file mode 100644
index 7eecedc..0000000
--- a/projects/leveldb/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/google/leveldb"
-language: c++
-primary_contact: "costan@google.com"
-auto_ccs :
-  - "cmumford@google.com"
-  - "david@adalogics.com"
-sanitizers:
-  - address
-  - memory
-main_repo: 'https://github.com/google/leveldb.git'
diff --git a/projects/libaom/Dockerfile b/projects/libaom/Dockerfile
index a911f33..0619ac0 100644
--- a/projects/libaom/Dockerfile
+++ b/projects/libaom/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER urvang@google.com
 RUN apt-get update && apt-get install -y cmake yasm wget
 RUN git clone https://aomedia.googlesource.com/aom
 ADD https://storage.googleapis.com/aom-test-data/fuzzer/dec_fuzzer_seed_corpus.zip $SRC/
diff --git a/projects/libaom/project.yaml b/projects/libaom/project.yaml
index dedc304..e4d1be9 100644
--- a/projects/libaom/project.yaml
+++ b/projects/libaom/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://aomedia.org/av1-features/get-started/"
-language: c++
 primary_contact: "urvang@google.com"
 sanitizers:
 - address
@@ -11,5 +10,4 @@
 - jzern@google.com
 - wtc@google.com
 vendor_ccs:
-- twsmith@mozilla.com
-main_repo: 'https://aomedia.googlesource.com/aom'
+- cdiehl@mozilla.com
diff --git a/projects/libarchive/Dockerfile b/projects/libarchive/Dockerfile
index bd07669..b2d9d0b 100644
--- a/projects/libarchive/Dockerfile
+++ b/projects/libarchive/Dockerfile
@@ -15,13 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcwu@google.com
 
 # Installing optional libraries can utilize more code path and/or improve
 # performance (avoid calling external programs).
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config \
         libbz2-dev liblzo2-dev liblzma-dev liblz4-dev libz-dev \
-        libxml2-dev libssl-dev libacl1-dev libattr1-dev lrzip \
-	liblz4-tool lzop zstd lcab genisoimage jlha-utils rar default-jdk
+        libxml2-dev libssl-dev libacl1-dev libattr1-dev
 RUN git clone --depth 1 https://github.com/libarchive/libarchive.git
 WORKDIR libarchive
 COPY build.sh libarchive_fuzzer.cc $SRC/
diff --git a/projects/libarchive/build.sh b/projects/libarchive/build.sh
index 87587a5..0f04f8d 100755
--- a/projects/libarchive/build.sh
+++ b/projects/libarchive/build.sh
@@ -20,10 +20,6 @@
 ./configure
 make -j$(nproc) all
 
-# build seed
-cp $SRC/libarchive/contrib/oss-fuzz/corpus.zip\
-       	$OUT/libarchive_fuzzer_seed_corpus.zip
-
 # build fuzzer(s)
 $CXX $CXXFLAGS -Ilibarchive \
     $SRC/libarchive_fuzzer.cc -o $OUT/libarchive_fuzzer \
diff --git a/projects/libarchive/project.yaml b/projects/libarchive/project.yaml
index 4637988..515af5f 100644
--- a/projects/libarchive/project.yaml
+++ b/projects/libarchive/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/libarchive/libarchive"
-language: c++
 primary_contact: "joerg.sonnenberger@googlemail.com"
 auto_ccs:
   - "kientzle@gmail.com"
@@ -9,4 +8,3 @@
   - memory:
      experimental: True
   - undefined
-main_repo: 'https://github.com/libarchive/libarchive.git'
diff --git a/projects/libass/Dockerfile b/projects/libass/Dockerfile
index b0758ce..bc1999d 100644
--- a/projects/libass/Dockerfile
+++ b/projects/libass/Dockerfile
@@ -15,11 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config libfreetype6-dev libfontconfig1-dev python3-pip && \
-    pip3 install meson==0.53.0 ninja
+MAINTAINER eugeni.stepanov@gmail.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config libfreetype6-dev libfontconfig1-dev
 
 RUN git clone --depth 1 https://github.com/libass/libass.git
 RUN git clone --depth 1 https://github.com/behdad/fribidi.git
-RUN git clone --depth 1 https://github.com/harfbuzz/harfbuzz.git
 
 COPY build.sh libass_fuzzer.cc *.dict *.options $SRC/
diff --git a/projects/libass/build.sh b/projects/libass/build.sh
index 44006e3..cb48701 100755
--- a/projects/libass/build.sh
+++ b/projects/libass/build.sh
@@ -19,24 +19,6 @@
 ./autogen.sh --disable-docs --enable-static=yes --enable-shared=no --with-pic=yes --prefix=/work/
 make install
 
-cd $SRC/harfbuzz
-
-# setup
-build=$WORK/build
-
-# # cleanup
-rm -rf $build
-mkdir -p $build
-
-# disable sanitize=vptr for harfbuzz since it compiles without rtti
-CFLAGS="$CFLAGS -fno-sanitize=vptr" \
-CXXFLAGS="$CXXFLAGS -fno-sanitize=vptr" \
-meson --default-library=static --wrap-mode=nodownload \
-      -Dfuzzer_ldflags="$(echo $LIB_FUZZING_ENGINE)" \
-      --prefix=/work/ --libdir=lib $build \
-  || (cat build/meson-logs/meson-log.txt && false)
-meson install -C $build
-
 cd $SRC/libass
 
 export PKG_CONFIG_PATH=/work/lib/pkgconfig
@@ -47,7 +29,7 @@
 $CXX $CXXFLAGS -std=c++11 -I$SRC/libass -L/work/lib \
     $SRC/libass_fuzzer.cc -o $OUT/libass_fuzzer \
     $LIB_FUZZING_ENGINE libass/.libs/libass.a \
-    -Wl,-Bstatic -lfontconfig  -lfribidi -lfreetype -lharfbuzz -lz -lpng12 \
+    -Wl,-Bstatic -lfontconfig  -lfribidi -lfreetype -lz -lpng12 \
     -lexpat -Wl,-Bdynamic
 
 cp $SRC/*.dict $SRC/*.options $OUT/
diff --git a/projects/libass/project.yaml b/projects/libass/project.yaml
index bfcb93e..e7f63b4 100644
--- a/projects/libass/project.yaml
+++ b/projects/libass/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/libass/libass"
-language: c++
 primary_contact: "greg@kinoho.net"
 auto_ccs:
   - "rodger.combs@gmail.com"
@@ -9,4 +8,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/libass/libass.git'
diff --git a/projects/libavc/Dockerfile b/projects/libavc/Dockerfile
index 9998c24..5d4bf22 100644
--- a/projects/libavc/Dockerfile
+++ b/projects/libavc/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER harish.mahendrakar@ittiam.com
 RUN apt-get update && apt-get install -y wget cmake
 RUN git clone https://android.googlesource.com/platform/external/libavc
 ADD https://storage.googleapis.com/android_media/external/libavc/fuzzer/avc_dec_fuzzer_seed_corpus.zip $SRC/
diff --git a/projects/libavc/project.yaml b/projects/libavc/project.yaml
index 1f5422f..9c51454 100644
--- a/projects/libavc/project.yaml
+++ b/projects/libavc/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://android.googlesource.com/platform/external/libavc/"
-language: c++
 primary_contact: "harish.mahendrakar@ittiam.com"
 sanitizers:
   - address
@@ -14,9 +13,6 @@
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
 architectures:
   - x86_64
   - i386
-main_repo: 'https://android.googlesource.com/platform/external/libavc'
diff --git a/projects/libavif/Dockerfile b/projects/libavif/Dockerfile
index a1f030e..a5e48a9 100644
--- a/projects/libavif/Dockerfile
+++ b/projects/libavif/Dockerfile
@@ -15,19 +15,15 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER joedrago@gmail.com
 
 ADD bionic.list /etc/apt/sources.list.d/bionic.list
 ADD nasm_apt.pin /etc/apt/preferences
 
 RUN apt-get update && \
-    apt-get install --no-install-recommends -y curl python3-pip python3-setuptools python3-wheel cmake git && \
+    apt-get install --no-install-recommends -y curl python3-pip python3-setuptools python3-wheel cmake nasm git && \
     pip3 install meson ninja
 
 RUN git clone --depth 1 https://github.com/AOMediaCodec/libavif.git libavif
 WORKDIR libavif
-
-RUN curl -L https://download.videolan.org/contrib/nasm/nasm-2.14.tar.gz | tar xvz
-RUN cd nasm-2.14 && ./configure && make -j2 && ln -s `pwd`/nasm /usr/bin/nasm && cd ..
-RUN nasm --version
-
-COPY build.sh avif_decode_seed_corpus.zip $SRC/
+COPY build.sh avif_decode_fuzzer.cc avif_decode_seed_corpus.zip $SRC/
diff --git a/projects/libavif/avif_decode_fuzzer.cc b/projects/libavif/avif_decode_fuzzer.cc
new file mode 100644
index 0000000..5747367
--- /dev/null
+++ b/projects/libavif/avif_decode_fuzzer.cc
@@ -0,0 +1,65 @@
+// Copyright 2020 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//###############################################################################
+
+#include "avif/avif.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+  avifROData raw;
+  raw.data = Data;
+  raw.size = Size;
+
+  avifDecoder *decoder = avifDecoderCreate();
+  // avifDecoderSetSource(decoder, AVIF_DECODER_SOURCE_PRIMARY_ITEM);
+  avifResult result = avifDecoderParse(decoder, &raw);
+  if (result == AVIF_RESULT_OK) {
+    // printf("AVIF container reports dimensions: %ux%u (@ %u bpc)\n",
+    //        decoder->containerWidth, decoder->containerHeight,
+    //        decoder->containerDepth);
+    for (int loop = 0; loop < 2; ++loop) {
+      // printf("Image decoded: %s\n", inputFilename);
+      // printf(" * %2.2f seconds, %d images\n", decoder->duration,
+      //        decoder->imageCount);
+      int frameIndex = 0;
+      while (avifDecoderNextImage(decoder) == AVIF_RESULT_OK) {
+        // printf("  * Decoded frame [%d] [pts %2.2f] [duration %2.2f] "
+        //        "[keyframe:%s nearest:%u]: %dx%d\n",
+        //        frameIndex, decoder->imageTiming.pts,
+        //        decoder->imageTiming.duration,
+        //        avifDecoderIsKeyframe(decoder, frameIndex) ? "true" : "false",
+        //        avifDecoderNearestKeyframe(decoder, frameIndex),
+        //        decoder->image->width, decoder->image->height);
+        ++frameIndex;
+      }
+
+      if (loop != 1) {
+        result = avifDecoderReset(decoder);
+        if (result == AVIF_RESULT_OK) {
+          // printf("Decoder reset! Decoding one more time.\n");
+        } else {
+          // printf("ERROR: Failed to reset decode: %s\n",
+          //        avifResultToString(result));
+          break;
+        }
+      }
+    }
+  } else {
+    // printf("ERROR: Failed to decode image: %s\n",
+    // avifResultToString(result));
+  }
+
+  avifDecoderDestroy(decoder);
+  return 0; // Non-zero return values are reserved for future use.
+}
diff --git a/projects/libavif/avif_decode_seed_corpus.zip b/projects/libavif/avif_decode_seed_corpus.zip
index 90c67bb..eb04c20 100644
--- a/projects/libavif/avif_decode_seed_corpus.zip
+++ b/projects/libavif/avif_decode_seed_corpus.zip
Binary files differ
diff --git a/projects/libavif/build.sh b/projects/libavif/build.sh
index 130709f..bf2bf4c 100755
--- a/projects/libavif/build.sh
+++ b/projects/libavif/build.sh
@@ -26,7 +26,7 @@
 
 # build fuzzer
 $CXX $CXXFLAGS -std=c++11 -I../include \
-    ../tests/oss-fuzz/avif_decode_fuzzer.cc -o $OUT/avif_decode_fuzzer \
+    $SRC/avif_decode_fuzzer.cc -o $OUT/avif_decode_fuzzer \
     $LIB_FUZZING_ENGINE libavif.a ../ext/dav1d/build/src/libdav1d.a
 
 # copy seed corpus
diff --git a/projects/libavif/project.yaml b/projects/libavif/project.yaml
index fbb93fc..60816fa 100644
--- a/projects/libavif/project.yaml
+++ b/projects/libavif/project.yaml
@@ -1,6 +1,2 @@
 homepage: "https://github.com/AOMediaCodec/libavif"
-language: c++
 primary_contact: "joedrago@gmail.com"
-auto_ccs:
-  - "wtc@google.com"
-main_repo: 'https://github.com/AOMediaCodec/libavif.git'
diff --git a/projects/libcacard/Dockerfile b/projects/libcacard/Dockerfile
deleted file mode 100644
index 5e280b9..0000000
--- a/projects/libcacard/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y pkg-config libglib2.0-dev gyp libsqlite3-dev mercurial python3-pip
-# Because Ubuntu has really ancient meson out there
-RUN pip3 install meson ninja
-
-RUN git clone --depth 1 --single-branch --branch master https://gitlab.freedesktop.org/spice/libcacard.git libcacard
-RUN git clone --depth 1 https://github.com/nss-dev/nss.git nss
-RUN hg clone https://hg.mozilla.org/projects/nspr
-
-WORKDIR libcacard
-COPY build.sh $SRC/
diff --git a/projects/libcacard/build.sh b/projects/libcacard/build.sh
deleted file mode 100755
index 719502e..0000000
--- a/projects/libcacard/build.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Workaround for fixing AFL++ build, discarded for others.
-# See https://github.com/google/oss-fuzz/issues/4280#issuecomment-773977943
-export AFL_LLVM_INSTRUMENT=CLASSIC,NGRAM-4
-
-# Compile NSS
-mkdir $SRC/nss-nspr
-mv $SRC/nss $SRC/nss-nspr/
-mv $SRC/nspr $SRC/nss-nspr/
-cd $SRC/nss-nspr/
-# We do not need NSS to be built with address sanitizer
-CFLAGS="" CXXFLAGS="" nss/build.sh --static
-
-# Create a package config for NSS
-cp dist/Debug/lib/pkgconfig/{nspr,nss}.pc
-sed -i "s/Debug//g" dist/Debug/lib/pkgconfig/nss.pc
-sed -i "s/\/lib/\/lib\/Debug/g" dist/Debug/lib/pkgconfig/nss.pc
-sed -i "s/include\/nspr/public\/nss/g" dist/Debug/lib/pkgconfig/nss.pc
-sed -i "s/NSPR/NSS/g" dist/Debug/lib/pkgconfig/nss.pc
-sed -i "s/Libs:.*/Libs: -L\${libdir} -lssl -lsmime -lnssdev -lnss_static -lpk11wrap_static -lcryptohi -lcerthi -lcertdb -lnssb -lnssutil -lnsspki -ldl -lm -lsqlite -lsoftokn_static -lfreebl_static -lgcm-aes-x86_c_lib -lhw-acc-crypto-avx -lhw-acc-crypto-avx2 /g" dist/Debug/lib/pkgconfig/nss.pc
-echo "Requires: nspr" >> dist/Debug/lib/pkgconfig/nss.pc
-
-export NSS_NSPR_PATH=$(realpath $SRC/nss-nspr/)
-export PKG_CONFIG_PATH=$NSS_NSPR_PATH/dist/Debug/lib/pkgconfig
-export LD_LIBRARY_PATH=$NSS_NSPR_PATH/dist/Debug/lib
-
-# compile libcacard
-BUILD=$WORK/meson
-rm -rf $BUILD
-mkdir $BUILD
-
-cd $SRC/libcacard
-# Drop the tests as they are not needed and require too much dependencies
-meson $BUILD -Ddefault_library=static -Ddisable_tests=true
-ninja -C $BUILD
-
-# We need nss db to work
-cp -r tests/db $OUT/
-
-echo "XXXXXXXX" > $WORK/testinput
-
-fuzzers=$(find $BUILD/fuzz/ -executable -type f)
-for f in $fuzzers; do
-	fuzzer=$(basename $f)
-	cp $f $OUT/
-	# Check if it runs at least in build image
-	$OUT/$fuzzer $WORK/testinput
-	#zip -j $OUT/${fuzzer}_seed_corpus.zip fuzz/corpora/${fuzzer}/*
-done
-
-rm $WORK/testinput
diff --git a/projects/libcacard/project.yaml b/projects/libcacard/project.yaml
index 534af5c..85874af 100644
--- a/projects/libcacard/project.yaml
+++ b/projects/libcacard/project.yaml
@@ -1,9 +1,9 @@
 homepage: "https://gitlab.freedesktop.org/spice/libcacard"
-language: c
 primary_contact: "jjelen@redhat.com"
 auto_ccs:
  - "jakuje@gmail.com"
 sanitizers:
  - address
+ - memory:
+    experimental: True
  - undefined
-main_repo: 'https://gitlab.freedesktop.org/spice/libcacard.git'
diff --git a/projects/libcbor/Dockerfile b/projects/libcbor/Dockerfile
index 7ac62c5..155d336 100644
--- a/projects/libcbor/Dockerfile
+++ b/projects/libcbor/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alex.gaynor@gmail.com
 RUN apt-get update && apt-get install -y make cmake
 RUN git clone --depth 1 https://github.com/PJK/libcbor
 WORKDIR libcbor
diff --git a/projects/libcbor/project.yaml b/projects/libcbor/project.yaml
index 48bdef9..0ab5d71 100644
--- a/projects/libcbor/project.yaml
+++ b/projects/libcbor/project.yaml
@@ -1,14 +1,8 @@
 homepage: "https://github.com/PJK/libcbor"
-language: c++
 primary_contact: "me@pavelkalvoda.com"
 auto_ccs:
   - alex.gaynor@gmail.com
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
 sanitizers:
   - address
   - undefined
   - memory
-main_repo: 'https://github.com/PJK/libcbor'
diff --git a/projects/libchewing/Dockerfile b/projects/libchewing/Dockerfile
index 4a77e24..b361dac 100644
--- a/projects/libchewing/Dockerfile
+++ b/projects/libchewing/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcwu@csie.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool texinfo
 
 RUN git clone --depth 1 https://github.com/chewing/libchewing.git
diff --git a/projects/libchewing/project.yaml b/projects/libchewing/project.yaml
index 1dd3e6e..8575430 100644
--- a/projects/libchewing/project.yaml
+++ b/projects/libchewing/project.yaml
@@ -1,5 +1,3 @@
 homepage: "http://chewing.im/"
-language: c++
 disabled: true
 view_restrictions: none
-main_repo: 'https://github.com/chewing/libchewing.git'
diff --git a/projects/libcoap/Dockerfile b/projects/libcoap/Dockerfile
index 483ce97..1a63bc5 100644
--- a/projects/libcoap/Dockerfile
+++ b/projects/libcoap/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER bergmann@tzi.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool \
     pkg-config
 RUN git clone --depth 1 https://github.com/obgm/libcoap.git libcoap
diff --git a/projects/libcoap/project.yaml b/projects/libcoap/project.yaml
index e4b5776..6bdfa32 100644
--- a/projects/libcoap/project.yaml
+++ b/projects/libcoap/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://libcoap.net/"
-language: c++
 primary_contact: "bergmann@tzi.org"
 auto_ccs:
     - "libcoap@gmail.com"
-main_repo: 'https://github.com/obgm/libcoap.git'
diff --git a/projects/libevent/Dockerfile b/projects/libevent/Dockerfile
deleted file mode 100644
index 04fdc04..0000000
--- a/projects/libevent/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool cmake
-RUN git clone --depth 1 https://github.com/libevent/libevent.git libevent
-WORKDIR libevent
-COPY build.sh *.cc $SRC/
diff --git a/projects/libevent/build.sh b/projects/libevent/build.sh
deleted file mode 100755
index d6e44b6..0000000
--- a/projects/libevent/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-sh autogen.sh
-./configure --disable-openssl
-make -j$(nproc) clean
-make -j$(nproc) all
-make install
-
-# build fuzzer
-for fuzzers in $(find $SRC -name '*_fuzzer.cc'); do
-  fuzz_basename=$(basename -s .cc $fuzzers)
-  $CXX $CXXFLAGS -std=c++11 -Iinclude \
-      $fuzzers $LIB_FUZZING_ENGINE ./.libs/libevent.a ./.libs/libevent_core.a  \
-      ./.libs/libevent_pthreads.a ./.libs/libevent_extra.a \
-      -o $OUT/$fuzz_basename
-done
diff --git a/projects/libevent/parse_query_fuzzer.cc b/projects/libevent/parse_query_fuzzer.cc
deleted file mode 100644
index 2271b39..0000000
--- a/projects/libevent/parse_query_fuzzer.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string>
-
-#include "libevent/include/event2/http.h"
-#include "libevent/include/event2/keyvalq_struct.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  std::string fuzz_string(reinterpret_cast<const char *>(data), size);
-  struct evkeyvalq headers;
-  if (evhttp_parse_query(fuzz_string.c_str(), &headers) == 0) {
-    evhttp_clear_headers(&headers);
-  }
-  return 0;
-}
diff --git a/projects/libevent/project.yaml b/projects/libevent/project.yaml
deleted file mode 100644
index feb600c..0000000
--- a/projects/libevent/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/libevent/libevent"
-language: c++
-primary_contact: "a3at.mail@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/libevent/libevent.git'
diff --git a/projects/libexif/Dockerfile b/projects/libexif/Dockerfile
index 465fd02..927c71e 100644
--- a/projects/libexif/Dockerfile
+++ b/projects/libexif/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER paul.l.kehrer@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool gettext autopoint
 RUN git clone --depth 1 https://github.com/libexif/libexif
 RUN git clone --depth 1 https://github.com/ianare/exif-samples
 WORKDIR libexif
-COPY exif_loader_fuzzer.cc exif_from_data_fuzzer.cc build.sh $SRC/
+COPY exif_loader_fuzzer.cc build.sh $SRC/
diff --git a/projects/libexif/build.sh b/projects/libexif/build.sh
index 790e511..a533bff 100755
--- a/projects/libexif/build.sh
+++ b/projects/libexif/build.sh
@@ -24,17 +24,7 @@
 mkdir -p exif_corpus
 find exif-samples -type f -name '*.jpg' -exec mv -n {} exif_corpus/ \; -o -name '*.tiff' -exec mv -n {} exif_corpus/ \;
 cp libexif/test/testdata/*.jpg exif_corpus
-zip -r "$WORK/exif_seed_corpus.zip" exif_corpus/
+zip -r "$OUT/exif_loader_fuzzer_seed_corpus.zip" exif_corpus/
 popd
 
-for fuzzer in $(find $SRC/ -name '*_fuzzer.cc'); do
-  fuzzer_basename=$(basename -s .cc $fuzzer)
-  $CXX $CXXFLAGS \
-      -std=c++11 \
-      -I"$WORK/include" \
-      $fuzzer \
-      -o $OUT/$fuzzer_basename \
-      $LIB_FUZZING_ENGINE \
-      "$WORK/lib/libexif.a"
-  cp $WORK/exif_seed_corpus.zip "${OUT}/${fuzzer_basename}_seed_corpus.zip"
-done
+$CXX $CXXFLAGS -std=c++11 -I"$WORK/include" "$SRC/exif_loader_fuzzer.cc" -o $OUT/exif_loader_fuzzer $LIB_FUZZING_ENGINE "$WORK/lib/libexif.a"
diff --git a/projects/libexif/exif_from_data_fuzzer.cc b/projects/libexif/exif_from_data_fuzzer.cc
deleted file mode 100644
index 2289328..0000000
--- a/projects/libexif/exif_from_data_fuzzer.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <libexif/exif-data.h>
-#include <libexif/exif-loader.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-/* Extract all MakerNote tags */
-static void mnote_dump(ExifData *data) {
-    ExifMnoteData *mn = exif_data_get_mnote_data(data);
-    if (mn) {
-        int num = exif_mnote_data_count(mn);
-
-        /* Loop through all MakerNote tags */
-        for (int i=0; i < num; ++i) {
-            char buf[1024];
-            exif_mnote_data_get_value(mn, i, buf, sizeof(buf));
-        }
-    }
-}
-
-static void dump_value(ExifEntry *entry, void *user_data) {
-  char buf[1024];
-  exif_entry_get_value(entry, buf, sizeof(buf));
-}
-
-static void data_func(ExifContent *content, void *user_data) {
-  exif_content_foreach_entry(content, dump_value, NULL);
-}
-
-/* This is like exif_data_dump but without writing to stdout */
-static void data_dump(ExifData *data) {
-  exif_data_foreach_content(data, data_func, NULL);
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  // Parse tags using (ultimately) exif_data_load_data()
-  auto image = exif_data_new_from_data(data, size);
-  if (image) {
-    // Exercise the EXIF tag manipulation code
-    exif_data_get_mnote_data(image);
-    data_dump(image);
-    mnote_dump(image);
-    unsigned char *buf;
-    unsigned int sz;
-    exif_data_save_data(image, &buf, &sz);
-    free(buf);
-    exif_data_fix(image);
-    exif_data_unref(image);
-  }
-
-  return 0;
-}
diff --git a/projects/libexif/exif_loader_fuzzer.cc b/projects/libexif/exif_loader_fuzzer.cc
index 6389820..98365b7 100644
--- a/projects/libexif/exif_loader_fuzzer.cc
+++ b/projects/libexif/exif_loader_fuzzer.cc
@@ -1,17 +1,3 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 #include <stdio.h>
 #include <stdint.h>
 #include <libexif/exif-loader.h>
diff --git a/projects/libexif/project.yaml b/projects/libexif/project.yaml
index 8b55215..72f2d93 100644
--- a/projects/libexif/project.yaml
+++ b/projects/libexif/project.yaml
@@ -1,17 +1,13 @@
 homepage: "https://libexif.github.io"
-language: c++
 primary_contact: "dan@coneharvesters.com"
 auto_ccs:
   - paul.l.kehrer@gmail.com
   - marcus@jet.franken.de
-  - marcusmeissner@googlemail.com
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
   - dataflow
   - memory
-main_repo: 'https://github.com/libexif/libexif'
diff --git a/projects/libfdk-aac/Dockerfile b/projects/libfdk-aac/Dockerfile
index ed0ddca..441bcf9 100644
--- a/projects/libfdk-aac/Dockerfile
+++ b/projects/libfdk-aac/Dockerfile
@@ -15,5 +15,6 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcc@google.com
 RUN git clone --depth 1 https://android.googlesource.com/platform/external/aac/
 COPY build.sh *.cpp $SRC/
diff --git a/projects/libfdk-aac/project.yaml b/projects/libfdk-aac/project.yaml
index 0613f72..9a5777c 100644
--- a/projects/libfdk-aac/project.yaml
+++ b/projects/libfdk-aac/project.yaml
@@ -1,5 +1,4 @@
 homepage: https://android.googlesource.com/platform/external/aac/
-language: c++
 primary_contact: audio-fdk@iis.fraunhofer.de
 auto_ccs:
   - jmtrivi@google.com
@@ -9,18 +8,6 @@
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
 architectures:
   - x86_64
   - i386
diff --git a/projects/libfido2/Dockerfile b/projects/libfido2/Dockerfile
index e7d8a6a..0b6a1c7 100644
--- a/projects/libfido2/Dockerfile
+++ b/projects/libfido2/Dockerfile
@@ -15,13 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER g.kihlman@yubico.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN apt-get install -y cmake libudev-dev pkg-config chrpath
-RUN git clone --branch v0.8.0 https://github.com/PJK/libcbor
+RUN git clone --branch v0.5.0 https://github.com/PJK/libcbor
 RUN git clone --branch OpenSSL_1_1_1-stable https://github.com/openssl/openssl
-RUN git clone --branch v1.2.11 https://github.com/madler/zlib
 RUN git clone https://github.com/Yubico/libfido2
-# CIFuzz will replace the libfido directory so put the corpus outside
-ADD https://storage.googleapis.com/yubico-libfido2/corpus.tgz corpus.tgz
 WORKDIR libfido2
 COPY build.sh $SRC/
diff --git a/projects/libfido2/build.sh b/projects/libfido2/build.sh
index 6c680e2..3f00058 100755
--- a/projects/libfido2/build.sh
+++ b/projects/libfido2/build.sh
@@ -20,8 +20,7 @@
 cd ${SRC}/libcbor
 patch -l -p0 < ${SRC}/libfido2/fuzz/README
 mkdir build && cd build
-cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug \
-      -DCMAKE_INSTALL_PREFIX=${WORK} -DSANITIZE=OFF ..
+cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${WORK} -DSANITIZE=OFF ..
 make -j$(nproc) VERBOSE=1
 make install
 
@@ -37,12 +36,6 @@
 make -j$(nproc) LDCMD="${CXX} ${CXXFLAGS}"
 make install_sw
 
-# Build zlib, taken from oss-fuzz/projects/zlib.sh
-cd ${SRC}/zlib
-./configure --prefix=${WORK}
-make -j$(nproc) all
-make install
-
 # Building libfido2 with ${LIB_FUZZING_ENGINE} and chosen sanitizer
 cd ${SRC}/libfido2
 mkdir build && cd build
@@ -68,12 +61,9 @@
 done
 
  # Prepare seed corpora
-tar xzf ${SRC}/corpus.tgz
-(set -e ; cd fuzz_assert/corpus    ; zip -r ${OUT}/fuzz_assert_seed_corpus.zip .)
-(set -e ; cd fuzz_bio/corpus       ; zip -r ${OUT}/fuzz_bio_seed_corpus.zip .)
-(set -e ; cd fuzz_cred/corpus      ; zip -r ${OUT}/fuzz_cred_seed_corpus.zip .)
-(set -e ; cd fuzz_credman/corpus   ; zip -r ${OUT}/fuzz_credman_seed_corpus.zip .)
-(set -e ; cd fuzz_hid/corpus       ; zip -r ${OUT}/fuzz_hid_seed_corpus.zip .)
-(set -e ; cd fuzz_largeblob/corpus ; zip -r ${OUT}/fuzz_largeblob_seed_corpus.zip .)
-(set -e ; cd fuzz_mgmt/corpus      ; zip -r ${OUT}/fuzz_mgmt_seed_corpus.zip .)
-(set -e ; cd fuzz_netlink/corpus   ; zip -r ${OUT}/fuzz_netlink_seed_corpus.zip .)
+tar xzf ${SRC}/libfido2/fuzz/corpus.tgz
+(set -e ; cd fuzz_assert/corpus  ; zip -r ${OUT}/fuzz_assert_seed_corpus.zip .)
+(set -e ; cd fuzz_bio/corpus     ; zip -r ${OUT}/fuzz_bio_seed_corpus.zip .)
+(set -e ; cd fuzz_cred/corpus    ; zip -r ${OUT}/fuzz_cred_seed_corpus.zip .)
+(set -e ; cd fuzz_credman/corpus ; zip -r ${OUT}/fuzz_credman_seed_corpus.zip .)
+(set -e ; cd fuzz_mgmt/corpus    ; zip -r ${OUT}/fuzz_mgmt_seed_corpus.zip .)
diff --git a/projects/libfido2/project.yaml b/projects/libfido2/project.yaml
index 5a351a0..e3f28c1 100644
--- a/projects/libfido2/project.yaml
+++ b/projects/libfido2/project.yaml
@@ -1,15 +1,12 @@
 homepage: https://github.com/Yubico/libfido2
-language: c++
-primary_contact: "kostas@yubico.com"
+primary_contact: "g.kihlman@yubico.com"
 auto_ccs:
     - "pedro@ambientworks.net"
     - "marissa.nishimoto@yubico.com"
     - "pedro.ossfuzz@gmail.com"
-    - "ludvig.michaelsson@yubico.com"
 sanitizers:
     - address
     - undefined
     - memory
 fuzzing_engines:
     - libfuzzer
-main_repo: 'https://github.com/Yubico/libfido2'
diff --git a/projects/libfmt/Dockerfile b/projects/libfmt/Dockerfile
new file mode 100644
index 0000000..3249bb0
--- /dev/null
+++ b/projects/libfmt/Dockerfile
@@ -0,0 +1,27 @@
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pauldreikossfuzz@gmail.com
+RUN echo "CXX=$CXX"
+RUN echo "CXXFLAGS=$CXXFLAGS"
+RUN apt-get update && apt-get install -y cmake ninja-build
+
+RUN git clone --depth 1 --branch master \
+  https://github.com/fmtlib/fmt.git
+
+WORKDIR fmt
+COPY build.sh $SRC/
diff --git a/projects/libfmt/build.sh b/projects/libfmt/build.sh
new file mode 100755
index 0000000..8d38ff7
--- /dev/null
+++ b/projects/libfmt/build.sh
@@ -0,0 +1,42 @@
+#!/bin/bash -eu
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+#create zip files with initial corpus, taken from version control.
+#for f in $(ls fuzzers/initial_corpus/) ;do
+#  zip -j -r $OUT/fuzzer_${f}_seed_corpus.zip fuzzers/initial_corpus/$f
+#done
+
+mkdir build
+cd build
+
+# use C++ 14 instead of 17, because even if clang is
+# bleeding edge, cmake is old in the oss fuzz image.
+
+cmake .. \
+-GNinja \
+-DCMAKE_BUILD_TYPE=Debug \
+-DCMAKE_CXX_STANDARD=14 \
+-DFMT_DOC=Off \
+-DFMT_TEST=Off \
+-DFMT_SAFE_DURATION_CAST=On \
+-DFMT_FUZZ=On \
+-DFMT_FUZZ_LINKMAIN=Off \
+-DFMT_FUZZ_LDFLAGS=$LIB_FUZZING_ENGINE
+
+cmake --build .
+
+cp bin/fuzzer_* $OUT
diff --git a/projects/libfmt/project.yaml b/projects/libfmt/project.yaml
new file mode 100644
index 0000000..a851089
--- /dev/null
+++ b/projects/libfmt/project.yaml
@@ -0,0 +1,4 @@
+homepage: "https://github.com/fmtlib/fmt"
+primary_contact: "pauldreikossfuzz@gmail.com"
+auto_ccs:
+ - "victor.zverovich@gmail.com"
diff --git a/projects/libgd/Dockerfile b/projects/libgd/Dockerfile
index 0ff48b0..0718205 100644
--- a/projects/libgd/Dockerfile
+++ b/projects/libgd/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER ossfuzz@tds.xyz
 RUN apt-get update && \
     apt-get install -y make autoconf automake libtool pkg-config libz-dev
 RUN git clone --depth 1 https://github.com/libgd/libgd
-ADD https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz $SRC/afl_testcases.tgz
+ADD http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz $SRC/afl_testcases.tgz
 WORKDIR libgd
-COPY build.sh *.cc $SRC/
+COPY build.sh parser_target.cc $SRC/
diff --git a/projects/libgd/build.sh b/projects/libgd/build.sh
index 4aabb06..c49d21b 100755
--- a/projects/libgd/build.sh
+++ b/projects/libgd/build.sh
@@ -32,13 +32,6 @@
       $LIB_FUZZING_ENGINE -lgd -Wl,-Bstatic -lz -Wl,-Bdynamic
 done
 
-for fuzzers in $(find $SRC -name '*_fuzzer.cc'); do
-      fuzz_basename=$(basename -s .cc $fuzzers)
-      $CXX $CXXFLAGS -std=c++11 -I"$WORK/include" -L"$WORK/lib" \
-      $fuzzers -o $OUT/$fuzz_basename \
-      $LIB_FUZZING_ENGINE -lgd -Wl,-Bstatic -lz -Wl,-Bdynamic
-done
-
 mkdir afl_testcases
 (cd afl_testcases; tar xvf "$SRC/afl_testcases.tgz")
 for format in bmp gif png webp; do
diff --git a/projects/libgd/gd_image_string_fuzzer.cc b/projects/libgd/gd_image_string_fuzzer.cc
deleted file mode 100644
index f3435cc..0000000
--- a/projects/libgd/gd_image_string_fuzzer.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include <cstddef>
-#include <cstdint>
-#include <cstdlib>
-#include <string>
-
-#include "gd.h"
-#include "gdfontg.h"
-#include "gdfontl.h"
-#include "gdfontmb.h"
-#include "gdfonts.h"
-#include "gdfontt.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-    FuzzedDataProvider stream(data, size);
-    const uint8_t slate_width = stream.ConsumeIntegral<uint8_t>();
-    const uint8_t slate_height = stream.ConsumeIntegral<uint8_t>();
-    gdImagePtr slate_image = gdImageCreateTrueColor(slate_width, slate_height);
-    if (slate_image == nullptr) {
-      return 0;
-    }
-
-    const int x_position = stream.ConsumeIntegral<int>();
-    const int y_position = stream.ConsumeIntegral<int>();
-    const int text_color = stream.ConsumeIntegral<int>();
-    const gdFontPtr font_ptr = stream.PickValueInArray(
-        {gdFontGetGiant(), gdFontGetLarge(), gdFontGetMediumBold(),
-        gdFontGetSmall(), gdFontGetTiny()});
-    const std::string text = stream.ConsumeRemainingBytesAsString();
-
-    gdImageString(slate_image, font_ptr, x_position, y_position,
-                  reinterpret_cast<uint8_t*>(const_cast<char*>(text.c_str())),
-                  text_color);
-    gdImageDestroy(slate_image);
-    return 0;
-}
diff --git a/projects/libgd/project.yaml b/projects/libgd/project.yaml
index 66dc69c..11c766e 100644
--- a/projects/libgd/project.yaml
+++ b/projects/libgd/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://libgd.org"
-language: c++
 primary_contact: "security@libgd.org"
 auto_ccs:
   - vapier@gmail.com
   - tim@tim-smith.us
   - cmbecker69@gmx.de
-main_repo: 'https://github.com/libgd/libgd'
diff --git a/projects/libgit2/Dockerfile b/projects/libgit2/Dockerfile
index 7f5a6c7..eb75510 100644
--- a/projects/libgit2/Dockerfile
+++ b/projects/libgit2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER Nelson Elhage <nelhage@nelhage.com>
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake
 RUN git clone --depth 1 https://github.com/libgit2/libgit2 libgit2
 WORKDIR libgit2
diff --git a/projects/libgit2/project.yaml b/projects/libgit2/project.yaml
index 31de00e..7bc2cb1 100644
--- a/projects/libgit2/project.yaml
+++ b/projects/libgit2/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://libgit2.github.com/"
-language: c++
 primary_contact: "ps@pks.im"
 auto_ccs:
   - "nelhage@nelhage.com"
-main_repo: 'https://github.com/libgit2/libgit2'
diff --git a/projects/libheif/Dockerfile b/projects/libheif/Dockerfile
index 3c1a0d0..a89584d 100644
--- a/projects/libheif/Dockerfile
+++ b/projects/libheif/Dockerfile
@@ -16,6 +16,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER mail@joachim-bauch.de
 
 RUN apt-get update && apt-get install -y \
     autoconf \
@@ -42,12 +43,6 @@
 RUN git clone \
     --depth 1 \
     --branch master \
-    https://aomedia.googlesource.com/aom \
-    aom
-
-RUN git clone \
-    --depth 1 \
-    --branch master \
     https://github.com/strukturag/libheif.git \
     libheif
 
diff --git a/projects/libheif/build.sh b/projects/libheif/build.sh
index 70618a2..d2aed39 100755
--- a/projects/libheif/build.sh
+++ b/projects/libheif/build.sh
@@ -45,24 +45,6 @@
 make -j$(nproc)
 make install
 
-mkdir -p $SRC/aom/build/linux
-cd $SRC/aom/build/linux
-cmake -G "Unix Makefiles" \
-  -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \
-  -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-  -DCMAKE_INSTALL_PREFIX="$DEPS_PATH" \
-  -DENABLE_SHARED:bool=off -DCONFIG_PIC=1 \
-  -DENABLE_EXAMPLES=0 -DENABLE_DOCS=0 -DENABLE_TESTS=0 \
-  -DCONFIG_SIZE_LIMIT=1 \
-  -DDECODE_HEIGHT_LIMIT=12288 -DDECODE_WIDTH_LIMIT=12288 \
-  -DDO_RANGE_CHECK_CLAMP=1 \
-  -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
-  -DAOM_TARGET_CPU=generic \
-  ../../
-make clean
-make -j$(nproc)
-make install
-
 # Remove shared libraries to avoid accidental linking against them.
 rm -f $DEPS_PATH/lib/*.so
 rm -f $DEPS_PATH/lib/*.so.*
diff --git a/projects/libheif/project.yaml b/projects/libheif/project.yaml
index f42cf60..b3ea452 100644
--- a/projects/libheif/project.yaml
+++ b/projects/libheif/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://github.com/strukturag/libheif"
-language: c++
 primary_contact: "dirk.farin@gmail.com"
 auto_ccs:
   - "mail@joachim-bauch.de"
 architectures:
   - i386
   - x86_64
-main_repo: 'https://github.com/strukturag/libheif.git'
diff --git a/projects/libhevc/Dockerfile b/projects/libhevc/Dockerfile
index d483313..ca83129 100644
--- a/projects/libhevc/Dockerfile
+++ b/projects/libhevc/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER harish.mahendrakar@ittiam.com
 RUN apt-get update && apt-get install -y wget cmake
 RUN git clone https://android.googlesource.com/platform/external/libhevc
 ADD https://storage.googleapis.com/android_media/external/libhevc/fuzzer/hevc_dec_fuzzer_seed_corpus.zip $SRC/
diff --git a/projects/libhevc/project.yaml b/projects/libhevc/project.yaml
index 5d84b08..7440484 100644
--- a/projects/libhevc/project.yaml
+++ b/projects/libhevc/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://android.googlesource.com/platform/external/libhevc/"
-language: c++
 primary_contact: "harish.mahendrakar@ittiam.com"
 sanitizers:
   - address
@@ -14,9 +13,6 @@
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
 architectures:
   - x86_64
   - i386
-main_repo: 'https://android.googlesource.com/platform/external/libhevc'
diff --git a/projects/libhtp/Dockerfile b/projects/libhtp/Dockerfile
index cb44a8f..3eec92c 100644
--- a/projects/libhtp/Dockerfile
+++ b/projects/libhtp/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER victor@inliniac.net
 RUN apt-get update && apt-get install -y make autoconf automake libtool zlib1g-dev liblzma-dev
 RUN git clone --depth 1 https://github.com/OISF/libhtp.git libhtp
 WORKDIR $SRC
diff --git a/projects/libhtp/project.yaml b/projects/libhtp/project.yaml
index 3b861d5..cd887d1 100644
--- a/projects/libhtp/project.yaml
+++ b/projects/libhtp/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/OISF/libhtp"
-language: c++
 primary_contact: "vjulien@openinfosecfoundation.org"
 auto_ccs :
 - "p.antoine@catenacyber.fr"
@@ -9,4 +8,3 @@
 - address
 - memory
 - undefined
-main_repo: 'https://github.com/OISF/libhtp.git'
diff --git a/projects/libical/Dockerfile b/projects/libical/Dockerfile
index 7402d6d..9679108 100644
--- a/projects/libical/Dockerfile
+++ b/projects/libical/Dockerfile
@@ -15,6 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tsdgeos@gmail.com
+RUN apt-get update && apt-get install --yes cmake
+
+# libical requires cmake 3.11 whereas Ubuntu 16.04 only has 3.5.1
+ADD https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-Linux-x86_64.tar.gz $WORK
+RUN cd $WORK && tar -xzf cmake-3.14.3-Linux-x86_64.tar.gz && rm cmake-3.14.3-Linux-x86_64.tar.gz
 
 RUN git clone --depth 1 https://github.com/libical/libical.git
 COPY build.sh $SRC
diff --git a/projects/libical/build.sh b/projects/libical/build.sh
index 830a55b..9af1325 100644
--- a/projects/libical/build.sh
+++ b/projects/libical/build.sh
@@ -1,4 +1,4 @@
-cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False
+$WORK/cmake-3.14.3-Linux-x86_64/bin/cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False
 make install -j$(nproc)
 
 $CXX $CXXFLAGS -std=c++11 $SRC/libical_fuzzer.cc $LIB_FUZZING_ENGINE /usr/local/lib/libical.a -o $OUT/libical_fuzzer
diff --git a/projects/libical/project.yaml b/projects/libical/project.yaml
index a5e194d..7462020 100644
--- a/projects/libical/project.yaml
+++ b/projects/libical/project.yaml
@@ -1,5 +1,4 @@
 homepage: https://github.com/libical/libical
-language: c++
 primary_contact: tsdgeos@gmail.com
 auto_ccs:
   - allen.d.winter@gmail.com
@@ -8,4 +7,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/libical/libical.git'
diff --git a/projects/libidn/Dockerfile b/projects/libidn/Dockerfile
index 3bb5413..70ccdd6 100644
--- a/projects/libidn/Dockerfile
+++ b/projects/libidn/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rockdaboot@gmail.com
 RUN apt-get update && apt-get install -y \
  pkg-config \
  autopoint \
diff --git a/projects/libidn/project.yaml b/projects/libidn/project.yaml
index 6cd7293..fab0882 100644
--- a/projects/libidn/project.yaml
+++ b/projects/libidn/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://www.gnu.org/software/libidn/"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
   - "tim.ruehsen@gmx.de"
   - "simon@josefsson.org"
-main_repo: 'https://git.savannah.gnu.org/git/libidn.git'
diff --git a/projects/libidn2/Dockerfile b/projects/libidn2/Dockerfile
index a832bd4..193fc16 100644
--- a/projects/libidn2/Dockerfile
+++ b/projects/libidn2/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake gettext libtool autopoint pkg-config gengetopt curl gperf rsync wget
+MAINTAINER rockdaboot@gmail.com
+RUN apt-get update && apt-get install -y make autoconf automake gettext libtool autopoint pkg-config gengetopt curl gperf
 
 RUN git clone --depth=1 --recursive https://gitlab.com/libidn/libidn2.git
 
diff --git a/projects/libidn2/project.yaml b/projects/libidn2/project.yaml
index c8c117f..58750ed 100644
--- a/projects/libidn2/project.yaml
+++ b/projects/libidn2/project.yaml
@@ -1,17 +1,9 @@
 homepage: "https://gitlab.com/libidn/libidn2"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
   - "n.mavrogiannopoulos@gmail.com"
   - "simon@josefsson.org"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://gitlab.com/libidn/libidn2.git'
+  - undefined
diff --git a/projects/libiec61850/Dockerfile b/projects/libiec61850/Dockerfile
deleted file mode 100755
index 17b63d3..0000000
--- a/projects/libiec61850/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/mz-automation/libiec61850
-
-WORKDIR $SRC
-COPY build.sh $SRC/
-COPY fuzz_decode.options $SRC/fuzz_decode.options
diff --git a/projects/libiec61850/build.sh b/projects/libiec61850/build.sh
deleted file mode 100755
index 8487973..0000000
--- a/projects/libiec61850/build.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd libiec61850
-mkdir build && cd build
-cmake ../
-make
-
-$CC $CFLAGS $LIB_FUZZING_ENGINE ../fuzz/fuzz_mms_decode.c -o $OUT/fuzz_mms_decode ./src/libiec61850.a \
-	-I../src/iec61850/inc -I../src/mms/inc -I../src/common/inc \
-	-I../hal/inc -I../src/logging ./hal/libhal.a
-
-# Copy over the options file
-cp $SRC/fuzz_decode.options $OUT/fuzz_decode.options
diff --git a/projects/libiec61850/fuzz_decode.options b/projects/libiec61850/fuzz_decode.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/libiec61850/fuzz_decode.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/libiec61850/project.yaml b/projects/libiec61850/project.yaml
deleted file mode 100755
index fe265be..0000000
--- a/projects/libiec61850/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/mz-automation/libiec61850"
-primary_contact: "support@mz-automation.de"
-auto_ccs:
-  - "david@adalogics.com"
-language: c
-main_repo: 'https://github.com/mz-automation/libiec61850'
diff --git a/projects/libjpeg-turbo/Dockerfile b/projects/libjpeg-turbo/Dockerfile
index 40c8f49..91ecf3e 100644
--- a/projects/libjpeg-turbo/Dockerfile
+++ b/projects/libjpeg-turbo/Dockerfile
@@ -15,11 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool yasm curl cmake
+MAINTAINER alex.gaynor@gmail.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool nasm curl cmake
 RUN git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo
 
 RUN mkdir afl-testcases
-RUN cd afl-testcases/ && curl https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar -xz
+RUN cd afl-testcases/ && curl http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar -xz
 RUN zip libjpeg_turbo_fuzzer_seed_corpus.zip afl-testcases/jpeg/full/images/* afl-testcases/jpeg_turbo/full/images/* $SRC/libjpeg-turbo/testimages/*
 
 WORKDIR libjpeg-turbo
diff --git a/projects/libjpeg-turbo/project.yaml b/projects/libjpeg-turbo/project.yaml
index 4ed2d55..b77303b 100644
--- a/projects/libjpeg-turbo/project.yaml
+++ b/projects/libjpeg-turbo/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://github.com/libjpeg-turbo/libjpeg-turbo"
-language: c++
-primary_contact: "drc@virtualgl.org"
 vendor_ccs:
   - "aosmond@mozilla.com"
   - "tnikkel@mozilla.com"
@@ -12,4 +10,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/libjpeg-turbo/libjpeg-turbo'
diff --git a/projects/libldac/Dockerfile b/projects/libldac/Dockerfile
index 9aad216..d5c2a65 100644
--- a/projects/libldac/Dockerfile
+++ b/projects/libldac/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cdiehl@mozilla.com
 
 RUN apt-get update && apt-get install -y automake libtool
 RUN git clone --depth 1 -b master https://android.googlesource.com/platform/external/libldac
diff --git a/projects/libldac/project.yaml b/projects/libldac/project.yaml
index 189adf0..d9595cf 100644
--- a/projects/libldac/project.yaml
+++ b/projects/libldac/project.yaml
@@ -1,22 +1,12 @@
 homepage: "https://android.googlesource.com/platform/external/libldac"
-language: c++
 primary_contact: "Chisato.Kenmochi@sony.com"
 auto_ccs:
-  - twsmith@mozilla.com
+  - cdiehl@mozilla.com
 vendor_ccs:
   - bcreasey@google.com
   - hamzeh@google.com
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - dataflow
-main_repo: 'https://android.googlesource.com/platform/external/libldac'
diff --git a/projects/liblouis/Dockerfile b/projects/liblouis/Dockerfile
deleted file mode 100644
index 40a17c0..0000000
--- a/projects/liblouis/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-  pkg-config zlib1g-dev pciutils-dev libpci-dev
-RUN git clone --depth 1 https://github.com/liblouis/liblouis
-WORKDIR liblouis
-COPY build.sh $SRC/
diff --git a/projects/liblouis/build.sh b/projects/liblouis/build.sh
deleted file mode 100755
index fda807c..0000000
--- a/projects/liblouis/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-$SRC/liblouis/tests/fuzzing/build.sh
diff --git a/projects/liblouis/project.yaml b/projects/liblouis/project.yaml
deleted file mode 100644
index e7aa041..0000000
--- a/projects/liblouis/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/liblouis/liblouis"
-main_repo: "https://github.com/liblouis/liblouis"
-language: c
-primary_contact: "christian.egli@sbs.ch"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
diff --git a/projects/libmpeg2/Dockerfile b/projects/libmpeg2/Dockerfile
index 9d823a1..849e9ab 100644
--- a/projects/libmpeg2/Dockerfile
+++ b/projects/libmpeg2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER harish.mahendrakar@ittiam.com
 RUN apt-get update && apt-get install -y wget cmake
 RUN git clone https://android.googlesource.com/platform/external/libmpeg2
 ADD https://storage.googleapis.com/android_media/external/libmpeg2/fuzzer/mpeg2_dec_fuzzer_seed_corpus.zip $SRC/
diff --git a/projects/libmpeg2/project.yaml b/projects/libmpeg2/project.yaml
index a3ec5d4..d304995 100644
--- a/projects/libmpeg2/project.yaml
+++ b/projects/libmpeg2/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://android.googlesource.com/platform/external/libmpeg2/"
-language: c++
 primary_contact: "harish.mahendrakar@ittiam.com"
 sanitizers:
   - address
@@ -14,9 +13,6 @@
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
 architectures:
   - x86_64
   - i386
-main_repo: 'https://android.googlesource.com/platform/external/libmpeg2'
diff --git a/projects/libpcap/Dockerfile b/projects/libpcap/Dockerfile
index fcd2b30..f7acf86 100644
--- a/projects/libpcap/Dockerfile
+++ b/projects/libpcap/Dockerfile
@@ -15,10 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER security@tcpdump.org
 RUN apt-get update && apt-get install -y make cmake flex bison
 RUN git clone --depth 1 https://github.com/the-tcpdump-group/libpcap.git libpcap
 # for corpus as wireshark
 RUN git clone --depth=1 https://github.com/the-tcpdump-group/tcpdump.git tcpdump
 WORKDIR $SRC
 COPY build.sh $SRC/
+COPY patch.diff $SRC/
 
diff --git a/projects/libpcap/build.sh b/projects/libpcap/build.sh
index 75463b3..e44f8b8 100755
--- a/projects/libpcap/build.sh
+++ b/projects/libpcap/build.sh
@@ -17,6 +17,7 @@
 
 cd libpcap
 # build project
+git apply ../patch.diff
 mkdir build
 cd build
 cmake ..
diff --git a/projects/libpcap/patch.diff b/projects/libpcap/patch.diff
new file mode 100644
index 0000000..c76b339
--- /dev/null
+++ b/projects/libpcap/patch.diff
@@ -0,0 +1,24 @@
+diff --git a/optimize.c b/optimize.c
+index 4afd063f..90e8c571 100644
+--- a/optimize.c
++++ b/optimize.c
+@@ -1888,7 +1888,7 @@ opt_root(struct block **b)
+ static void
+ opt_loop(opt_state_t *opt_state, struct icode *ic, int do_stmts)
+ {
+-
++	int loopCounter = 0;
+ #ifdef BDEBUG
+ 	if (pcap_optimizer_debug > 1 || pcap_print_dot_graph) {
+ 		printf("opt_loop(root, %d) begin\n", do_stmts);
+@@ -1909,6 +1909,10 @@ opt_loop(opt_state_t *opt_state, struct icode *ic, int do_stmts)
+ 			opt_dump(opt_state, ic);
+ 		}
+ #endif
++		loopCounter++;
++		if (loopCounter > 1000) {
++			break;
++		}
+ 	} while (!opt_state->done);
+ }
+ 
diff --git a/projects/libpcap/project.yaml b/projects/libpcap/project.yaml
index d9c1e43..c7af8df 100644
--- a/projects/libpcap/project.yaml
+++ b/projects/libpcap/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.tcpdump.org"
-language: c++
 primary_contact: "security@tcpdump.org"
 auto_ccs :
   - "p.antoine@catenacyber.fr"
@@ -15,4 +14,3 @@
   - memory
   - undefined
   - dataflow
-main_repo: 'https://github.com/the-tcpdump-group/libpcap.git'
diff --git a/projects/libphonenumber/Dockerfile b/projects/libphonenumber/Dockerfile
deleted file mode 100644
index c75d78c..0000000
--- a/projects/libphonenumber/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf automake libtool g++ cmake-curses-gui libgtest-dev libre2-dev libicu-dev libboost-dev libboost-thread-dev libboost-system-dev binutils ninja-build liblzma-dev libz-dev pkg-config wget openjdk-8-jdk
-
-WORKDIR $SRC/
-RUN git clone https://github.com/google/libphonenumber
-
-RUN wget https://github.com/unicode-org/icu/releases/download/release-55-2/icu4c-55_2-src.tgz && tar xzvf icu4c-55_2-src.tgz
-
-COPY build.sh $SRC/
-COPY phonefuzz.cc $SRC/
diff --git a/projects/libphonenumber/build.sh b/projects/libphonenumber/build.sh
deleted file mode 100755
index ec67ec6..0000000
--- a/projects/libphonenumber/build.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# For coverage build we need to remove some flags when building protobuf and icu
-if [ "$SANITIZER" = "coverage" ]
-then
-    export OCX=$CXXFLAGS
-    export OC=$CFLAGS
-    CF1=${CFLAGS//-fprofile-instr-generate/}
-    export CFLAGS=${CF1//-fcoverage-mapping/}
-    CXF1=${CXXFLAGS//-fprofile-instr-generate/}
-    export CXXFLAGS=${CXF1//-fcoverage-mapping/}
-fi
-
-# Build Protobuf
-git clone https://github.com/google/protobuf.git
-cd protobuf
-git submodule update --init --recursive
-./autogen.sh
-./configure
-make -j$(nproc)
-make install
-ldconfig
-
-
-# Build icu
-export DEPS_PATH=/src/deps/
-mkdir $DEPS_PATH
-
-# build ICU for linking statically.
-cd $SRC/icu/source
-./configure --disable-shared --enable-static --disable-layoutex \
-  --disable-tests --disable-samples --with-data-packaging=static --prefix=$DEPS_PATH
-make install -j$(nproc)
-
-# Ugly ugly hack to get static linking to work for icu.
-cd $DEPS_PATH/lib
-ls *.a | xargs -n1 ar x
-rm *.a
-ar r libicu.a *.{ao,o}
-ln -s libicu.a libicudata.a
-ln -s libicu.a libicuuc.a
-ln -s libicu.a libicui18n.a
-
-if [ "$SANITIZER" = "coverage" ]
-then
-    export CFLAGS=$OC
-    export CXXFLAGS=$OCX
-fi
-
-# Build libphonenumber
-cd $SRC/libphonenumber/cpp
-sed -i 's/set (BUILD_SHARED_LIB true)/set (BUILD_SHARED_LIB false)/g' CMakeLists.txt
-sed -i 's/list (APPEND CMAKE_C_FLAGS "-pthread")/string (APPEND CMAKE_C_FLAGS " -pthread")/g' CMakeLists.txt
-
-mkdir build && cd build
-cmake -DUSE_BOOST=OFF -DBUILD_GEOCODER=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-      -DICU_UC_INCLUDE_DIR=$SRC/icu/source/comon \
-      -DICU_UC_LIB=$DEPS_PATH/lib/libicuuc.a \
-      -DICU_I18N_INCLUDE_DIR=$SRC/icu/source/i18n/ \
-      -DICU_I18N_LIB=$DEPS_PATH/lib/libicui18n.a  ../
-make
-cd ../
-
-# Build our fuzzer
-cp $SRC/*fuzz.cc .
-$CXX -I/src/libphonenumber/cpp/src $CXXFLAGS -o phonefuzz.o -c phonefuzz.cc
-
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE phonefuzz.o -o phonefuzz \
-     build/libphonenumber.a $SRC/protobuf/src/.libs/libprotobuf.a \
-     $DEPS_PATH/lib/libicu.a -lpthread
-
-cp phonefuzz $OUT/
diff --git a/projects/libphonenumber/phonefuzz.cc b/projects/libphonenumber/phonefuzz.cc
deleted file mode 100644
index 4270f13..0000000
--- a/projects/libphonenumber/phonefuzz.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-#include "phonenumbers/phonenumbermatcher.h"
-#include <string>
-#include <vector>
-
-#include <unicode/unistr.h>
-
-#include "phonenumbers/base/basictypes.h"
-#include "phonenumbers/base/memory/scoped_ptr.h"
-#include "phonenumbers/base/memory/singleton.h"
-#include "phonenumbers/default_logger.h"
-#include "phonenumbers/phonenumber.h"
-#include "phonenumbers/phonenumber.pb.h"
-#include "phonenumbers/phonenumbermatch.h"
-#include "phonenumbers/phonenumberutil.h"
-#include "phonenumbers/stringutil.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    if (size < 75)
-        return 0;
-
-    std::string input(reinterpret_cast<const char*>(data), 60);
-    data += 60;
-    size -= 60;
-    std::string input2(reinterpret_cast<const char*>(data), size);
-
-    i18n::phonenumbers::PhoneNumberUtil *phone_util = i18n::phonenumbers::PhoneNumberUtil::GetInstance();
-    i18n::phonenumbers::PhoneNumber parsed;
-    phone_util->Parse(input, input2, &parsed);
-    phone_util->IsValidNumber(parsed);
-    phone_util->GetCountryCodeForRegion(input);
-
-    return 0;
-}
diff --git a/projects/libphonenumber/project.yaml b/projects/libphonenumber/project.yaml
deleted file mode 100644
index 4ab9602..0000000
--- a/projects/libphonenumber/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://github.com/google/libphonenumber/"
-primary_contact: "penmetsaa@google.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-sanitizers:
-  - address
-main_repo: 'https://github.com/google/libphonenumber'
diff --git a/projects/libplist/Dockerfile b/projects/libplist/Dockerfile
index 375fff6..76432e1 100644
--- a/projects/libplist/Dockerfile
+++ b/projects/libplist/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER nikias@gmx.li
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
 
 RUN git clone --depth 1 https://github.com/libimobiledevice/libplist
diff --git a/projects/libplist/build.sh b/projects/libplist/build.sh
index 7ad2c04..14a29c4 100755
--- a/projects/libplist/build.sh
+++ b/projects/libplist/build.sh
@@ -23,7 +23,7 @@
 for fuzzer in bplist_fuzzer xplist_fuzzer; do
   $CXX $CXXFLAGS -std=c++11 -Iinclude/ \
       fuzz/$fuzzer.cc -o $OUT/$fuzzer \
-      $LIB_FUZZING_ENGINE src/.libs/libplist-2.0.a
+      $LIB_FUZZING_ENGINE src/.libs/libplist.a
 done
 
 zip -j $OUT/bplist_fuzzer_seed_corpus.zip test/data/*.bplist
diff --git a/projects/libplist/project.yaml b/projects/libplist/project.yaml
index 24adeda..6bbfd76 100644
--- a/projects/libplist/project.yaml
+++ b/projects/libplist/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/libimobiledevice/libplist"
-language: c++
 primary_contact: "nikias.bassen@gmail.com"
 auto_ccs:
   - "nikias@gmx.li"
@@ -13,4 +12,3 @@
   - memory
   - undefined
   - dataflow
-main_repo: 'https://github.com/libimobiledevice/libplist'
diff --git a/projects/libpng-proto/Dockerfile b/projects/libpng-proto/Dockerfile
index 26d3917..f68cca5 100644
--- a/projects/libpng-proto/Dockerfile
+++ b/projects/libpng-proto/Dockerfile
@@ -15,11 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update -y && \
-    apt-get install -y make autoconf automake libtool zlib1g-dev \
-    binutils cmake ninja-build liblzma-dev libz-dev pkg-config
+MAINTAINER kcc@google.com
+RUN apt-get update && \
+    apt-get install -y make autoconf automake libtool zlib1g-dev ninja-build cmake
+
 RUN git clone --depth 1 https://github.com/glennrp/libpng.git
 RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
 RUN git clone --depth 1 https://github.com/google/fuzzer-test-suite
 RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
-COPY build.sh png_fuzz_proto.proto png_proto_fuzzer_example.cc libpng_transforms_fuzzer.cc png_proto_mutator.cc $SRC/
+COPY build.sh png_fuzz_proto.proto  png_proto_fuzzer_example.cc libpng_transforms_fuzzer.cc $SRC/
diff --git a/projects/libpng-proto/build.sh b/projects/libpng-proto/build.sh
index b51c9f9..28b8f55 100755
--- a/projects/libpng-proto/build.sh
+++ b/projects/libpng-proto/build.sh
@@ -1,25 +1,9 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
 #!/bin/bash
 
 # build libpng using the upstream-provided build.sh.
 # it will also build the vanilla (non-proto) fuzz target,
 # but we discard it.
-(cd libpng/ && contrib/oss-fuzz/build.sh && rm -rf $OUT/*)
+(cd libpng/ && contrib/oss-fuzz/build.sh && rm $OUT/*)
 
 # Compile png_fuzz_proto.proto; should produce two files in genfiles/:
 # png_fuzz_proto.pb.cc  png_fuzz_proto.pb.h
@@ -42,16 +26,6 @@
   $LIB_FUZZING_ENGINE \
   -o $OUT/png_proto_fuzzer_example
 
-# custom png proto mutator
-$CXX $CXXFLAGS png_proto_fuzzer_example.cc png_proto_mutator.cc libpng_read_fuzzer.o genfiles/png_fuzz_proto.pb.cc \
-  -I genfiles -I.  -I libprotobuf-mutator/  -I LPM/external.protobuf/include \
-  -lz \
-  LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
-  LPM/src/libprotobuf-mutator.a \
-  LPM/external.protobuf/lib/libprotobuf.a \
-  libpng/.libs/libpng16.a \
-  $LIB_FUZZING_ENGINE \
-  -o $OUT/png_proto_fuzzer_example_custom_mutator
 
 echo > dummy.cc
 
@@ -75,3 +49,5 @@
   libpng/.libs/libpng16.a \
   $LIB_FUZZING_ENGINE \
   -o $OUT/png_transforms_fuzzer
+
+
diff --git a/projects/libpng-proto/png_proto_mutator.cc b/projects/libpng-proto/png_proto_mutator.cc
deleted file mode 100644
index 1389de7..0000000
--- a/projects/libpng-proto/png_proto_mutator.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-#include "png_fuzz_proto.pb.h"
-
-template <typename Proto>
-using FuzzMutatorCallback = std::function<void(Proto*, unsigned int)>;
-
-template <typename Proto>
-struct PngProtoCBRegistration
-{
-	PngProtoCBRegistration(FuzzMutatorCallback<Proto> const& _callback)
-	{
-		static protobuf_mutator::libfuzzer::PostProcessorRegistration<Proto> reg = {_callback};
-	}
-};
-
-/// Custom mutation: Otherchunk unknown_type -> known_type
-static PngProtoCBRegistration<OtherChunk> addCustomChunk = {
-	[](OtherChunk* message, unsigned int seed)
-	{
-		// Mutate with a probability of roughly 1/47
-		// 47 has been chosen ad-hoc
-		if (seed % 47 == 0)
-		{
-			// If otherChunk is unknown type, mutate
-			// it to known type
-			if (message->has_unknown_type())
-			{
-				// This is our custom mutation
-				// We assume (k * 47 mod N) distribute
-				// uniformly, where
-				//  - N is total number of known
-				// chunks defined by png proto converter
-				//  - k is a factor of seed
-				message->set_known_type(seed);
-			}
-		}
-	}
-};
diff --git a/projects/libpng-proto/project.yaml b/projects/libpng-proto/project.yaml
index a981efe..0bbf714 100644
--- a/projects/libpng-proto/project.yaml
+++ b/projects/libpng-proto/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.libpng.org/pub/png/libpng.html"
-language: c++
 primary_contact: "kcc@google.com"
 sanitizers:
   - undefined
diff --git a/projects/libpng/Dockerfile b/projects/libpng/Dockerfile
index 4723286..80c0830 100644
--- a/projects/libpng/Dockerfile
+++ b/projects/libpng/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER glennrp@gmail.com
 RUN apt-get update && \
     apt-get install -y make autoconf automake libtool zlib1g-dev
 
diff --git a/projects/libpng/project.yaml b/projects/libpng/project.yaml
index 66b280b..0497bb3 100644
--- a/projects/libpng/project.yaml
+++ b/projects/libpng/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.libpng.org/pub/png/libpng.html"
-language: c++
 primary_contact: "glennrp@gmail.com"
 vendor_ccs:
   - "aosmond@mozilla.com"
@@ -9,4 +8,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/glennrp/libpng.git'
diff --git a/projects/libprotobuf-mutator/Dockerfile b/projects/libprotobuf-mutator/Dockerfile
index 14adeb8..5eb0da0 100644
--- a/projects/libprotobuf-mutator/Dockerfile
+++ b/projects/libprotobuf-mutator/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER vitalybuka@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config cmake \
     ninja-build liblzma-dev libz-dev docbook2x
 
diff --git a/projects/libprotobuf-mutator/project.yaml b/projects/libprotobuf-mutator/project.yaml
index b4bacc0..2060ce5 100644
--- a/projects/libprotobuf-mutator/project.yaml
+++ b/projects/libprotobuf-mutator/project.yaml
@@ -1,4 +1,2 @@
-homepage: "https://github.com/google/libprotobuf-mutator"
-language: c++
-primary_contact: "vitalybuka@chromium.org"
-main_repo: 'https://github.com/google/libprotobuf-mutator.git'
+auto_ccs:
+  - "vitalybuka@chromium.org"
diff --git a/projects/libpsl/Dockerfile b/projects/libpsl/Dockerfile
index 303c5bb..d5cf8db 100644
--- a/projects/libpsl/Dockerfile
+++ b/projects/libpsl/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rockdaboot@gmail.com
 RUN apt-get update && apt-get install -y \
  make \
  pkg-config \
@@ -41,7 +42,7 @@
 RUN git clone --depth=1 https://gitlab.com/libidn/libidn2.git && \
     rmdir libidn2/gnulib && ln -s $SRC/gnulib libidn2/gnulib
 RUN git clone --depth=1 https://git.savannah.gnu.org/git/libidn.git
-RUN wget https://github.com/unicode-org/icu/releases/download/release-59-2/icu4c-59_2-src.tgz && tar xvfz icu4c-59_2-src.tgz
+RUN wget http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.tgz && tar xvfz icu4c-59_1-src.tgz
 
 RUN git clone --depth=1 --recursive https://github.com/rockdaboot/libpsl.git
 
diff --git a/projects/libpsl/project.yaml b/projects/libpsl/project.yaml
index ea3a979..e63960a 100644
--- a/projects/libpsl/project.yaml
+++ b/projects/libpsl/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://github.com/rockdaboot/libpsl"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
   - "tim.ruehsen@gmx.de"
-main_repo: 'https://github.com/rockdaboot/libpsl.git'
diff --git a/projects/libra/Dockerfile b/projects/libra/Dockerfile
deleted file mode 100644
index 426e547..0000000
--- a/projects/libra/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# google oss-fuzz stuff
-FROM gcr.io/oss-fuzz-base/base-builder
-
-# install other tools we might need
-RUN apt-get update && apt-get install -y cmake curl
-
-# get libra
-RUN git clone --depth 1 https://github.com/libra/libra $SRC/libra
-WORKDIR $SRC/libra
-
-# building script for fuzzers
-COPY build.sh $SRC/
diff --git a/projects/libra/build.sh b/projects/libra/build.sh
deleted file mode 100644
index c80e5dc..0000000
--- a/projects/libra/build.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash -eux
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Note: This project creates Rust fuzz targets exclusively
-
-# recipe:
-# -------
-# 1. we list all the fuzzers and save to a file fuzzer_list
-# 2. we build the corpus for each fuzzer
-# 3. we build all the fuzzers
-
-# reset flags of OSS-Fuzz
-export CFLAGS="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
-export CXXFLAGS_EXTRA="-stdlib=libc++"
-export CXXFLAGS="$CFLAGS $CXXFLAGS_EXTRA"
-
-# correct workdir
-cd $SRC/libra/testsuite/libra-fuzzer
-
-# fetch all dependencies (needed for patching rocksdb)
-cargo fetch
-
-# patch rocksdb to not link libc++ statically
-sed -i "s/link_cpp(&mut build)/build.cpp_link_stdlib(None)/" \
-    /rust/git/checkouts/rust-rocksdb-a9a28e74c6ead8ef/72e45c3/librocksdb_sys/build.rs
-# so now we need to link libc++ at the end
-export RUSTFLAGS="-C link-arg=-L/usr/local/lib -C link-arg=-lc++"
-
-# 1. list fuzzers
-cargo run --bin libra-fuzzer list --no-desc > fuzzer_list
-
-# 2. build corpus and move to $OUT
-cat fuzzer_list | while read -r line
-do
-    cargo run --bin libra-fuzzer generate -n 128 $line
-    zip -r $OUT/"$line"_seed_corpus.zip fuzz/corpus/$line
-    rm -r fuzz/corpus/$line
-done
-
-# rust libfuzzer flags (https://github.com/rust-fuzz/libfuzzer/blob/master/build.rs#L12)
-export CUSTOM_LIBFUZZER_PATH="$LIB_FUZZING_ENGINE_DEPRECATED"
-export CUSTOM_LIBFUZZER_STD_CXX=c++
-# export CUSTOM_LIBFUZZER_STD_CXX=none 
-
-# export fuzzing flags
-RUSTFLAGS="$RUSTFLAGS --cfg fuzzing"          # used to change code logic
-RUSTFLAGS="$RUSTFLAGS -Cdebug-assertions"     # to get debug_assert in rust
-RUSTFLAGS="$RUSTFLAGS -Zsanitizer=address"    # address sanitizer (ASAN)
-
-RUSTFLAGS="$RUSTFLAGS -Cdebuginfo=1"         
-RUSTFLAGS="$RUSTFLAGS -Cforce-frame-pointers"
-
-RUSTFLAGS="$RUSTFLAGS -Cpasses=sancov"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-level=4"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-trace-compares"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-inline-8bit-counters"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-trace-geps"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-prune-blocks=0"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-pc-table"
-RUSTFLAGS="$RUSTFLAGS -Clink-dead-code"
-RUSTFLAGS="$RUSTFLAGS -Cllvm-args=-sanitizer-coverage-stack-depth"
-RUSTFLAGS="$RUSTFLAGS -Ccodegen-units=1"
-
-export RUSTFLAGS
-
-# 3. build all the fuzzers!
-cat fuzzer_list | while read -r line
-do
-    # build
-    export SINGLE_FUZZ_TARGET="$line"
-    cargo build --manifest-path fuzz/Cargo.toml --bin fuzzer_builder --release --target x86_64-unknown-linux-gnu
-    # move fuzzer to $OUT
-    mv $SRC/libra/target/x86_64-unknown-linux-gnu/release/fuzzer_builder $OUT/$SINGLE_FUZZ_TARGET
-done
diff --git a/projects/libra/project.yaml b/projects/libra/project.yaml
deleted file mode 100644
index 7306731..0000000
--- a/projects/libra/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/libra/libra"
-primary_contact: "davidwong.crypto@gmail.com"
-auto_ccs:
-  - "davidwg@fb.com"
-  - "youngyl@fb.com"
-  - "fuzzing@fb.com"
-language: rust
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-main_repo: 'https://github.com/libra/libra'
diff --git a/projects/libraw/Dockerfile b/projects/libraw/Dockerfile
deleted file mode 100644
index 7ed9213..0000000
--- a/projects/libraw/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
-RUN git clone --depth 1 https://github.com/libraw/libraw
-WORKDIR libraw
-
-ADD http://oss-fuzz-corpus.storage.googleapis.com/libraw/libraw_cr2_fuzzer_seed_corpus.zip $SRC/
-ADD http://oss-fuzz-corpus.storage.googleapis.com/libraw/libraw_nef_fuzzer_seed_corpus.zip $SRC/
-ADD http://oss-fuzz-corpus.storage.googleapis.com/libraw/libraw_raf_fuzzer_seed_corpus.zip $SRC/
-
-COPY build.sh libraw_fuzzer.cc $SRC/
diff --git a/projects/libraw/build.sh b/projects/libraw/build.sh
deleted file mode 100755
index 6c46d3f..0000000
--- a/projects/libraw/build.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# copy corpuses
-cp $SRC/libraw_cr2_fuzzer_seed_corpus.zip \
-    $SRC/libraw_nef_fuzzer_seed_corpus.zip \
-    $SRC/libraw_raf_fuzzer_seed_corpus.zip \
-    $OUT/
-
-# build project
-autoreconf --install
-./configure --disable-examples
-make
-
-# build fuzzers
-$CXX $CXXFLAGS -std=c++11 -Ilibraw \
-    $SRC/libraw_fuzzer.cc -o $OUT/libraw_fuzzer \
-    $LIB_FUZZING_ENGINE lib/.libs/libraw.a
-
-$CXX $CXXFLAGS -std=c++11 -Ilibraw \
-    $SRC/libraw_fuzzer.cc -o $OUT/libraw_cr2_fuzzer \
-    $LIB_FUZZING_ENGINE lib/.libs/libraw.a
-
-$CXX $CXXFLAGS -std=c++11 -Ilibraw \
-    $SRC/libraw_fuzzer.cc -o $OUT/libraw_nef_fuzzer \
-    $LIB_FUZZING_ENGINE lib/.libs/libraw.a
-
-$CXX $CXXFLAGS -std=c++11 -Ilibraw \
-    $SRC/libraw_fuzzer.cc -o $OUT/libraw_raf_fuzzer \
-    $LIB_FUZZING_ENGINE lib/.libs/libraw.a
diff --git a/projects/libraw/libraw_fuzzer.cc b/projects/libraw/libraw_fuzzer.cc
deleted file mode 100644
index 74c9b61..0000000
--- a/projects/libraw/libraw_fuzzer.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/*  Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <string>
-
-#include <libraw.h>
-
-enum InterpolationOptions {
-  Linear = 0,
-  Vng = 1, 
-  Ppg = 2,
-  Ahd = 3,
-  Dcb = 4,
-  Dht = 11,
-  AhdModified = 12
-};
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // Input less than 15mb
-  if (size > 15000000) {
-    return 0;
-  }
-
-  LibRaw lib_raw;
-
-  int result = lib_raw.open_buffer(
-      const_cast<char*>(reinterpret_cast<const char*>(data)), size);
-  if (result != LIBRAW_SUCCESS) {
-    return 0;
-  }
-
-  result = lib_raw.unpack();
-  if (result != LIBRAW_SUCCESS) {
-    return 0;
-  }
-
-  InterpolationOptions options[] = {Linear, Vng, Ppg, Ahd, Dcb, Dht, AhdModified};
-
-  for (int i = 0; i < sizeof(options)/sizeof(*options); i++) {
-    lib_raw.output_params_ptr()->user_qual = static_cast<int>(options[i]);
-
-    result = lib_raw.dcraw_process();
-    if (result != LIBRAW_SUCCESS) {
-      return 0;
-    }
-  }
-
-  return 0;
-}
diff --git a/projects/libraw/project.yaml b/projects/libraw/project.yaml
deleted file mode 100644
index c05690d..0000000
--- a/projects/libraw/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://www.libraw.org/"
-language: c++
-primary_contact: "jesteele@google.com"
-auto_ccs:
-    - "nchusid@google.com"
-    - "pinheirojamie@google.com"
-sanitizers:
-    - address
-    - memory
-    - undefined
-main_repo: 'https://github.com/libraw/libraw'
diff --git a/projects/librawspeed/Dockerfile b/projects/librawspeed/Dockerfile
index 54bb66d..d3ae084 100644
--- a/projects/librawspeed/Dockerfile
+++ b/projects/librawspeed/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER lebedev.ri@gmail.com
 RUN apt-get update && \
     apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \
     wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add - && \
diff --git a/projects/librawspeed/project.yaml b/projects/librawspeed/project.yaml
index a0a49e6..82a2ca3 100644
--- a/projects/librawspeed/project.yaml
+++ b/projects/librawspeed/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://github.com/darktable-org/rawspeed"
-language: c++
 primary_contact: "lebedev.ri@gmail.com"
 sanitizers:
 - address
 - undefined
 - memory
-main_repo: 'https://github.com/darktable-org/rawspeed.git'
diff --git a/projects/librdkafka/Dockerfile b/projects/librdkafka/Dockerfile
deleted file mode 100755
index 43a2c2a..0000000
--- a/projects/librdkafka/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake flex bison
-RUN git clone https://github.com/edenhill/librdkafka
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/librdkafka/build.sh b/projects/librdkafka/build.sh
deleted file mode 100755
index ea59e89..0000000
--- a/projects/librdkafka/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd librdkafka
-./configure --install-deps --disable-regex-ext
-make
-
-export LIBZSTD=$PWD/mklove/deps/dest/libzstd/usr/lib/libzstd.a
-export LIBZ_LIB=$PWD/mklove/deps/dest/zlib/usr/lib/libz.a
-
-cd tests
-echo $PWD
-ls -al 
-$CC -g -fPIC $CFLAGS -I../src -c ./fuzzers/fuzz_regex.c -o fuzz_regex.o
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE -rdynamic fuzz_regex.o -o fuzzer \
-    ../src/librdkafka.a -lm ${LIBZSTD} -lsasl2 -lssl -lcrypto \
-    -lcrypto ${LIBZ_LIB} -ldl -lpthread -lrt
-
-cp fuzzer $OUT/fuzz_regex
diff --git a/projects/librdkafka/project.yaml b/projects/librdkafka/project.yaml
deleted file mode 100755
index ab63b27..0000000
--- a/projects/librdkafka/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/edenhill/librdkafka"
-primary_contact: "magnus@edenhill.se"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/edenhill/librdkafka'
diff --git a/projects/libredwg/Dockerfile b/projects/libredwg/Dockerfile
deleted file mode 100755
index 93695c3..0000000
--- a/projects/libredwg/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf libtool texinfo
-RUN git clone https://github.com/LibreDWG/libredwg
-
-WORKDIR $SRC
-COPY build.sh $SRC/
-COPY llvmfuzz.options $SRC/
diff --git a/projects/libredwg/build.sh b/projects/libredwg/build.sh
deleted file mode 100755
index 7737e4d..0000000
--- a/projects/libredwg/build.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd libredwg
-sh ./autogen.sh
-# enable-release to skip unstable preR13. bindings are not fuzzed.
-./configure --disable-shared --disable-bindings --enable-release
-make
-
-$CC $CFLAGS $LIB_FUZZING_ENGINE examples/llvmfuzz.c -o $OUT/llvmfuzz \
-    src/.libs/libredwg.a -I./include -I./src
-
-cp $SRC/llvmfuzz.options $OUT/llvmfuzz.options
diff --git a/projects/libredwg/llvmfuzz.options b/projects/libredwg/llvmfuzz.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/libredwg/llvmfuzz.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/libredwg/project.yaml b/projects/libredwg/project.yaml
deleted file mode 100755
index a9e5d44..0000000
--- a/projects/libredwg/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://github.com/LibreDWG/libredwg"
-primary_contact: "reini.urban@gmail.com"
-language: c
-auto_ccs :
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz 
-main_repo: 'https://github.com/LibreDWG/libredwg'
diff --git a/projects/libreoffice/Dockerfile b/projects/libreoffice/Dockerfile
index 6e8d211..520be1b 100644
--- a/projects/libreoffice/Dockerfile
+++ b/projects/libreoffice/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER officesecurity@lists.freedesktop.org
 # enable source repos
 RUN sed -i -e '/^#\s*deb-src.*\smain\s\+restricted/s/^#//' /etc/apt/sources.list
 #build requirements
@@ -117,7 +118,7 @@
     https://raw.githubusercontent.com/rc0r/afl-fuzz/master/dictionaries/xml.dict \
     https://raw.githubusercontent.com/rc0r/afl-fuzz/master/dictionaries/html_tags.dict $SRC/
 #fuzzing corpuses
-ADD https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz $SRC/
+ADD http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz $SRC/
 RUN mkdir afl-testcases && cd afl-testcases/ && tar xf $SRC/afl_testcases.tgz && cd .. && \
     zip -q $SRC/jpgfuzzer_seed_corpus.zip afl-testcases/jpeg*/full/images/* && \
     zip -q $SRC/giffuzzer_seed_corpus.zip afl-testcases/gif*/full/images/* && \
diff --git a/projects/libreoffice/build.sh b/projects/libreoffice/build.sh
index b4ee63e..cec8368 100755
--- a/projects/libreoffice/build.sh
+++ b/projects/libreoffice/build.sh
@@ -1,18 +1,3 @@
 #!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
 
 $SRC/libreoffice/bin/oss-fuzz-build.sh
diff --git a/projects/libreoffice/project.yaml b/projects/libreoffice/project.yaml
index bcf9a4f..356e9ac 100644
--- a/projects/libreoffice/project.yaml
+++ b/projects/libreoffice/project.yaml
@@ -1,9 +1,6 @@
 homepage: "https://www.libreoffice.org/"
-language: c++
 primary_contact: "caolanm@redhat.com"
 auto_ccs:
   - "officesecurity@lists.freedesktop.org"
   - "damjan.jov@gmail.com"
-  - "noelgrandin@gmail.com"
   - "sbergman@redhat.com"
-main_repo: 'https://git.libreoffice.org/core'
diff --git a/projects/libressl/Dockerfile b/projects/libressl/Dockerfile
index 964569a..2c3b031 100644
--- a/projects/libressl/Dockerfile
+++ b/projects/libressl/Dockerfile
@@ -15,12 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake wget
+MAINTAINER ab@pompel.me
+RUN apt-get update && apt-get install -y make cmake
 RUN git clone --depth 1 https://github.com/libressl-portable/portable.git libressl
 RUN git clone --depth 1 https://github.com/libressl-portable/fuzz.git libressl.fuzzers
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz-corpora
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
 WORKDIR libressl
 RUN ./update.sh
 COPY build.sh *.options $SRC/
diff --git a/projects/libressl/build.sh b/projects/libressl/build.sh
index 48cf959..b6700e9 100755
--- a/projects/libressl/build.sh
+++ b/projects/libressl/build.sh
@@ -15,18 +15,6 @@
 # limitations under the License.
 #
 ################################################################################
-
-# Install Boost headers
-cd $SRC/
-tar jxf boost_1_74_0.tar.bz2
-cd boost_1_74_0/
-CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-CFLAGS="" CXXFLAGS="" ./b2 headers
-cp -R boost/ /usr/include/
-
-# Prevent Boost compilation error with -std=c++17
-export CXXFLAGS="$CXXFLAGS -D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR"
-
 mkdir -p $WORK/libressl
 cd $WORK/libressl
 
@@ -70,26 +58,3 @@
 cp $SRC/*.options $OUT/
 cp $LIBRESSL_FUZZERS/oids.txt $OUT/asn1.dict
 cp $LIBRESSL_FUZZERS/oids.txt $OUT/x509.dict
-
-# Cryptofuzz
-cd $SRC/cryptofuzz/
-if [[ $CFLAGS = *sanitize=memory* ]]
-then
-    export CXXFLAGS="$CXXFLAGS -DMSAN"
-fi
-# Generate lookup tables
-python3 gen_repository.py
-# Compile Cryptofuzz LibreSSL module
-cd $SRC/cryptofuzz/modules/openssl
-OPENSSL_INCLUDE_PATH="$SRC/libressl/include" OPENSSL_LIBCRYPTO_A_PATH="$WORK/libressl/crypto/libcrypto.a" CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBRESSL" make
-# Compile Cryptofuzz
-cd $SRC/cryptofuzz/
-LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_LIBRESSL -I $SRC/libressl/include" make -j$(nproc)
-# Generate dictionary
-./generate_dict
-# Copy fuzzer
-cp $SRC/cryptofuzz/cryptofuzz $OUT/cryptofuzz
-# Copy dictionary
-cp $SRC/cryptofuzz/cryptofuzz-dict.txt $OUT/cryptofuzz.dict
-# Copy seed corpus
-cp $SRC/cryptofuzz-corpora/libressl_latest.zip $OUT/cryptofuzz_seed_corpus.zip
diff --git a/projects/libressl/project.yaml b/projects/libressl/project.yaml
index 4d67712..a873c64 100644
--- a/projects/libressl/project.yaml
+++ b/projects/libressl/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.libressl.org/"
-language: c++
 primary_contact: "busterb@gmail.com"
 auto_ccs:
  - "beck@obtuse.com"
@@ -7,8 +6,6 @@
  - "kinichiro.inoguchi@gmail.com"
  - "ted.unangst@gmail.com"
  - "miwaxe@gmail.com"
- - "guidovranken@gmail.com"
 sanitizers:
  - address
  - undefined
-main_repo: 'https://github.com/libressl-portable/portable.git'
diff --git a/projects/libsass/project.yaml b/projects/libsass/project.yaml
index 7c1c2f3..13a2b97 100644
--- a/projects/libsass/project.yaml
+++ b/projects/libsass/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://libsass.org/"
-language: c++
 primary_contact: "xzyfer@gmail.com"
 
 sanitizers:
@@ -10,4 +9,3 @@
 labels:
   data_context_fuzzer:
     - sundew
-main_repo: 'https://github.com/sass/libsass.git'
diff --git a/projects/libsndfile/Dockerfile b/projects/libsndfile/Dockerfile
deleted file mode 100644
index 1a95f1e..0000000
--- a/projects/libsndfile/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/libsndfile/libsndfile.git /src/libsndfile
-
-WORKDIR $SRC/libsndfile
-COPY build.sh $SRC/
diff --git a/projects/libsndfile/build.sh b/projects/libsndfile/build.sh
deleted file mode 100755
index 77d3f65..0000000
--- a/projects/libsndfile/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Run the OSS-Fuzz script in the project.
-./ossfuzz/ossfuzz.sh
diff --git a/projects/libsndfile/project.yaml b/projects/libsndfile/project.yaml
deleted file mode 100644
index 34cbf42..0000000
--- a/projects/libsndfile/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/libsndfile/libsndfile"
-primary_contact: "evpobr@gmail.com"
-language: c
-auto_ccs:
-  - "cmeister2@gmail.com"
-  - "erikd@mega-nerd.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
-coverage_extra_args: -ignore-filename-regex=/usr/lib/jvm/.*
-main_repo: 'https://github.com/libsndfile/libsndfile.git'
diff --git a/projects/libsodium/Dockerfile b/projects/libsodium/Dockerfile
index f995865..cb3fb04 100644
--- a/projects/libsodium/Dockerfile
+++ b/projects/libsodium/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER chriswwolfe@gmail.com
 RUN apt-get update && apt-get install -y make
 RUN git clone --depth 1 https://github.com/jedisct1/libsodium.git --branch stable libsodium
 WORKDIR libsodium
diff --git a/projects/libsodium/fake_random.h b/projects/libsodium/fake_random.h
index 9519b0c..36d8d89 100644
--- a/projects/libsodium/fake_random.h
+++ b/projects/libsodium/fake_random.h
@@ -1,17 +1,3 @@
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 #ifndef FAKE_RANDOM_H_
 #define FAKE_RANDOM_H_
 
@@ -57,7 +43,7 @@
   int fake_random_set = randombytes_set_implementation(&fake_random);
   assert(fake_random_set == 0);
 
-  assert(strcmp(randombytes_implementation_name(), "fake_random") == 0);
+  assert(randombytes_implementation_name() == "fake_random");
   int initialized = sodium_init();
   assert(initialized >= 0);
 }
diff --git a/projects/libsodium/project.yaml b/projects/libsodium/project.yaml
index 40b1374..e983817 100644
--- a/projects/libsodium/project.yaml
+++ b/projects/libsodium/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://libsodium.org"
-language: c++
-primary_contact: "ossfuzzz@gmail.com"
+primary_contact: "ossfuzzz+sodium@gmail.com"
 auto_ccs:
  - "chriswwolfe@gmail.com"
 architectures:
   - x86_64
-main_repo: 'https://github.com/jedisct1/libsodium.git'
diff --git a/projects/libsodium/secret_key_auth_fuzzer.cc b/projects/libsodium/secret_key_auth_fuzzer.cc
index ce46781..32bb5fe 100644
--- a/projects/libsodium/secret_key_auth_fuzzer.cc
+++ b/projects/libsodium/secret_key_auth_fuzzer.cc
@@ -1,19 +1,4 @@
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 #include <assert.h>
-#include <stdlib.h>
 #include <sodium.h>
 
 #include "fake_random.h"
@@ -31,8 +16,6 @@
   crypto_auth_keygen(key);
 
   crypto_auth(mac, data, size, key);
-  int err = crypto_auth_verify(mac, data, size, key);
-  assert(err == 0);
-
+  crypto_auth_verify(mac, data, size, key);
   return 0;
 }
diff --git a/projects/libsodium/secretbox_easy_fuzzer.cc b/projects/libsodium/secretbox_easy_fuzzer.cc
index a37c88b..4e25bcc 100644
--- a/projects/libsodium/secretbox_easy_fuzzer.cc
+++ b/projects/libsodium/secretbox_easy_fuzzer.cc
@@ -1,19 +1,4 @@
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 #include <assert.h>
-#include <stdlib.h>
 #include <sodium.h>
 
 #include "fake_random.h"
@@ -32,16 +17,12 @@
   randombytes_buf(nonce, sizeof nonce);
 
   size_t ciphertext_len = crypto_secretbox_MACBYTES + size;
-  unsigned char *ciphertext = (unsigned char *) malloc(ciphertext_len);
+  unsigned char ciphertext[ciphertext_len];
 
   crypto_secretbox_easy(ciphertext, data, size, nonce, key);
 
-  unsigned char *decrypted = (unsigned char *) malloc(size);
-  int err = crypto_secretbox_open_easy(decrypted, ciphertext, ciphertext_len, nonce, key);
-  assert(err == 0);
-
-  free((void *) ciphertext);
-  free((void *) decrypted);
+  unsigned char decrypted[size];
+  crypto_secretbox_open_easy(decrypted, ciphertext, ciphertext_len, nonce, key);
 
   return 0;
 }
diff --git a/projects/libspectre/Dockerfile b/projects/libspectre/Dockerfile
index da1339d..1653685 100755
--- a/projects/libspectre/Dockerfile
+++ b/projects/libspectre/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google Inc.
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,15 +16,12 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER randy408@protonmail.com
 
 RUN apt-get update && \
     apt-get install -y pkg-config make automake libtool wget
 
 RUN git clone --depth 1 https://gitlab.freedesktop.org/libspectre/libspectre.git
 
-RUN wget -O $SRC/libspectre/ghostscript-9.53.3.tar.gz https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9533/ghostscript-9.53.3.tar.gz
-RUN tar xvzf $SRC/libspectre/ghostscript-9.53.3.tar.gz --directory $SRC/libspectre/
-RUN mv $SRC/libspectre/ghostscript-9.53.3 $SRC/libspectre/ghostscript
-
-WORKDIR $SRC/libspectre/
+WORKDIR libspectre
 COPY build.sh $SRC/
diff --git a/projects/libspectre/project.yaml b/projects/libspectre/project.yaml
index d988232..1a53de1 100755
--- a/projects/libspectre/project.yaml
+++ b/projects/libspectre/project.yaml
@@ -1,16 +1,4 @@
 homepage: "https://www.freedesktop.org/wiki/Software/libspectre/"
-language: c++
 primary_contact: "tsdgeos@gmail.com"
 auto_ccs:
   - "randy440088@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-main_repo: 'https://gitlab.freedesktop.org/libspectre/libspectre.git'
diff --git a/projects/libspng/Dockerfile b/projects/libspng/Dockerfile
index f91f825..fa3f5f4 100644
--- a/projects/libspng/Dockerfile
+++ b/projects/libspng/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google Inc.
+# Copyright 2018 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,16 +16,13 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER randy408@protonmail.com
 
 RUN apt-get update && \
     apt-get install -y wget tar cmake
 
-RUN git clone --depth 1 https://github.com/randy408/libspng.git
+RUN git clone --depth 1 https://gitlab.com/randy408/libspng.git
 RUN git clone --depth 1 https://github.com/google/fuzzer-test-suite
 
-RUN wget -O $WORK/zlib.tar.gz http://www.zlib.net/zlib-1.2.11.tar.gz
-RUN tar xzvf $WORK/zlib.tar.gz --directory $SRC/
-RUN mv $SRC/zlib-1.2.11 $SRC/zlib
-
 WORKDIR libspng
 COPY build.sh $SRC/
diff --git a/projects/libspng/project.yaml b/projects/libspng/project.yaml
index 6ebd564..0de90d2 100644
--- a/projects/libspng/project.yaml
+++ b/projects/libspng/project.yaml
@@ -1,12 +1,7 @@
 homepage: "https://libspng.org"
-language: c++
 primary_contact: "randy408@protonmail.com"
 auto_ccs:
   - "randy440088@gmail.com"
 architectures:
   - x86_64
-  - i386
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/randy408/libspng.git'
+  - i386
\ No newline at end of file
diff --git a/projects/libsrtp/Dockerfile b/projects/libsrtp/Dockerfile
index e3731dc..b2db89b 100644
--- a/projects/libsrtp/Dockerfile
+++ b/projects/libsrtp/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y sudo autoconf build-essential libssl-dev pkg-config
 
 RUN git clone --depth 1 https://github.com/cisco/libsrtp
diff --git a/projects/libsrtp/project.yaml b/projects/libsrtp/project.yaml
index a0e5c11..4e69a31 100644
--- a/projects/libsrtp/project.yaml
+++ b/projects/libsrtp/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/cisco/libsrtp"
-language: c++
 primary_contact: "richbarn@cisco.com"
 auto_ccs:
  - "guidovranken@gmail.com"
@@ -9,4 +8,3 @@
 architectures:
  - x86_64
  - i386
-main_repo: 'https://github.com/cisco/libsrtp'
diff --git a/projects/libssh/Dockerfile b/projects/libssh/Dockerfile
index 5e5c060..58aae70 100644
--- a/projects/libssh/Dockerfile
+++ b/projects/libssh/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alex.gaynor@gmail.com
 RUN apt-get update && apt-get install -y cmake zlib1g-dev libssl-dev
 
 RUN git clone --depth=1 https://git.libssh.org/projects/libssh.git
diff --git a/projects/libssh/build.sh b/projects/libssh/build.sh
index b0a3d15..a2543ec 100644
--- a/projects/libssh/build.sh
+++ b/projects/libssh/build.sh
@@ -15,24 +15,20 @@
 #
 ################################################################################
 
-BUILD=$WORK/build
-mkdir -p $BUILD
-pushd $BUILD
+mkdir -p build
+pushd build
 cmake -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" \
     -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-    -DBUILD_SHARED_LIBS=OFF -DWITH_INSECURE_NONE=ON $SRC/libssh
+    -DBUILD_SHARED_LIBS=OFF ..
 make "-j$(nproc)"
 
-fuzzers=$(find $SRC/libssh/tests/fuzz/ -name "*_fuzzer.cpp")
-for f in $fuzzers; do
-    fuzzerName=$(basename $f .cpp)
-    echo "Building fuzzer $fuzzerName"
-    $CXX $CXXFLAGS -std=c++11 -I$SRC/libssh/include/ -I$BUILD/include/ \
-        "$f" -o "$OUT/$fuzzerName" \
-        $LIB_FUZZING_ENGINE ./src/libssh.a -Wl,-Bstatic -lcrypto -lz -Wl,-Bdynamic
+$CXX $CXXFLAGS -std=c++11 -I$SRC/libssh/include/ \
+    "$SRC/libssh/tests/fuzz/ssh_server_fuzzer.cpp" \
+    -o "$OUT/libssh_server_fuzzer" \
+    $LIB_FUZZING_ENGINE ./src/libssh.a -Wl,-Bstatic -lcrypto -lz -Wl,-Bdynamic
 
-    if [ -d "$SRC/libssh/tests/fuzz/${fuzzerName}_corpus" ]; then
-        zip -j $OUT/${fuzzerName}_seed_corpus.zip $SRC/libssh/tests/fuzz/${fuzzerName}_corpus/*
-    fi
-done
+$CXX $CXXFLAGS -std=c++11 -I$SRC/libssh/include/ \
+    "$SRC/libssh/tests/fuzz/ssh_client_fuzzer.cpp" \
+    -o "$OUT/libssh_client_fuzzer" \
+    $LIB_FUZZING_ENGINE ./src/libssh.a -Wl,-Bstatic -lcrypto -lz -Wl,-Bdynamic
 popd
diff --git a/projects/libssh/project.yaml b/projects/libssh/project.yaml
index 5c64321..fe93518 100644
--- a/projects/libssh/project.yaml
+++ b/projects/libssh/project.yaml
@@ -1,12 +1,9 @@
 homepage: "https://libssh.org/"
-language: c++
 primary_contact: "asn@cryptomilk.org"
 auto_ccs:
  - "cryptomilk@gmail.com"
  - "jakuje@gmail.com"
- - "anderson.sasaki@gmail.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://git.libssh.org/projects/libssh.git'
diff --git a/projects/libssh2/Dockerfile b/projects/libssh2/Dockerfile
index 77445e9..c80b7b4 100644
--- a/projects/libssh2/Dockerfile
+++ b/projects/libssh2/Dockerfile
@@ -15,8 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cmeister2@gmail.com
 
-RUN git clone --depth 1 https://github.com/libssh2/libssh2.git /src/libssh2
+# libssh2 at revision 9662c96 with fuzzer changes on top.
+RUN git clone --depth 1 -b cmeister2/ossfuzz_9662c96 https://github.com/cmeister2/libssh2.git /src/libssh2
 
 WORKDIR $SRC/libssh2
 COPY build.sh $SRC/
diff --git a/projects/libssh2/project.yaml b/projects/libssh2/project.yaml
index 44fb3a4..52a049e 100644
--- a/projects/libssh2/project.yaml
+++ b/projects/libssh2/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://github.com/libssh2/libssh2"
-language: c++
 primary_contact: "will.cosgrove@gmail.com"
 auto_ccs:
   - "cmeister2@gmail.com"
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/libssh2/libssh2.git'
diff --git a/projects/libtasn1/Dockerfile b/projects/libtasn1/Dockerfile
index e09b338..f6342e1 100644
--- a/projects/libtasn1/Dockerfile
+++ b/projects/libtasn1/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rockdaboot@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool bison
 
 RUN git clone git://git.savannah.gnu.org/gnulib.git
diff --git a/projects/libtasn1/project.yaml b/projects/libtasn1/project.yaml
index 9380ae9..a502728 100644
--- a/projects/libtasn1/project.yaml
+++ b/projects/libtasn1/project.yaml
@@ -1,19 +1,9 @@
 homepage: "https://gitlab.com/gnutls/libtasn1"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
-  - "dbaryshkov@gmail.com"
-  - "ueno@gnu.org"
   - "n.mavrogiannopoulos@gmail.com"
   - "simon@josefsson.org"
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
   - memory
   - undefined
-  - dataflow
-main_repo: 'https://gitlab.com/gnutls/libtasn1.git'
diff --git a/projects/libteken/Dockerfile b/projects/libteken/Dockerfile
index c8c6f0e..8eb252f 100644
--- a/projects/libteken/Dockerfile
+++ b/projects/libteken/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcwu@csie.org
 RUN apt-get update && apt-get install -y pmake
 RUN svn co https://svn.freebsd.org/base/head/sys/teken libteken
 WORKDIR libteken
diff --git a/projects/libteken/project.yaml b/projects/libteken/project.yaml
index 8160b85..3f3564c 100644
--- a/projects/libteken/project.yaml
+++ b/projects/libteken/project.yaml
@@ -1,13 +1,6 @@
 homepage: "http://svn.freebsd.org/base/head/sys/teken/"
-language: c++
 primary_contact: "ed@nuxi.nl"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
+  - undefined
diff --git a/projects/libtheora/Dockerfile b/projects/libtheora/Dockerfile
index 4736474..abf8782 100644
--- a/projects/libtheora/Dockerfile
+++ b/projects/libtheora/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/ogg.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/theora.git libtheora
+RUN git clone --depth 1 https://github.com/xiph/ogg.git
+RUN git clone --depth 1 git://git.xiph.org/theora.git libtheora
 RUN git clone --depth 1 https://github.com/guidovranken/oss-fuzz-fuzzers.git
 RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
 COPY build.sh $SRC/
diff --git a/projects/libtheora/project.yaml b/projects/libtheora/project.yaml
index 75dbb5f..f6afef2 100644
--- a/projects/libtheora/project.yaml
+++ b/projects/libtheora/project.yaml
@@ -1,13 +1,14 @@
 homepage: "https://www.theora.org/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 vendor_ccs:
+ - "cdiehl@mozilla.com"
  - "daede003@umn.edu"
  - "twsmith@mozilla.com"
 sanitizers:
  - address
  - undefined
  - memory
+ - dataflow
 architectures:
  - x86_64
  - i386
diff --git a/projects/libtiff/Dockerfile b/projects/libtiff/Dockerfile
index b6c5fd8..74f0c6a 100644
--- a/projects/libtiff/Dockerfile
+++ b/projects/libtiff/Dockerfile
@@ -15,12 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER paul.l.kehrer@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake nasm
 RUN git clone --depth 1 https://gitlab.com/libtiff/libtiff
 RUN git clone --depth 1 https://github.com/madler/zlib
 RUN git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo
 RUN git clone https://www.cl.cam.ac.uk/~mgk25/git/jbigkit
-ADD https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz afl_testcases.tgz
+ADD http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz afl_testcases.tgz
 ADD https://raw.githubusercontent.com/google/AFL/debe27037b9444bbf090a0ffbd5d24889bb887ae/dictionaries/tiff.dict tiff.dict
 WORKDIR libtiff
 COPY build.sh $SRC/
diff --git a/projects/libtiff/project.yaml b/projects/libtiff/project.yaml
index 6c7666b..2580ddb 100644
--- a/projects/libtiff/project.yaml
+++ b/projects/libtiff/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.libtiff.org"
-language: c++
 primary_contact: "even.rouault@gmail.com"
 auto_ccs:
   - paul.l.kehrer@gmail.com
@@ -10,4 +9,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://gitlab.com/libtiff/libtiff'
diff --git a/projects/libtorrent/Dockerfile b/projects/libtorrent/Dockerfile
index 566b8b4..121226e 100644
--- a/projects/libtorrent/Dockerfile
+++ b/projects/libtorrent/Dockerfile
@@ -15,11 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER arvid@libtorrent.org
 RUN apt-get update && apt-get install -y wget libssl-dev
 
-RUN git clone --depth 1 --single-branch --branch boost-1.73.0 --recurse-submodules https://github.com/boostorg/boost.git
+RUN wget --no-verbose https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz
+RUN tar xzf boost_1_69_0.tar.gz
 
-RUN git clone --depth 1 --single-branch --branch RC_2_0 --recurse-submodules https://github.com/arvidn/libtorrent.git
+RUN git clone --depth 1 --single-branch --branch RC_1_2 --recurse-submodules https://github.com/arvidn/libtorrent.git
 WORKDIR libtorrent
 COPY build.sh $SRC/
 
diff --git a/projects/libtorrent/build.sh b/projects/libtorrent/build.sh
index 7741f28..2dd444c 100755
--- a/projects/libtorrent/build.sh
+++ b/projects/libtorrent/build.sh
@@ -15,12 +15,11 @@
 #
 ################################################################################
 
-export PATH=${PATH}:${PWD}/../boost
-export BOOST_ROOT=${PWD}/../boost
-export BOOST_BUILD_PATH=${PWD}/../boost/tools/build
-# when building b2, we don't want sanitizers enabled
-ASAN_OPTIONS=detect_leaks=0
-(cd ${PWD}/../boost && ./bootstrap.sh && ./b2 headers)
+export PATH=${PATH}:${PWD}/../boost_1_69_0/tools/build/src/engine/bin.linuxx86_64
+export BOOST_ROOT=${PWD}/../boost_1_69_0
+export BOOST_BUILD_PATH=${PWD}/../boost_1_69_0/tools/build
+
+(cd ${PWD}/../boost_1_69_0 && ./bootstrap.sh)
 
 echo "CXX=$CXX"
 echo "CXXFLAGS=$CXXFLAGS"
@@ -28,11 +27,10 @@
 echo "using clang : ossfuzz : $CXX : <compileflags>\"$CXXFLAGS\" <linkflags>\"$CXXFLAGS\" <linkflags>\"${LIB_FUZZING_ENGINE}\" ;" >project-config.jam
 cat project-config.jam
 cd fuzzers
-# we don't want sanitizers enabled on b2 itself
-ASAN_OPTIONS=detect_leaks=0 b2 clang-ossfuzz -j$(nproc) crypto=openssl fuzz=external sanitize=off stage-large logging=off
+b2 clang-ossfuzz -j$(nproc) crypto=openssl fuzz=external sanitize=off stage-large
 cp fuzzers/* $OUT
 
-wget --no-verbose https://github.com/arvidn/libtorrent/releases/download/2.0/corpus.zip
+wget --no-verbose https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_2_1/corpus.zip
 unzip -q corpus.zip
 cd corpus
 for f in *; do
diff --git a/projects/libtorrent/project.yaml b/projects/libtorrent/project.yaml
index 7fc3c83..6f03c2b 100644
--- a/projects/libtorrent/project.yaml
+++ b/projects/libtorrent/project.yaml
@@ -1,7 +1,6 @@
 homepage: "https://github.com/arvidn/libtorrent.git"
-language: c++
 primary_contact: "pauldreikossfuzz@gmail.com"
 auto_ccs:
  - "oss-fuzz-libtorrent@pauldreik.se"
  - "arvid.norberg@gmail.com"
-main_repo: 'https://github.com/arvidn/libtorrent.git'
+
diff --git a/projects/libtpms/Dockerfile b/projects/libtpms/Dockerfile
index 50496fe..f1b1872 100644
--- a/projects/libtpms/Dockerfile
+++ b/projects/libtpms/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER marcandre.lureau@redhat.com
 RUN \
         apt-get update && \
         apt-get install -y \
diff --git a/projects/libtpms/project.yaml b/projects/libtpms/project.yaml
index b2b0853..b931c10 100644
--- a/projects/libtpms/project.yaml
+++ b/projects/libtpms/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://github.com/stefanberger/libtpms"
-language: c++
 primary_contact: "stefanb@us.ibm.com"
 auto_ccs:
   - "mlureau@redhat.com"
-main_repo: 'https://github.com/stefanberger/libtpms'
diff --git a/projects/libtsm/Dockerfile b/projects/libtsm/Dockerfile
index f0889fd..7b162ea 100644
--- a/projects/libtsm/Dockerfile
+++ b/projects/libtsm/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcwu@csie.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
 
 RUN git clone --depth 1 git://people.freedesktop.org/~dvdhrm/libtsm
diff --git a/projects/libtsm/project.yaml b/projects/libtsm/project.yaml
index 8dc1dd8..9a91cf6 100644
--- a/projects/libtsm/project.yaml
+++ b/projects/libtsm/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://www.freedesktop.org/wiki/Software/kmscon/libtsm/"
-language: c++
 primary_contact: "dh.herrmann@gmail.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'git://people.freedesktop.org/~dvdhrm/libtsm'
diff --git a/projects/libucl/Dockerfile b/projects/libucl/Dockerfile
deleted file mode 100644
index 7824ad6..0000000
--- a/projects/libucl/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake autoconf pkg-config libtool
-RUN git clone https://github.com/vstakhov/libucl
-
-WORKDIR $SRC
-
-COPY build.sh $SRC/
-COPY ucl_add_string_fuzzer.options $SRC/ucl_add_string_fuzzer.options
diff --git a/projects/libucl/build.sh b/projects/libucl/build.sh
deleted file mode 100644
index e5589dd..0000000
--- a/projects/libucl/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cp $SRC/ucl_add_string_fuzzer.options $OUT/
-
-cd libucl 
-./autogen.sh && ./configure
-make
-
-$CC $CFLAGS $LIB_FUZZING_ENGINE tests/fuzzers/ucl_add_string_fuzzer.c \
-    -DHAVE_CONFIG_H -I./src -I./include src/.libs/libucl.a -I./ \
-    -o $OUT/ucl_add_string_fuzzer
diff --git a/projects/libucl/project.yaml b/projects/libucl/project.yaml
deleted file mode 100644
index 8a5dd20..0000000
--- a/projects/libucl/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/vstakhov/libucl"
-primary_contact: "vsevolod@highsecure.ru"
-auto_ccs:
-  - "adam@adalogics.com"
-language: c
-main_repo: 'https://github.com/vstakhov/libucl'
diff --git a/projects/libucl/ucl_add_string_fuzzer.options b/projects/libucl/ucl_add_string_fuzzer.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/libucl/ucl_add_string_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/libusb/Dockerfile b/projects/libusb/Dockerfile
deleted file mode 100644
index ee3e490..0000000
--- a/projects/libusb/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool libudev-dev
-RUN git clone --depth 1 https://github.com/libusb/libusb libusb
-WORKDIR libusb
-COPY build.sh *.cc $SRC/
diff --git a/projects/libusb/build.sh b/projects/libusb/build.sh
deleted file mode 100755
index 281aa6e..0000000
--- a/projects/libusb/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-./autogen.sh
-./configure
-make -j$(nproc) all
-
-# build fuzzer
-for fuzzer in $(find $SRC -name '*_fuzzer.cc'); do
-    fuzzer_basename=$(basename -s .cc $fuzzer)
-    $CXX $CXXFLAGS -std=c++11 -I. \
-    $fuzzer $LIB_FUZZING_ENGINE ./libusb/.libs/libusb-1.0.a \
-    -lpthread -ludev \
-    -o $OUT/$fuzzer_basename
-done
diff --git a/projects/libusb/libusb_fuzzer.cc b/projects/libusb/libusb_fuzzer.cc
deleted file mode 100644
index 8e543a7..0000000
--- a/projects/libusb/libusb_fuzzer.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include <algorithm>
-#include <cstddef>
-#include <cstdint>
-
-#include "libusb/libusb.h"
-#include "libusb/libusbi.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  struct libusb_transfer *transfer;
-  FuzzedDataProvider stream(data, size);
-  uint8_t bmRequestType = stream.ConsumeIntegral<uint8_t>();
-  uint8_t bRequest = stream.ConsumeIntegral<uint8_t>();
-  uint16_t wValue = stream.ConsumeIntegral<uint16_t>();
-  uint16_t wIndex = stream.ConsumeIntegral<uint16_t>();
-  uint16_t wLength = stream.ConsumeIntegral<uint16_t>();
-  std::vector<char> data_ = stream.ConsumeRemainingBytes<char>();
-  unsigned char* buffer = reinterpret_cast<unsigned char*>(data_.data());
-
-  transfer = libusb_alloc_transfer(0);
-  if (!transfer) {
-    return LIBUSB_ERROR_NO_MEM;
-  }
-
-  if (!buffer) {
-    libusb_free_transfer(transfer);
-    return LIBUSB_ERROR_NO_MEM;
-  }
-
-  libusb_fill_control_setup(
-    buffer, bmRequestType, bRequest, wValue, wIndex, wLength);
-
-  libusb_free_transfer(transfer);
-  return 0;
-}
diff --git a/projects/libusb/project.yaml b/projects/libusb/project.yaml
deleted file mode 100644
index fc08e06..0000000
--- a/projects/libusb/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "http://libusb.info/"
-language: c++
-primary_contact: "christopher.a.dickens@gmail.com"
-auto_ccs:
-  - "hjelmn@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
-  - x86_64
-main_repo: 'https://github.com/libusb/libusb'
diff --git a/projects/libvips/Dockerfile b/projects/libvips/Dockerfile
index e792dff..cca27ef 100644
--- a/projects/libvips/Dockerfile
+++ b/projects/libvips/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER oscar.mira@adevinta.com
 RUN apt-get update && apt-get install -y \
   curl \
   automake \
@@ -25,10 +26,9 @@
   libfftw3-dev \
   libexpat1-dev \
   libffi-dev \
-  libselinux1-dev \
   glib2.0-dev
 RUN mkdir afl-testcases
-RUN curl https://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar xzC afl-testcases
+RUN curl http://lcamtuf.coredump.cx/afl/demo/afl_testcases.tgz | tar xzC afl-testcases
 RUN git clone --depth 1 https://github.com/libvips/libvips
 RUN git clone --depth 1 https://github.com/madler/zlib.git
 RUN git clone --depth 1 https://github.com/libexif/libexif
@@ -37,8 +37,5 @@
 RUN git clone --depth 1 https://git.code.sf.net/p/giflib/code libgif
 RUN git clone --depth 1 https://chromium.googlesource.com/webm/libwebp
 RUN git clone --depth 1 https://gitlab.com/libtiff/libtiff 
-RUN git clone --depth 1 https://aomedia.googlesource.com/aom
-RUN git clone --depth 1 https://github.com/strukturag/libheif
-
 WORKDIR libvips
 COPY build.sh $SRC/
diff --git a/projects/libvips/build.sh b/projects/libvips/build.sh
index 21505d6..ac61c7b 100755
--- a/projects/libvips/build.sh
+++ b/projects/libvips/build.sh
@@ -16,7 +16,6 @@
 ################################################################################
 
 export PKG_CONFIG_PATH=/work/lib/pkgconfig
-export LDFLAGS="$CXXFLAGS"
 
 # libz
 pushd $SRC/zlib
@@ -37,41 +36,6 @@
 make install
 popd
 
-# aom
-pushd $SRC/aom
-mkdir -p build/linux
-cd build/linux
-cmake -G "Unix Makefiles" \
-  -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \
-  -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-  -DCMAKE_INSTALL_PREFIX=$WORK -DCMAKE_INSTALL_LIBDIR=lib \
-  -DENABLE_SHARED:bool=off -DCONFIG_PIC=1 \
-  -DENABLE_EXAMPLES=0 -DENABLE_DOCS=0 -DENABLE_TESTS=0 \
-  -DCONFIG_SIZE_LIMIT=1 \
-  -DDECODE_HEIGHT_LIMIT=12288 -DDECODE_WIDTH_LIMIT=12288 \
-  -DDO_RANGE_CHECK_CLAMP=1 \
-  -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
-  -DAOM_TARGET_CPU=generic \
-  ../../
-make clean
-make -j$(nproc)
-make install
-popd
-
-# libheif
-pushd $SRC/libheif
-autoreconf -fi
-./configure \
-  --disable-shared \
-  --enable-static \
-  --disable-examples \
-  --disable-go \
-  --prefix=$WORK
-make clean
-make -j$(nproc)
-make install
-popd
-
 # libjpeg-turbo
 pushd $SRC/libjpeg-turbo
 cmake . -DCMAKE_INSTALL_PREFIX=$WORK -DENABLE_STATIC:bool=on
@@ -164,12 +128,9 @@
     $WORK/lib/libwebpdemux.a \
     $WORK/lib/libwebp.a \
     $WORK/lib/libtiff.a \
-    $WORK/lib/libheif.a \
-    $WORK/lib/libaom.a \
     $LIB_FUZZING_ENGINE \
     -Wl,-Bstatic \
-    -lfftw3 -lgmodule-2.0 -lgio-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lpcre -lexpat \
-    -lresolv -lsepol -lselinux \
+    -lfftw3 -lgmodule-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lpcre -lexpat \
     -Wl,-Bdynamic -pthread
   ln -sf "seed_corpus.zip" "$OUT/${target}_seed_corpus.zip"
 done
diff --git a/projects/libvips/project.yaml b/projects/libvips/project.yaml
index d4b27f8..8b4908c 100644
--- a/projects/libvips/project.yaml
+++ b/projects/libvips/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://github.com/libvips/libvips"
-language: c++
 primary_contact: "jcupitt@gmail.com"
 auto_ccs:
   - "oscar.mira@adevinta.com"
   - "kleisauke@gmail.com"
   - "lovell.fuller@gmail.com"
-main_repo: 'https://github.com/libvips/libvips'
diff --git a/projects/libvpx/Dockerfile b/projects/libvpx/Dockerfile
index a75dc13..262848d 100644
--- a/projects/libvpx/Dockerfile
+++ b/projects/libvpx/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jzern@google.com
 RUN apt-get update && apt-get install -y yasm wget gcc
 RUN git clone https://chromium.googlesource.com/webm/libvpx
 ADD https://storage.googleapis.com/downloads.webmproject.org/test_data/fuzzer/vpx_fuzzer_seed_corpus.zip $SRC/
diff --git a/projects/libvpx/build.sh b/projects/libvpx/build.sh
index 15d9ea9..3f6559d 100755
--- a/projects/libvpx/build.sh
+++ b/projects/libvpx/build.sh
@@ -31,7 +31,6 @@
 fi
 
 LDFLAGS="$CXXFLAGS" LD=$CXX $SRC/libvpx/configure \
-    --enable-vp9-highbitdepth \
     --disable-unit-tests \
     --disable-examples \
     --size-limit=12288x12288 \
diff --git a/projects/libvpx/project.yaml b/projects/libvpx/project.yaml
index e6080bd..4e97b0c 100644
--- a/projects/libvpx/project.yaml
+++ b/projects/libvpx/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.webmproject.org"
-language: c++
 primary_contact: "jzern@google.com"
 sanitizers:
 - address
@@ -9,5 +8,4 @@
 - jzern@google.com
 - johannkoenig@google.com
 vendor_ccs:
-- twsmith@mozilla.com
-main_repo: 'https://chromium.googlesource.com/webm/libvpx'
+- cdiehl@mozilla.com
diff --git a/projects/libwebp/Dockerfile b/projects/libwebp/Dockerfile
index 4d91634..233ffbb 100644
--- a/projects/libwebp/Dockerfile
+++ b/projects/libwebp/Dockerfile
@@ -15,11 +15,19 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER yguyon@google.com
 RUN apt-get update && apt-get install -y autoconf make libtool zip
 RUN git clone https://chromium.googlesource.com/webm/libwebp
 RUN git clone https://chromium.googlesource.com/webm/libwebp-test-data
 ADD https://storage.googleapis.com/downloads.webmproject.org/webp/testdata/fuzzer/fuzz_seed_corpus.zip $SRC/
 RUN unzip fuzz_seed_corpus.zip -d libwebp-test-data/
 RUN rm fuzz_seed_corpus.zip
-COPY build.sh $SRC/
+COPY build.sh fuzz.h fuzz.dict $SRC/
+COPY img_alpha.h img_grid.h img_peak.h $SRC/
+COPY fuzz_simple_api.c $SRC/
+COPY fuzz_advanced_api.c $SRC/
+COPY fuzz_animation_api.c $SRC/
+COPY fuzz_webp_animencoder.cc $SRC/
+COPY fuzz_demux_api.c $SRC/
+COPY fuzz_webp_enc_dec.cc $SRC/
 WORKDIR libwebp
diff --git a/projects/libwebp/build.sh b/projects/libwebp/build.sh
index 7af96b8..d9ea7a3 100644
--- a/projects/libwebp/build.sh
+++ b/projects/libwebp/build.sh
@@ -34,38 +34,51 @@
 find $SRC/libwebp-test-data -type f -size -32k -iname "*.webp" \
   -exec zip -qju fuzz_seed_corpus.zip "{}" \;
 
-webp_libs=(
-  src/demux/.libs/libwebpdemux.a
-  src/mux/.libs/libwebpmux.a
+# Simple Decoding API
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_simple_api.c
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_simple_api.o -o $OUT/fuzz_simple_api \
   src/.libs/libwebp.a
-  imageio/.libs/libimageio_util.a
-)
-webp_c_fuzzers=(
-  advanced_api_fuzzer
-  animation_api_fuzzer
-  mux_demux_api_fuzzer
-  simple_api_fuzzer
-)
-webp_cxx_fuzzers=(
-  animdecoder_fuzzer
-  animencoder_fuzzer
-  enc_dec_fuzzer
-)
+cp fuzz_seed_corpus.zip $OUT/fuzz_simple_api_seed_corpus.zip
+cp $SRC/fuzz.dict $OUT/fuzz_simple_api.dict
 
-for fuzzer in "${webp_c_fuzzers[@]}"; do
-  $CC $CFLAGS -Isrc -I. tests/fuzzer/${fuzzer}.c -c -o tests/fuzzer/${fuzzer}.o
-  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
-    tests/fuzzer/${fuzzer}.o -o $OUT/${fuzzer} \
-    "${webp_libs[@]}"
-done
+# Advanced Decoding API
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_advanced_api.c
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_advanced_api.o -o $OUT/fuzz_advanced_api \
+  src/.libs/libwebp.a
+cp fuzz_seed_corpus.zip $OUT/fuzz_advanced_api_seed_corpus.zip
+cp $SRC/fuzz.dict $OUT/fuzz_advanced_api.dict
 
-for fuzzer in "${webp_cxx_fuzzers[@]}"; do
-  $CXX $CXXFLAGS -Isrc -I. $LIB_FUZZING_ENGINE \
-    tests/fuzzer/${fuzzer}.cc -o $OUT/${fuzzer} \
-    "${webp_libs[@]}"
-done
+# Animation Decoding API
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_animation_api.c
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_animation_api.o -o $OUT/fuzz_animation_api \
+  src/demux/.libs/libwebpdemux.a \
+  src/.libs/libwebp.a
+cp fuzz_seed_corpus.zip $OUT/fuzz_animation_api_seed_corpus.zip
+cp $SRC/fuzz.dict $OUT/fuzz_animation_api.dict
 
-for fuzzer in "${webp_c_fuzzers[@]}" "${webp_cxx_fuzzers[@]}"; do
-  cp fuzz_seed_corpus.zip $OUT/${fuzzer}_seed_corpus.zip
-  cp tests/fuzzer/fuzz.dict $OUT/${fuzzer}.dict
-done
+# Animation Encoding API
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_webp_animencoder.cc
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_webp_animencoder.o -o $OUT/fuzz_webp_animencoder \
+  src/mux/.libs/libwebpmux.a \
+  src/.libs/libwebp.a
+cp fuzz_seed_corpus.zip $OUT/fuzz_webp_animencoder_seed_corpus.zip
+
+# (De)mux API
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_demux_api.c
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_demux_api.o -o $OUT/fuzz_demux_api \
+  src/demux/.libs/libwebpdemux.a src/mux/.libs/libwebpmux.a \
+  src/.libs/libwebp.a
+cp fuzz_seed_corpus.zip $OUT/fuzz_demux_api_seed_corpus.zip
+cp $SRC/fuzz.dict $OUT/fuzz_demux_api.dict
+
+# Encode then Decode
+$CC $CFLAGS -Isrc -I. -c $SRC/fuzz_webp_enc_dec.cc
+$CXX $CXXFLAGS $LIB_FUZZING_ENGINE \
+  fuzz_webp_enc_dec.o -o $OUT/fuzz_webp_enc_dec \
+  src/.libs/libwebp.a
+cp fuzz_seed_corpus.zip $OUT/fuzz_webp_enc_dec_seed_corpus.zip
diff --git a/projects/libwebp/fuzz.dict b/projects/libwebp/fuzz.dict
new file mode 100644
index 0000000..627c72e
--- /dev/null
+++ b/projects/libwebp/fuzz.dict
@@ -0,0 +1,17 @@
+# https://developers.google.com/speed/webp/docs/riff_container
+
+# FourCC
+"ALPH"
+"ANIM"
+"ANMF"
+"EXIF"
+"ICCP"
+"RIFF"
+"VP8 "
+"VP8L"
+"VP8X"
+"WEBP"
+"XMP "
+
+# VP8 signature
+"\x9D\x01\x2A"
diff --git a/projects/libwebp/fuzz.h b/projects/libwebp/fuzz.h
new file mode 100644
index 0000000..408211f
--- /dev/null
+++ b/projects/libwebp/fuzz.h
@@ -0,0 +1,190 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "dsp/dsp.h"
+#include "img_alpha.h"
+#include "img_grid.h"
+#include "img_peak.h"
+#include "webp/encode.h"
+
+//------------------------------------------------------------------------------
+// Arbitrary limits to prevent OOM, timeout, or slow execution.
+//
+// The decoded image size, and for animations additionally the canvas size.
+static const size_t kFuzzPxLimit = 1024 * 1024;
+// Demuxed or decoded animation frames.
+static const int kFuzzFrameLimit = 3;
+
+// Reads and sums (up to) 128 spread-out bytes.
+uint8_t FuzzHash(const uint8_t* const data, size_t size) {
+  uint8_t value = 0;
+  size_t incr = size / 128;
+  if (!incr) incr = 1;
+  for (size_t i = 0; i < size; i += incr) value += data[i];
+  return value;
+}
+
+//------------------------------------------------------------------------------
+// Extract an integer in [0, max_value].
+
+static uint32_t Extract(uint32_t max_value, const uint8_t data[], size_t size,
+                        uint32_t* const bit_pos) {
+  uint32_t v = 0;
+  int range = 1;
+  while (*bit_pos < 8 * size && range <= max_value) {
+    const uint8_t mask = 1u << (*bit_pos & 7);
+    v = (v << 1) | !!(data[*bit_pos >> 3] & mask);
+    range <<= 1;
+    ++*bit_pos;
+  }
+  return v % (max_value + 1);
+}
+
+//------------------------------------------------------------------------------
+// Some functions to override VP8GetCPUInfo and disable some optimizations.
+
+static VP8CPUInfo GetCPUInfo;
+
+static int GetCPUInfoNoSSE41(CPUFeature feature) {
+  if (feature == kSSE4_1 || feature == kAVX) return 0;
+  return GetCPUInfo(feature);
+}
+
+static int GetCPUInfoNoAVX(CPUFeature feature) {
+  if (feature == kAVX) return 0;
+  return GetCPUInfo(feature);
+}
+
+static int GetCPUInfoForceSlowSSSE3(CPUFeature feature) {
+  if (feature == kSlowSSSE3 && GetCPUInfo(kSSE3)) {
+    return 1;  // we have SSE3 -> force SlowSSSE3
+  }
+  return GetCPUInfo(feature);
+}
+
+static int GetCPUInfoOnlyC(CPUFeature feature) { return 0; }
+
+static void ExtractAndDisableOptimizations(VP8CPUInfo default_VP8GetCPUInfo,
+                                           const uint8_t data[], size_t size,
+                                           uint32_t* const bit_pos) {
+  GetCPUInfo = default_VP8GetCPUInfo;
+  const VP8CPUInfo kVP8CPUInfos[5] = {GetCPUInfoOnlyC, GetCPUInfoForceSlowSSSE3,
+                                      GetCPUInfoNoSSE41, GetCPUInfoNoAVX,
+                                      GetCPUInfo};
+  int VP8GetCPUInfo_index = Extract(4, data, size, bit_pos);
+  VP8GetCPUInfo = kVP8CPUInfos[VP8GetCPUInfo_index];
+}
+
+//------------------------------------------------------------------------------
+
+static int ExtractWebPConfig(WebPConfig* const config, const uint8_t data[],
+                             size_t size, uint32_t* const bit_pos) {
+  if (config == NULL || !WebPConfigInit(config)) return 0;
+  config->lossless = Extract(1, data, size, bit_pos);
+  config->quality = Extract(100, data, size, bit_pos);
+  config->method = Extract(6, data, size, bit_pos);
+  config->image_hint =
+      (WebPImageHint)Extract(WEBP_HINT_LAST - 1, data, size, bit_pos);
+  config->segments = 1 + Extract(3, data, size, bit_pos);
+  config->sns_strength = Extract(100, data, size, bit_pos);
+  config->filter_strength = Extract(100, data, size, bit_pos);
+  config->filter_sharpness = Extract(7, data, size, bit_pos);
+  config->filter_type = Extract(1, data, size, bit_pos);
+  config->autofilter = Extract(1, data, size, bit_pos);
+  config->alpha_compression = Extract(1, data, size, bit_pos);
+  config->alpha_filtering = Extract(2, data, size, bit_pos);
+  config->alpha_quality = Extract(100, data, size, bit_pos);
+  config->pass = 1 + Extract(9, data, size, bit_pos);
+  config->show_compressed = 1;
+  config->preprocessing = Extract(2, data, size, bit_pos);
+  config->partitions = Extract(3, data, size, bit_pos);
+  config->partition_limit = 10 * Extract(10, data, size, bit_pos);
+  config->emulate_jpeg_size = Extract(1, data, size, bit_pos);
+  config->thread_level = Extract(1, data, size, bit_pos);
+  config->low_memory = Extract(1, data, size, bit_pos);
+  config->near_lossless = 20 * Extract(5, data, size, bit_pos);
+  config->exact = Extract(1, data, size, bit_pos);
+  config->use_delta_palette = Extract(1, data, size, bit_pos);
+  config->use_sharp_yuv = Extract(1, data, size, bit_pos);
+  return WebPValidateConfig(config);
+}
+
+//------------------------------------------------------------------------------
+
+static int ExtractSourcePicture(WebPPicture* const pic,
+                                const uint8_t data[], size_t size,
+                                uint32_t* const bit_pos) {
+  if (pic == NULL) return 0;
+
+  // Pick a source picture.
+  const uint8_t* kImagesData[] = {
+      kImgAlphaData,
+      kImgGridData,
+      kImgPeakData
+  };
+  const int kImagesWidth[] = {
+      kImgAlphaWidth,
+      kImgGridWidth,
+      kImgPeakWidth
+  };
+  const int kImagesHeight[] = {
+      kImgAlphaHeight,
+      kImgGridHeight,
+      kImgPeakHeight
+  };
+  const size_t kNbImages = sizeof(kImagesData) / sizeof(kImagesData[0]);
+  const size_t image_index = Extract(kNbImages - 1, data, size, bit_pos);
+  const uint8_t* const image_data = kImagesData[image_index];
+  pic->width = kImagesWidth[image_index];
+  pic->height = kImagesHeight[image_index];
+  pic->argb_stride = pic->width * 4 * sizeof(uint8_t);
+
+  // Read the bytes.
+  return WebPPictureImportRGBA(pic, image_data, pic->argb_stride);
+}
+
+//------------------------------------------------------------------------------
+
+static int max(int a, int b) { return ((a < b) ? b : a); }
+
+static int ExtractAndCropOrScale(WebPPicture* const pic, const uint8_t data[],
+                                 size_t size, uint32_t* const bit_pos) {
+  if (pic == NULL) return 0;
+  const int alter_input = Extract(1, data, size, bit_pos);
+  const int crop_or_scale = Extract(1, data, size, bit_pos);
+  const int width_ratio = 1 + Extract(7, data, size, bit_pos);
+  const int height_ratio = 1 + Extract(7, data, size, bit_pos);
+  if (alter_input) {
+    if (crop_or_scale) {
+      const uint32_t left_ratio = 1 + Extract(7, data, size, bit_pos);
+      const uint32_t top_ratio = 1 + Extract(7, data, size, bit_pos);
+      const int cropped_width = max(1, pic->width / width_ratio);
+      const int cropped_height = max(1, pic->height / height_ratio);
+      const int cropped_left = (pic->width - cropped_width) / left_ratio;
+      const int cropped_top = (pic->height - cropped_height) / top_ratio;
+      return WebPPictureCrop(pic, cropped_left, cropped_top, cropped_width,
+                             cropped_height);
+    } else {
+      const int scaled_width = 1 + (pic->width * width_ratio) / 8;
+      const int scaled_height = 1 + (pic->height * height_ratio) / 8;
+      return WebPPictureRescale(pic, scaled_width, scaled_height);
+    }
+  }
+  return 1;
+}
diff --git a/projects/libwebp/fuzz_advanced_api.c b/projects/libwebp/fuzz_advanced_api.c
new file mode 100644
index 0000000..4e2e2e2
--- /dev/null
+++ b/projects/libwebp/fuzz_advanced_api.c
@@ -0,0 +1,91 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "fuzz.h"
+#include "webp/decode.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  WebPDecoderConfig config;
+  if (!WebPInitDecoderConfig(&config)) return 0;
+  if (WebPGetFeatures(data, size, &config.input) != VP8_STATUS_OK) return 0;
+  if ((size_t)config.input.width * config.input.height > kFuzzPxLimit) return 0;
+
+  // Using two independent criteria ensures that all combinations of options
+  // can reach each path at the decoding stage, with meaningful differences.
+
+  const uint8_t value = FuzzHash(data, size);
+  const float factor = value / 255.f;  // 0-1
+
+  config.options.flip = value & 1;
+  config.options.bypass_filtering = value & 2;
+  config.options.no_fancy_upsampling = value & 4;
+  config.options.use_threads = value & 8;
+  if (size & 1) {
+    config.options.use_cropping = 1;
+    config.options.crop_width = (int)(config.input.width * (1 - factor));
+    config.options.crop_height = (int)(config.input.height * (1 - factor));
+    config.options.crop_left = config.input.width - config.options.crop_width;
+    config.options.crop_top = config.input.height - config.options.crop_height;
+  }
+  if (size & 2) {
+    int strength = (int)(factor * 100);
+    config.options.dithering_strength = strength;
+    config.options.alpha_dithering_strength = 100 - strength;
+  }
+  if (size & 4) {
+    config.options.use_scaling = 1;
+    config.options.scaled_width = (int)(config.input.width * factor * 2);
+    config.options.scaled_height = (int)(config.input.height * factor * 2);
+  }
+
+  config.output.colorspace = (WEBP_CSP_MODE)(value % MODE_LAST);
+
+  if (size % 3) {
+    // Decodes incrementally in chunks of increasing size.
+    WebPIDecoder* idec = WebPIDecode(NULL, 0, &config);
+    if (!idec) return 0;
+    VP8StatusCode status;
+    if (size & 8) {
+      size_t available_size = value + 1;
+      while (1) {
+        if (available_size > size) available_size = size;
+        status = WebPIUpdate(idec, data, available_size);
+        if (status != VP8_STATUS_SUSPENDED || available_size == size) break;
+        available_size *= 2;
+      }
+    } else {
+      // WebPIAppend expects new data and its size with each call.
+      // Implemented here by simply advancing the pointer into data.
+      const uint8_t* new_data = data;
+      size_t new_size = value + 1;
+      while (1) {
+        if (new_data + new_size > data + size) {
+          new_size = data + size - new_data;
+        }
+        status = WebPIAppend(idec, new_data, new_size);
+        if (status != VP8_STATUS_SUSPENDED || new_size == 0) break;
+        new_data += new_size;
+        new_size *= 2;
+      }
+    }
+    WebPIDelete(idec);
+  } else {
+    WebPDecode(data, size, &config);
+  }
+
+  WebPFreeDecBuffer(&config.output);
+  return 0;
+}
diff --git a/projects/libwebp/fuzz_animation_api.c b/projects/libwebp/fuzz_animation_api.c
new file mode 100644
index 0000000..ea75e08
--- /dev/null
+++ b/projects/libwebp/fuzz_animation_api.c
@@ -0,0 +1,78 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "fuzz.h"
+#include "webp/decode.h"
+#include "webp/demux.h"
+#include "webp/mux_types.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  WebPData webp_data;
+  WebPDataInit(&webp_data);
+  webp_data.size = size;
+  webp_data.bytes = data;
+
+  // WebPAnimDecoderNew uses WebPDemux internally to calloc canvas size.
+  WebPDemuxer* const demux = WebPDemux(&webp_data);
+  if (!demux) return 0;
+  const uint32_t cw = WebPDemuxGetI(demux, WEBP_FF_CANVAS_WIDTH);
+  const uint32_t ch = WebPDemuxGetI(demux, WEBP_FF_CANVAS_HEIGHT);
+  if ((size_t)cw * ch > kFuzzPxLimit) {
+    WebPDemuxDelete(demux);
+    return 0;
+  }
+
+  // In addition to canvas size, check each frame separately.
+  WebPIterator iter;
+  for (int i = 0; i < kFuzzFrameLimit; i++) {
+    if (!WebPDemuxGetFrame(demux, i + 1, &iter)) break;
+    int w, h;
+    if (WebPGetInfo(iter.fragment.bytes, iter.fragment.size, &w, &h)) {
+      if ((size_t)w * h > kFuzzPxLimit) {  // image size of the frame payload
+        WebPDemuxReleaseIterator(&iter);
+        WebPDemuxDelete(demux);
+        return 0;
+      }
+    }
+  }
+
+  WebPDemuxReleaseIterator(&iter);
+  WebPDemuxDelete(demux);
+
+  WebPAnimDecoderOptions dec_options;
+  if (!WebPAnimDecoderOptionsInit(&dec_options)) return 0;
+
+  dec_options.use_threads = size & 1;
+  // Animations only support 4 (of 12) modes.
+  dec_options.color_mode = (WEBP_CSP_MODE)(size % MODE_LAST);
+  if (dec_options.color_mode != MODE_BGRA &&
+      dec_options.color_mode != MODE_rgbA &&
+      dec_options.color_mode != MODE_bgrA) {
+    dec_options.color_mode = MODE_RGBA;
+  }
+
+  WebPAnimDecoder* dec = WebPAnimDecoderNew(&webp_data, &dec_options);
+  if (!dec) return 0;
+
+  for (int i = 0; i < kFuzzFrameLimit; i++) {
+    uint8_t* buf;
+    int timestamp;
+    if (!WebPAnimDecoderGetNext(dec, &buf, &timestamp)) break;
+  }
+
+  WebPAnimDecoderDelete(dec);
+  return 0;
+}
diff --git a/projects/libwebp/fuzz_demux_api.c b/projects/libwebp/fuzz_demux_api.c
new file mode 100644
index 0000000..8078c61
--- /dev/null
+++ b/projects/libwebp/fuzz_demux_api.c
@@ -0,0 +1,96 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "fuzz.h"
+#include "webp/mux.h"
+#include "webp/demux.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  WebPData webp_data;
+  WebPDataInit(&webp_data);
+  webp_data.size = size;
+  webp_data.bytes = data;
+
+  // Extracted chunks and frames are not processed or decoded,
+  // which is already covered extensively by the other fuzz targets.
+
+  if (size & 1) {
+    // Mux API
+    WebPMux* mux = WebPMuxCreate(&webp_data, size & 2);
+    if (!mux) return 0;
+
+    WebPData chunk;
+    WebPMuxGetChunk(mux, "EXIF", &chunk);
+    WebPMuxGetChunk(mux, "ICCP", &chunk);
+    WebPMuxGetChunk(mux, "FUZZ", &chunk);  // unknown
+
+    uint32_t flags;
+    WebPMuxGetFeatures(mux, &flags);
+
+    WebPMuxAnimParams params;
+    WebPMuxGetAnimationParams(mux, &params);
+
+    WebPMuxError status;
+    WebPMuxFrameInfo info;
+    for (int i = 0; i < kFuzzFrameLimit; i++) {
+      status = WebPMuxGetFrame(mux, i + 1, &info);
+      if (status == WEBP_MUX_NOT_FOUND) {
+        break;
+      } else if (status == WEBP_MUX_OK) {
+        WebPDataClear(&info.bitstream);
+      }
+    }
+
+    WebPMuxDelete(mux);
+  } else {
+    // Demux API
+    WebPDemuxer* demux;
+    if (size & 2) {
+      WebPDemuxState state;
+      demux = WebPDemuxPartial(&webp_data, &state);
+      if (state < WEBP_DEMUX_PARSED_HEADER) {
+        WebPDemuxDelete(demux);
+        return 0;
+      }
+    } else {
+      demux = WebPDemux(&webp_data);
+      if (!demux) return 0;
+    }
+
+    WebPChunkIterator chunk_iter;
+    if (WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter)) {
+      WebPDemuxNextChunk(&chunk_iter);
+    }
+    WebPDemuxReleaseChunkIterator(&chunk_iter);
+    if (WebPDemuxGetChunk(demux, "ICCP", 0, &chunk_iter)) {  // 0 == last
+      WebPDemuxPrevChunk(&chunk_iter);
+    }
+    WebPDemuxReleaseChunkIterator(&chunk_iter);
+    // Skips FUZZ because the Demux API has no concept of (un)known chunks.
+
+    WebPIterator iter;
+    if (WebPDemuxGetFrame(demux, 1, &iter)) {
+      for (int i = 1; i < kFuzzFrameLimit; i++) {
+        if (!WebPDemuxNextFrame(&iter)) break;
+      }
+    }
+
+    WebPDemuxReleaseIterator(&iter);
+    WebPDemuxDelete(demux);
+  }
+
+  return 0;
+}
diff --git a/projects/libwebp/fuzz_simple_api.c b/projects/libwebp/fuzz_simple_api.c
new file mode 100644
index 0000000..615c2f3
--- /dev/null
+++ b/projects/libwebp/fuzz_simple_api.c
@@ -0,0 +1,84 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "fuzz.h"
+#include "webp/decode.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  int w, h;
+  if (!WebPGetInfo(data, size, &w, &h)) return 0;
+  if ((size_t)w * h > kFuzzPxLimit) return 0;
+
+  const uint8_t value = FuzzHash(data, size);
+  uint8_t* buf = NULL;
+
+  // For *Into functions, which decode into an external buffer, an
+  // intentionally too small buffer can be given with low probability.
+  if (value < 0x16) {
+    buf = WebPDecodeRGBA(data, size, &w, &h);
+  } else if (value < 0x2b) {
+    buf = WebPDecodeARGB(data, size, &w, &h);
+  } else if (value < 0x40) {
+    buf = WebPDecodeBGRA(data, size, &w, &h);
+  } else if (value < 0x55) {
+    buf = WebPDecodeRGB(data, size, &w, &h);
+  } else if (value < 0x6a) {
+    buf = WebPDecodeBGR(data, size, &w, &h);
+  } else if (value < 0x7f) {
+    uint8_t *u, *v;
+    int stride, uv_stride;
+    buf = WebPDecodeYUV(data, size, &w, &h, &u, &v, &stride, &uv_stride);
+  } else if (value < 0xe8) {
+    const int stride = (value < 0xbe ? 4 : 3) * w;
+    size_t buf_size = stride * h;
+    if (value % 0x10 == 0) buf_size--;
+    uint8_t* const ext_buf = (uint8_t*)malloc(buf_size);
+    if (value < 0x94) {
+      WebPDecodeRGBAInto(data, size, ext_buf, buf_size, stride);
+    } else if (value < 0xa9) {
+      WebPDecodeARGBInto(data, size, ext_buf, buf_size, stride);
+    } else if (value < 0xbe) {
+      WebPDecodeBGRAInto(data, size, ext_buf, buf_size, stride);
+    } else if (value < 0xd3) {
+      WebPDecodeRGBInto(data, size, ext_buf, buf_size, stride);
+    } else {
+      WebPDecodeBGRInto(data, size, ext_buf, buf_size, stride);
+    }
+    free(ext_buf);
+  } else {
+    size_t luma_size = w * h;
+    const int uv_stride = (w + 1) / 2;
+    size_t u_size = uv_stride * (h + 1) / 2;
+    size_t v_size = uv_stride * (h + 1) / 2;
+    if (value % 0x10 == 0) {
+      if (size & 1) luma_size--;
+      if (size & 2) u_size--;
+      if (size & 4) v_size--;
+    }
+    uint8_t* const luma_buf = (uint8_t*)malloc(luma_size);
+    uint8_t* const u_buf = (uint8_t*)malloc(u_size);
+    uint8_t* const v_buf = (uint8_t*)malloc(v_size);
+    WebPDecodeYUVInto(data, size, luma_buf, luma_size, w /* luma_stride */,
+                      u_buf, u_size, uv_stride, v_buf, v_size, uv_stride);
+    free(luma_buf);
+    free(u_buf);
+    free(v_buf);
+  }
+
+  if (buf) WebPFree(buf);
+
+  return 0;
+}
diff --git a/projects/libwebp/fuzz_webp_animencoder.cc b/projects/libwebp/fuzz_webp_animencoder.cc
new file mode 100644
index 0000000..f5cb2d1
--- /dev/null
+++ b/projects/libwebp/fuzz_webp_animencoder.cc
@@ -0,0 +1,165 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "fuzz.h"
+#include "webp/encode.h"
+#include "webp/mux.h"
+
+namespace {
+
+const VP8CPUInfo default_VP8GetCPUInfo = VP8GetCPUInfo;
+
+int AddFrame(WebPAnimEncoder** const enc,
+             const WebPAnimEncoderOptions& anim_config, int* const width,
+             int* const height, int timestamp_ms, const uint8_t data[],
+             size_t size, uint32_t* const bit_pos) {
+  if (enc == nullptr || width == nullptr || height == nullptr) {
+    fprintf(stderr, "NULL parameters.\n");
+    if (enc != nullptr) WebPAnimEncoderDelete(*enc);
+    abort();
+  }
+
+  // Init the source picture.
+  WebPPicture pic;
+  if (!WebPPictureInit(&pic)) {
+    fprintf(stderr, "WebPPictureInit failed.\n");
+    WebPAnimEncoderDelete(*enc);
+    abort();
+  }
+  pic.use_argb = Extract(1, data, size, bit_pos);
+
+  // Read the source picture.
+  if (!ExtractSourcePicture(&pic, data, size, bit_pos)) {
+    fprintf(stderr, "Can't read input image.\n");
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  // Crop and scale.
+  if (*enc == nullptr) {  // First frame will set canvas width and height.
+    if (!ExtractAndCropOrScale(&pic, data, size, bit_pos)) {
+      fprintf(stderr, "ExtractAndCropOrScale failed.");
+      WebPPictureFree(&pic);
+      abort();
+    }
+  } else {  // Other frames will be resized to the first frame's dimensions.
+    if (!WebPPictureRescale(&pic, *width, *height)) {
+      fprintf(stderr, "WebPPictureRescale failed. Size: %d,%d\n", *width,
+              *height);
+      WebPAnimEncoderDelete(*enc);
+      WebPPictureFree(&pic);
+      abort();
+    }
+  }
+
+  // Create encoder if it doesn't exist.
+  if (*enc == nullptr) {
+    *width = pic.width;
+    *height = pic.height;
+    *enc = WebPAnimEncoderNew(*width, *height, &anim_config);
+    if (*enc == nullptr) {
+      fprintf(stderr, "WebPAnimEncoderNew failed.\n");
+      WebPPictureFree(&pic);
+      abort();
+    }
+  }
+
+  // Create frame encoding config.
+  WebPConfig config;
+  if (!ExtractWebPConfig(&config, data, size, bit_pos)) {
+    fprintf(stderr, "ExtractWebPConfig failed.\n");
+    WebPAnimEncoderDelete(*enc);
+    WebPPictureFree(&pic);
+    abort();
+  }
+  // Skip slow settings on big images, it's likely to timeout.
+  if (pic.width * pic.height > 32 * 32) {
+    config.method = (config.method > 4) ? 4 : config.method;
+    config.quality = (config.quality > 99.0f) ? 99.0f : config.quality;
+    config.alpha_quality =
+        (config.alpha_quality > 99) ? 99 : config.alpha_quality;
+  }
+
+  // Encode.
+  if (!WebPAnimEncoderAdd(*enc, &pic, timestamp_ms, &config)) {
+    fprintf(stderr, "WebPEncode failed. Error code: %d\n", pic.error_code);
+    WebPAnimEncoderDelete(*enc);
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  WebPPictureFree(&pic);
+  return 1;
+}
+
+}  // namespace
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  WebPAnimEncoder* enc = nullptr;
+  int width = 0, height = 0, timestamp_ms = 0;
+  uint32_t bit_pos = 0;
+
+  ExtractAndDisableOptimizations(default_VP8GetCPUInfo, data, size, &bit_pos);
+
+  // Extract a configuration from the packed bits.
+  WebPAnimEncoderOptions anim_config;
+  if (!WebPAnimEncoderOptionsInit(&anim_config)) {
+    fprintf(stderr, "WebPAnimEncoderOptionsInit failed.\n");
+    abort();
+  }
+  anim_config.minimize_size = Extract(1, data, size, &bit_pos);
+  anim_config.kmax = Extract(15, data, size, &bit_pos);
+  const int min_kmin = (anim_config.kmax > 1) ? (anim_config.kmax / 2) : 0;
+  const int max_kmin = (anim_config.kmax > 1) ? (anim_config.kmax - 1) : 0;
+  anim_config.kmin =
+      min_kmin + Extract((uint32_t)(max_kmin - min_kmin), data, size, &bit_pos);
+  anim_config.allow_mixed = Extract(1, data, size, &bit_pos);
+  anim_config.verbose = 0;
+
+  const int nb_frames = 1 + Extract(15, data, size, &bit_pos);
+
+  // For each frame.
+  for (int i = 0; i < nb_frames; ++i) {
+    if (!AddFrame(&enc, anim_config, &width, &height, timestamp_ms, data, size,
+                  &bit_pos)) {
+      return 0;
+    }
+
+    timestamp_ms += (1 << (2 + Extract(15, data, size, &bit_pos))) +
+                    Extract(1, data, size, &bit_pos);  // [1..131073], arbitrary
+  }
+
+  // Assemble.
+  if (!WebPAnimEncoderAdd(enc, nullptr, timestamp_ms, nullptr)) {
+    fprintf(stderr, "Last WebPAnimEncoderAdd failed.");
+    WebPAnimEncoderDelete(enc);
+    abort();
+  }
+  WebPData webp_data;
+  WebPDataInit(&webp_data);
+  if (!WebPAnimEncoderAssemble(enc, &webp_data)) {
+    fprintf(stderr, "WebPAnimEncoderAssemble failed.");
+    WebPAnimEncoderDelete(enc);
+    WebPDataClear(&webp_data);
+    abort();
+  }
+
+  WebPAnimEncoderDelete(enc);
+  WebPDataClear(&webp_data);
+  return 0;
+}
diff --git a/projects/libwebp/fuzz_webp_enc_dec.cc b/projects/libwebp/fuzz_webp_enc_dec.cc
new file mode 100644
index 0000000..5e3ef42
--- /dev/null
+++ b/projects/libwebp/fuzz_webp_enc_dec.cc
@@ -0,0 +1,133 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "fuzz.h"
+#include "webp/encode.h"
+#include "webp/decode.h"
+
+namespace {
+
+const VP8CPUInfo default_VP8GetCPUInfo = VP8GetCPUInfo;
+
+}  // namespace
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* const data, size_t size) {
+  uint32_t bit_pos = 0;
+
+  ExtractAndDisableOptimizations(default_VP8GetCPUInfo, data, size, &bit_pos);
+
+  // Init the source picture.
+  WebPPicture pic;
+  if (!WebPPictureInit(&pic)) {
+    fprintf(stderr, "WebPPictureInit failed.\n");
+    abort();
+  }
+  pic.use_argb = Extract(1, data, size, &bit_pos);
+
+  // Read the source picture.
+  if (!ExtractSourcePicture(&pic, data, size, &bit_pos)) {
+    fprintf(stderr, "Can't read input image.\n");
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  // Crop and scale.
+  if (!ExtractAndCropOrScale(&pic, data, size, &bit_pos)) {
+    fprintf(stderr, "ExtractAndCropOrScale failed.");
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  // Extract a configuration from the packed bits.
+  WebPConfig config;
+  if (!ExtractWebPConfig(&config, data, size, &bit_pos)) {
+    fprintf(stderr, "ExtractWebPConfig failed.\n");
+    abort();
+  }
+  // Skip slow settings on big images, it's likely to timeout.
+  if (pic.width * pic.height > 32 * 32) {
+    if (config.lossless) {
+      if (config.quality > 99.0f && config.method >= 5) {
+        config.quality = 99.0f;
+        config.method = 5;
+      }
+    } else {
+      if (config.quality > 99.0f && config.method == 6) {
+        config.quality = 99.0f;
+      }
+    }
+    if (config.alpha_quality == 100 && config.method == 6) {
+      config.alpha_quality = 99;
+    }
+  }
+
+  // Encode.
+  WebPMemoryWriter memory_writer;
+  WebPMemoryWriterInit(&memory_writer);
+  pic.writer = WebPMemoryWrite;
+  pic.custom_ptr = &memory_writer;
+  if (!WebPEncode(&config, &pic)) {
+    fprintf(stderr, "WebPEncode failed. Error code: %d\n", pic.error_code);
+    WebPMemoryWriterClear(&memory_writer);
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  // Try decoding the result.
+  int w, h;
+  const uint8_t* const out_data = memory_writer.mem;
+  const size_t out_size = memory_writer.size;
+  uint8_t* const rgba = WebPDecodeBGRA(out_data, out_size, &w, &h);
+  if (rgba == nullptr || w != pic.width || h != pic.height) {
+    fprintf(stderr, "WebPDecodeBGRA failed.\n");
+    WebPFree(rgba);
+    WebPMemoryWriterClear(&memory_writer);
+    WebPPictureFree(&pic);
+    abort();
+  }
+
+  // Compare the results if exact encoding.
+  if (pic.use_argb && config.lossless && config.near_lossless == 100) {
+    const uint32_t* src1 = (const uint32_t*)rgba;
+    const uint32_t* src2 = pic.argb;
+    for (int y = 0; y < h; ++y, src1 += w, src2 += pic.argb_stride) {
+      for (int x = 0; x < w; ++x) {
+        uint32_t v1 = src1[x], v2 = src2[x];
+        if (!config.exact) {
+          if ((v1 & 0xff000000u) == 0 || (v2 & 0xff000000u) == 0) {
+            // Only keep alpha for comparison of fully transparent area.
+            v1 &= 0xff000000u;
+            v2 &= 0xff000000u;
+          }
+        }
+        if (v1 != v2) {
+          fprintf(stderr, "Lossless compression failed pixel-exactness.\n");
+          WebPFree(rgba);
+          WebPMemoryWriterClear(&memory_writer);
+          WebPPictureFree(&pic);
+          abort();
+        }
+      }
+    }
+  }
+
+  WebPFree(rgba);
+  WebPMemoryWriterClear(&memory_writer);
+  WebPPictureFree(&pic);
+  return 0;
+}
diff --git a/projects/libwebp/img_alpha.h b/projects/libwebp/img_alpha.h
new file mode 100644
index 0000000..4ac397e
--- /dev/null
+++ b/projects/libwebp/img_alpha.h
@@ -0,0 +1,360 @@
+#include <stdint.h>
+
+static const int kImgAlphaWidth = 32;
+static const int kImgAlphaHeight = 32;
+
+/*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit, Fix 0xFF: 8 bit*/
+static const uint8_t kImgAlphaData[] = {
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfd, 0xff, 0xfe, 0xfd, 0xfc, 0xff,
+    0xfe, 0xfd, 0xfb, 0xff, 0xfe, 0xfc, 0xfb, 0xff, 0xfe, 0xfc, 0xfa, 0xff,
+    0xfe, 0xfc, 0xf9, 0xff, 0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf7, 0xff,
+    0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfa, 0xf6, 0xff, 0xfe, 0xf9, 0xf5, 0xff,
+    0xfd, 0xf9, 0xf3, 0xff, 0xfd, 0xf8, 0xf2, 0xff, 0xfd, 0xf7, 0xf1, 0xff,
+    0xfc, 0xf7, 0xf0, 0xff, 0xfc, 0xf6, 0xef, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff,
+    0xfe, 0xfe, 0xfd, 0xff, 0xfe, 0xfd, 0xfc, 0xff, 0xfe, 0xfd, 0xfb, 0xff,
+    0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfb, 0xf9, 0xff,
+    0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfa, 0xf7, 0xff,
+    0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfd, 0xf9, 0xf4, 0xff,
+    0xfd, 0xf8, 0xf2, 0xff, 0xfc, 0xf7, 0xf1, 0xff, 0xfc, 0xf7, 0xf0, 0xff,
+    0xfc, 0xf7, 0xef, 0xff, 0xfc, 0xf6, 0xee, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfd, 0xff, 0xfe, 0xfd, 0xfd, 0xff,
+    0xfe, 0xfd, 0xfc, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xfe, 0xfc, 0xfa, 0xff,
+    0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfc, 0xf9, 0xff, 0xfe, 0xfb, 0xf8, 0xff,
+    0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfb, 0xf6, 0xff, 0xfe, 0xfa, 0xf5, 0xff,
+    0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xf9, 0xf4, 0xff, 0xfe, 0xf8, 0xf3, 0xff,
+    0xfd, 0xf8, 0xf2, 0xff, 0xfc, 0xf7, 0xf1, 0xff, 0xfc, 0xf5, 0xf0, 0xff,
+    0xfc, 0xf6, 0xee, 0xff, 0xfc, 0xf5, 0xed, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff,
+    0xfc, 0xfb, 0xfb, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfe, 0xfd, 0xfb, 0xff,
+    0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfc, 0xf9, 0xff,
+    0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf7, 0xff,
+    0xfe, 0xfb, 0xf6, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff,
+    0xfe, 0xf9, 0xf4, 0xff, 0xfe, 0xf9, 0xf3, 0xff, 0xfe, 0xf8, 0xf2, 0xff,
+    0xfd, 0xf7, 0xf1, 0xff, 0xfc, 0xf6, 0xf0, 0xff, 0xfc, 0xf6, 0xee, 0xff,
+    0xfc, 0xf5, 0xec, 0xff, 0xfb, 0xf5, 0xec, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xfb, 0xfb, 0xfb, 0xff,
+    0xfa, 0xf9, 0xf9, 0xff, 0xf7, 0xf6, 0xf6, 0xff, 0xfd, 0xfc, 0xfa, 0xff,
+    0xfe, 0xfc, 0xfa, 0xff, 0xfe, 0xfc, 0xf9, 0xff, 0xfe, 0xfb, 0xf9, 0xff,
+    0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfb, 0xf6, 0xff,
+    0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfa, 0xf3, 0xff,
+    0xfe, 0xfa, 0xf4, 0xfb, 0xfe, 0xf9, 0xf4, 0xeb, 0xfe, 0xfb, 0xf6, 0xdc,
+    0xfd, 0xfa, 0xf6, 0xcf, 0xfd, 0xfa, 0xf5, 0xcc, 0xfc, 0xf9, 0xf4, 0xcb,
+    0xfd, 0xf8, 0xf3, 0xc7, 0xfc, 0xf8, 0xf2, 0xc7,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff,
+    0xfb, 0xfa, 0xfa, 0xff, 0xf8, 0xf7, 0xf7, 0xff, 0xf6, 0xf4, 0xf4, 0xff,
+    0xf7, 0xf5, 0xf5, 0xff, 0xf5, 0xf5, 0xf4, 0xff, 0xf8, 0xf7, 0xf7, 0xff,
+    0xfd, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf7, 0xff,
+    0xfe, 0xfb, 0xf7, 0xff, 0xfe, 0xfa, 0xf6, 0xff, 0xfe, 0xfa, 0xf5, 0xff,
+    0xfe, 0xfa, 0xf4, 0xff, 0xfd, 0xfa, 0xf4, 0xfc, 0xfe, 0xfc, 0xf9, 0xcf,
+    0xff, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xa8, 0xff, 0xff, 0xff, 0xa4,
+    0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x94,
+    0xff, 0xff, 0xff, 0x90, 0xff, 0xff, 0xff, 0x8b,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfa, 0xf9, 0xf9, 0xff,
+    0xf6, 0xf5, 0xf4, 0xff, 0xf5, 0xf3, 0xf3, 0xff, 0xf4, 0xf2, 0xf1, 0xff,
+    0xf2, 0xf1, 0xf0, 0xff, 0xf2, 0xf0, 0xf0, 0xff, 0xf0, 0xee, 0xee, 0xff,
+    0xf1, 0xf0, 0xef, 0xff, 0xfe, 0xfb, 0xf8, 0xff, 0xfe, 0xfb, 0xf6, 0xff,
+    0xfe, 0xfa, 0xf6, 0xff, 0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfb, 0xf4, 0xff,
+    0xfe, 0xfb, 0xf5, 0xf3, 0xff, 0xfe, 0xfe, 0xb4, 0xff, 0xff, 0xff, 0xac,
+    0xff, 0xff, 0xff, 0xa7, 0xff, 0xff, 0xff, 0xa3, 0xff, 0xff, 0xff, 0x9c,
+    0xff, 0xff, 0xff, 0x98, 0xff, 0xff, 0xff, 0x93, 0xff, 0xff, 0xff, 0x8f,
+    0xff, 0xff, 0xff, 0x88, 0xff, 0xff, 0xff, 0x84,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff,
+    0xfc, 0xfb, 0xfb, 0xff, 0xf9, 0xf8, 0xf8, 0xff, 0xf6, 0xf5, 0xf4, 0xff,
+    0xf3, 0xf1, 0xf1, 0xff, 0xf0, 0xed, 0xed, 0xff, 0xef, 0xec, 0xeb, 0xff,
+    0xee, 0xeb, 0xeb, 0xff, 0xf0, 0xee, 0xee, 0xff, 0xea, 0xe7, 0xe7, 0xff,
+    0xec, 0xe9, 0xe9, 0xff, 0xf5, 0xf2, 0xf0, 0xff, 0xfe, 0xfb, 0xf6, 0xff,
+    0xfe, 0xfb, 0xf5, 0xff, 0xfe, 0xfa, 0xf4, 0xff, 0xfe, 0xfb, 0xf6, 0xeb,
+    0xff, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xab, 0xff, 0xff, 0xff, 0xa4,
+    0xff, 0xff, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x97,
+    0xff, 0xff, 0xff, 0x90, 0xff, 0xff, 0xff, 0x8c, 0xff, 0xff, 0xff, 0x87,
+    0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0x7c,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfb, 0xfb, 0xfa, 0xff,
+    0xf8, 0xf6, 0xf6, 0xff, 0xf4, 0xf3, 0xf2, 0xff, 0xf2, 0xf0, 0xf0, 0xff,
+    0xef, 0xec, 0xeb, 0xff, 0xef, 0xec, 0xeb, 0xff, 0xeb, 0xe7, 0xe6, 0xff,
+    0xea, 0xe6, 0xe5, 0xff, 0xeb, 0xe8, 0xe8, 0xff, 0xe9, 0xe6, 0xe7, 0xff,
+    0xe5, 0xe2, 0xe2, 0xff, 0xed, 0xeb, 0xeb, 0xff, 0xf7, 0xf5, 0xf2, 0xff,
+    0xfe, 0xfa, 0xf5, 0xff, 0xfe, 0xfb, 0xf5, 0xf8, 0xff, 0xff, 0xff, 0xac,
+    0xff, 0xff, 0xff, 0xa8, 0xff, 0xff, 0xff, 0xa3, 0xff, 0xff, 0xff, 0x9f,
+    0xff, 0xff, 0xff, 0x98, 0xff, 0xff, 0xff, 0x94, 0xff, 0xff, 0xff, 0x8f,
+    0xff, 0xff, 0xff, 0x8b, 0xff, 0xff, 0xff, 0x84, 0xff, 0xff, 0xff, 0x80,
+    0xff, 0xff, 0xff, 0x7c, 0xff, 0xff, 0xff, 0x77,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xfc, 0xfc, 0xfc, 0xff, 0xf8, 0xf7, 0xf7, 0xff, 0xf6, 0xf5, 0xf4, 0xff,
+    0xf3, 0xf1, 0xf0, 0xff, 0xf1, 0xef, 0xef, 0xff, 0xef, 0xed, 0xec, 0xff,
+    0xec, 0xe8, 0xe7, 0xff, 0xe9, 0xe6, 0xe6, 0xff, 0xec, 0xe9, 0xe9, 0xff,
+    0xe4, 0xe0, 0xdf, 0xff, 0xec, 0xe9, 0xe9, 0xff, 0xea, 0xe6, 0xe6, 0xff,
+    0xe6, 0xe2, 0xe2, 0xff, 0xea, 0xe8, 0xe8, 0xff, 0xec, 0xe8, 0xe7, 0xff,
+    0xfc, 0xf9, 0xf4, 0xff, 0xfe, 0xfd, 0xfa, 0xc3, 0xff, 0xff, 0xff, 0xa7,
+    0xff, 0xff, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff, 0x97,
+    0xff, 0xff, 0xff, 0x93, 0xff, 0xff, 0xff, 0x8c, 0xfe, 0xfc, 0xf9, 0xa3,
+    0xfc, 0xfb, 0xf5, 0xb0, 0xfc, 0xf9, 0xf1, 0xbb, 0xfb, 0xf8, 0xf1, 0xb8,
+    0xfb, 0xf8, 0xef, 0xb4, 0xfb, 0xf9, 0xf2, 0xa4,
+    0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfc, 0xfc, 0xfc, 0xff,
+    0xf8, 0xf7, 0xf7, 0xff, 0xf5, 0xf3, 0xf3, 0xff, 0xf1, 0xef, 0xef, 0xff,
+    0xef, 0xec, 0xeb, 0xff, 0xeb, 0xe7, 0xe7, 0xff, 0xea, 0xe7, 0xe6, 0xff,
+    0xe7, 0xe3, 0xe2, 0xff, 0xe4, 0xdf, 0xde, 0xff, 0xe6, 0xe2, 0xe2, 0xff,
+    0xe4, 0xe1, 0xe0, 0xff, 0xe6, 0xe3, 0xe2, 0xff, 0xe0, 0xdc, 0xdc, 0xff,
+    0xe3, 0xdf, 0xdf, 0xff, 0xe8, 0xe5, 0xe5, 0xff, 0xe4, 0xe1, 0xe2, 0xff,
+    0xec, 0xe8, 0xe5, 0xf8, 0xff, 0xff, 0xff, 0xa4, 0xff, 0xff, 0xff, 0xa0,
+    0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x97, 0xff, 0xff, 0xff, 0x90,
+    0xfe, 0xfe, 0xfb, 0x9c, 0xfc, 0xf9, 0xef, 0xf7, 0xfc, 0xf8, 0xed, 0xff,
+    0xfc, 0xf7, 0xeb, 0xff, 0xfb, 0xf7, 0xeb, 0xff, 0xfa, 0xf6, 0xe9, 0xff,
+    0xfa, 0xf5, 0xe7, 0xff, 0xf8, 0xf4, 0xe5, 0xff,
+    0xfd, 0xfd, 0xfd, 0xff, 0xfa, 0xfa, 0xfa, 0xff, 0xfc, 0xfc, 0xfc, 0xff,
+    0xf8, 0xf7, 0xf7, 0xff, 0xf1, 0xef, 0xee, 0xff, 0xed, 0xea, 0xe9, 0xff,
+    0xea, 0xe6, 0xe5, 0xff, 0xe7, 0xe3, 0xe2, 0xff, 0xe4, 0xe0, 0xdf, 0xff,
+    0xe3, 0xde, 0xdd, 0xff, 0xe2, 0xde, 0xdd, 0xff, 0xe5, 0xe1, 0xe1, 0xff,
+    0xde, 0xda, 0xda, 0xff, 0xe0, 0xdd, 0xdc, 0xff, 0xe1, 0xdd, 0xdd, 0xff,
+    0xe3, 0xe0, 0xdf, 0xff, 0xe4, 0xe1, 0xe1, 0xff, 0xe3, 0xe0, 0xe0, 0xff,
+    0xec, 0xea, 0xea, 0xe8, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0x98,
+    0xff, 0xff, 0xff, 0x93, 0xff, 0xff, 0xff, 0x8f, 0xfe, 0xfe, 0xfe, 0x8c,
+    0xfd, 0xfb, 0xef, 0xff, 0xfd, 0xfb, 0xed, 0xff, 0xfd, 0xf8, 0xec, 0xff,
+    0xfc, 0xf8, 0xeb, 0xff, 0xfc, 0xf7, 0xea, 0xff, 0xfb, 0xf6, 0xe9, 0xff,
+    0xfa, 0xf6, 0xe7, 0xff, 0xfa, 0xf5, 0xe5, 0xff,
+    0xfa, 0xfa, 0xfa, 0xff, 0xf8, 0xf7, 0xf8, 0xff, 0xf6, 0xf6, 0xf6, 0xff,
+    0xf1, 0xf0, 0xf0, 0xff, 0xed, 0xec, 0xec, 0xff, 0xe9, 0xe6, 0xe5, 0xff,
+    0xe6, 0xe1, 0xe0, 0xff, 0xe2, 0xde, 0xdc, 0xff, 0xe0, 0xda, 0xd8, 0xff,
+    0xdd, 0xd7, 0xd5, 0xff, 0xde, 0xda, 0xd9, 0xff, 0xde, 0xda, 0xda, 0xff,
+    0xdc, 0xd7, 0xd8, 0xff, 0xdf, 0xdc, 0xdc, 0xff, 0xe5, 0xe3, 0xe4, 0xff,
+    0xe1, 0xde, 0xde, 0xff, 0xde, 0xdc, 0xdc, 0xff, 0xe9, 0xe7, 0xe8, 0xff,
+    0xe8, 0xe7, 0xe6, 0xe7, 0xff, 0xff, 0xff, 0x97, 0xff, 0xff, 0xff, 0x93,
+    0xff, 0xff, 0xff, 0x8c, 0xff, 0xff, 0xff, 0x88, 0xfe, 0xfe, 0xfa, 0x9b,
+    0xfc, 0xfb, 0xee, 0xff, 0xfc, 0xfa, 0xed, 0xff, 0xfb, 0xfa, 0xeb, 0xff,
+    0xfb, 0xf8, 0xeb, 0xff, 0xfb, 0xf7, 0xea, 0xff, 0xfa, 0xf6, 0xe8, 0xff,
+    0xf8, 0xf6, 0xe6, 0xff, 0xf7, 0xf5, 0xe3, 0xff,
+    0xf9, 0xf9, 0xf9, 0xff, 0xf7, 0xf6, 0xf7, 0xff, 0xf5, 0xf4, 0xf4, 0xff,
+    0xf0, 0xee, 0xef, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xe7, 0xe4, 0xe3, 0xff,
+    0xe2, 0xdd, 0xdb, 0xff, 0xdf, 0xd9, 0xd7, 0xff, 0xdc, 0xd6, 0xd4, 0xff,
+    0xd8, 0xd2, 0xcf, 0xff, 0xd8, 0xd2, 0xd1, 0xff, 0xe0, 0xdc, 0xdc, 0xff,
+    0xdb, 0xd7, 0xd7, 0xff, 0xdb, 0xd7, 0xd7, 0xff, 0xe7, 0xe5, 0xe5, 0xff,
+    0xde, 0xda, 0xdb, 0xff, 0xdb, 0xd8, 0xd9, 0xff, 0xe0, 0xde, 0xde, 0xff,
+    0xed, 0xeb, 0xec, 0xe4, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x8b,
+    0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0x80, 0xfe, 0xfe, 0xfa, 0x94,
+    0xfd, 0xfb, 0xee, 0xff, 0xfd, 0xfb, 0xed, 0xff, 0xfc, 0xfb, 0xec, 0xff,
+    0xfc, 0xfa, 0xea, 0xff, 0xf8, 0xf7, 0xe9, 0xff, 0xf8, 0xf6, 0xe7, 0xff,
+    0xf7, 0xf7, 0xe5, 0xff, 0xf7, 0xf5, 0xe3, 0xff,
+    0xf9, 0xf9, 0xf9, 0xff, 0xf5, 0xf4, 0xf4, 0xff, 0xf2, 0xf2, 0xf2, 0xff,
+    0xe9, 0xe6, 0xe6, 0xff, 0xe9, 0xe7, 0xe6, 0xff, 0xe9, 0xe7, 0xe7, 0xff,
+    0xe0, 0xdb, 0xda, 0xff, 0xda, 0xd3, 0xd2, 0xff, 0xd6, 0xd0, 0xce, 0xff,
+    0xd4, 0xcd, 0xcb, 0xff, 0xd0, 0xc8, 0xc7, 0xff, 0xd7, 0xd2, 0xd1, 0xff,
+    0xd8, 0xd3, 0xd3, 0xff, 0xd4, 0xd1, 0xd1, 0xff, 0xe6, 0xe3, 0xe2, 0xff,
+    0xdd, 0xda, 0xda, 0xff, 0xe3, 0xe1, 0xe1, 0xff, 0xe0, 0xde, 0xde, 0xff,
+    0xe7, 0xe5, 0xe5, 0xe3, 0xff, 0xff, 0xff, 0x88, 0xff, 0xff, 0xff, 0x84,
+    0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7b, 0xfe, 0xfe, 0xfb, 0x88,
+    0xfc, 0xfc, 0xef, 0xff, 0xfb, 0xfc, 0xee, 0xff, 0xfb, 0xfa, 0xeb, 0xff,
+    0xfa, 0xfa, 0xea, 0xff, 0xf9, 0xf9, 0xe7, 0xff, 0xf7, 0xf7, 0xe6, 0xff,
+    0xf6, 0xf5, 0xe5, 0xff, 0xf7, 0xf5, 0xe3, 0xff,
+    0xf8, 0xf7, 0xf7, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf2, 0xf2, 0xf1, 0xff,
+    0xe8, 0xe6, 0xe6, 0xff, 0xe4, 0xe1, 0xe1, 0xff, 0xdd, 0xda, 0xda, 0xff,
+    0xe7, 0xe3, 0xe3, 0xff, 0xd6, 0xcf, 0xcd, 0xff, 0xd4, 0xcc, 0xca, 0xff,
+    0xcf, 0xc7, 0xc5, 0xff, 0xcc, 0xc3, 0xc1, 0xff, 0xd3, 0xce, 0xcc, 0xff,
+    0xd9, 0xd4, 0xd4, 0xff, 0xda, 0xd6, 0xd6, 0xff, 0xe3, 0xe1, 0xe0, 0xff,
+    0xdb, 0xd8, 0xd7, 0xff, 0xe4, 0xe2, 0xe2, 0xff, 0xe1, 0xde, 0xdf, 0xff,
+    0xe3, 0xe1, 0xe1, 0xf0, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0x7c,
+    0xff, 0xff, 0xff, 0x78, 0xff, 0xff, 0xff, 0x73, 0xff, 0xff, 0xff, 0x6f,
+    0xfb, 0xfc, 0xed, 0xff, 0xfa, 0xfb, 0xed, 0xff, 0xfb, 0xfa, 0xeb, 0xff,
+    0xfa, 0xf9, 0xe9, 0xff, 0xfa, 0xf9, 0xe7, 0xff, 0xf8, 0xf9, 0xe7, 0xff,
+    0xf7, 0xf5, 0xe3, 0xff, 0xf7, 0xf4, 0xe1, 0xff,
+    0xf2, 0xf2, 0xf2, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xf0, 0xef, 0xff,
+    0xe5, 0xe3, 0xe3, 0xff, 0xdd, 0xd9, 0xd9, 0xff, 0xdf, 0xdc, 0xdc, 0xff,
+    0xe6, 0xe3, 0xe3, 0xff, 0xe1, 0xda, 0xdb, 0xff, 0xd2, 0xca, 0xc7, 0xff,
+    0xca, 0xc2, 0xc0, 0xff, 0xc7, 0xbe, 0xbc, 0xff, 0xc8, 0xc2, 0xc0, 0xff,
+    0xd2, 0xcf, 0xce, 0xff, 0xd5, 0xcf, 0xd0, 0xff, 0xd5, 0xd1, 0xd1, 0xff,
+    0xda, 0xd6, 0xd7, 0xff, 0xde, 0xdc, 0xdd, 0xff, 0xde, 0xdd, 0xdc, 0xff,
+    0xe2, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xff, 0xff, 0xff, 0x77,
+    0xff, 0xff, 0xff, 0x70, 0xff, 0xff, 0xff, 0x6c, 0xff, 0xff, 0xff, 0x67,
+    0xfa, 0xfd, 0xed, 0xf8, 0xf9, 0xfc, 0xeb, 0xff, 0xf9, 0xfb, 0xea, 0xff,
+    0xf8, 0xf9, 0xe8, 0xff, 0xf7, 0xf9, 0xe6, 0xff, 0xf7, 0xf8, 0xe6, 0xff,
+    0xf6, 0xf5, 0xe4, 0xff, 0xf6, 0xf4, 0xe1, 0xff,
+    0xe7, 0xe7, 0xe7, 0xff, 0xe3, 0xe4, 0xe3, 0xff, 0xe1, 0xe2, 0xe2, 0xff,
+    0xe4, 0xe4, 0xe4, 0xff, 0xd7, 0xd6, 0xd5, 0xff, 0xd5, 0xd4, 0xd4, 0xff,
+    0xdd, 0xdc, 0xdc, 0xff, 0xdc, 0xda, 0xda, 0xff, 0xd0, 0xc9, 0xc9, 0xff,
+    0xc9, 0xbf, 0xbe, 0xff, 0xc2, 0xba, 0xb8, 0xff, 0xc0, 0xb8, 0xb6, 0xff,
+    0xcc, 0xc7, 0xc7, 0xff, 0xd2, 0xcd, 0xcd, 0xff, 0xd2, 0xce, 0xcf, 0xff,
+    0xd1, 0xcc, 0xcd, 0xff, 0xdf, 0xde, 0xde, 0xff, 0xe7, 0xe6, 0xe6, 0xff,
+    0xe4, 0xe3, 0xe3, 0xff, 0xfd, 0xfd, 0xfd, 0x78, 0xff, 0xff, 0xff, 0x70,
+    0xff, 0xff, 0xff, 0x6b, 0xff, 0xff, 0xff, 0x67, 0xff, 0xff, 0xff, 0x60,
+    0xfc, 0xfe, 0xef, 0xcf, 0xf9, 0xfc, 0xec, 0xff, 0xfa, 0xfa, 0xe9, 0xff,
+    0xf8, 0xfa, 0xe8, 0xff, 0xf7, 0xf7, 0xe5, 0xff, 0xf6, 0xf7, 0xe5, 0xff,
+    0xf5, 0xf5, 0xe3, 0xff, 0xf6, 0xf4, 0xe0, 0xff,
+    0xdc, 0xdd, 0xdd, 0xff, 0xdb, 0xdc, 0xdc, 0xff, 0xd3, 0xd4, 0xd4, 0xff,
+    0xd8, 0xd8, 0xd8, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff,
+    0xca, 0xcb, 0xcb, 0xff, 0xcc, 0xcc, 0xcd, 0xff, 0xcb, 0xcb, 0xcb, 0xff,
+    0xc6, 0xc1, 0xc1, 0xff, 0xc0, 0xbc, 0xba, 0xff, 0xba, 0xb1, 0xaf, 0xff,
+    0xc5, 0xbf, 0xc0, 0xff, 0xd6, 0xd2, 0xd2, 0xff, 0xc4, 0xbf, 0xbf, 0xff,
+    0xd3, 0xce, 0xcd, 0xff, 0xd3, 0xd1, 0xd2, 0xff, 0xe3, 0xe2, 0xe2, 0xff,
+    0xe6, 0xe4, 0xe4, 0xff, 0xee, 0xee, 0xed, 0x9b, 0xff, 0xff, 0xff, 0x68,
+    0xff, 0xff, 0xff, 0x63, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xff, 0x5b,
+    0xfd, 0xfe, 0xf6, 0x80, 0xf9, 0xfc, 0xeb, 0xff, 0xf7, 0xfa, 0xeb, 0xff,
+    0xf7, 0xf9, 0xe9, 0xff, 0xf6, 0xf8, 0xe8, 0xff, 0xf6, 0xf7, 0xe5, 0xff,
+    0xf5, 0xf4, 0xe4, 0xff, 0xf5, 0xf4, 0xe3, 0xff,
+    0xd7, 0xd8, 0xd8, 0xff, 0xd4, 0xd5, 0xd4, 0xff, 0xd2, 0xd3, 0xd3, 0xff,
+    0xcf, 0xd0, 0xd0, 0xff, 0xcc, 0xce, 0xcd, 0xff, 0xc9, 0xca, 0xca, 0xff,
+    0xc5, 0xc6, 0xc6, 0xff, 0xc3, 0xc4, 0xc4, 0xff, 0xbf, 0xbf, 0xbd, 0xff,
+    0xbe, 0xbf, 0xbf, 0xff, 0xba, 0xba, 0xba, 0xff, 0xb4, 0xb1, 0xb1, 0xff,
+    0xbb, 0xba, 0xb9, 0xff, 0xc9, 0xc8, 0xc7, 0xff, 0xe2, 0xde, 0xde, 0xff,
+    0xc1, 0xbd, 0xbd, 0xff, 0xd6, 0xd5, 0xd5, 0xff, 0xde, 0xdd, 0xdc, 0xff,
+    0xdc, 0xda, 0xda, 0xff, 0xe6, 0xe5, 0xe5, 0xcf, 0xff, 0xff, 0xff, 0x63,
+    0xff, 0xff, 0xff, 0x5c, 0xff, 0xff, 0xff, 0x58, 0xff, 0xff, 0xff, 0x53,
+    0xff, 0xff, 0xff, 0x4f, 0xf9, 0xfc, 0xeb, 0xfb, 0xf6, 0xf9, 0xeb, 0xff,
+    0xf6, 0xf9, 0xea, 0xff, 0xf6, 0xf9, 0xe8, 0xff, 0xf5, 0xf5, 0xe4, 0xff,
+    0xf6, 0xf6, 0xe4, 0xff, 0xf5, 0xf4, 0xe2, 0xff,
+    0xd3, 0xd4, 0xd4, 0xff, 0xcc, 0xcd, 0xcd, 0xff, 0xce, 0xcf, 0xcf, 0xff,
+    0xc9, 0xcb, 0xcb, 0xff, 0xc6, 0xc7, 0xc7, 0xff, 0xc3, 0xc5, 0xc4, 0xff,
+    0xc0, 0xc1, 0xc1, 0xff, 0xbb, 0xbd, 0xbc, 0xff, 0xb7, 0xb9, 0xb8, 0xff,
+    0xb6, 0xb7, 0xb7, 0xff, 0xb4, 0xb7, 0xb6, 0xff, 0xaf, 0xaf, 0xaf, 0xff,
+    0xb0, 0xb2, 0xb2, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0xc1, 0xc0, 0xc0, 0xff,
+    0xc9, 0xc6, 0xc7, 0xff, 0xb3, 0xad, 0xae, 0xff, 0xcf, 0xcd, 0xce, 0xff,
+    0xe3, 0xe2, 0xe2, 0xff, 0xe4, 0xe2, 0xe2, 0xff, 0xfd, 0xfd, 0xfd, 0x60,
+    0xff, 0xff, 0xff, 0x57, 0xff, 0xff, 0xff, 0x50, 0xff, 0xff, 0xff, 0x4c,
+    0xff, 0xff, 0xff, 0x47, 0xfa, 0xfb, 0xef, 0xa8, 0xf8, 0xfc, 0xed, 0xff,
+    0xf7, 0xf9, 0xea, 0xff, 0xf6, 0xf7, 0xe7, 0xff, 0xf6, 0xf4, 0xe7, 0xff,
+    0xf5, 0xf4, 0xe5, 0xff, 0xf4, 0xf3, 0xe3, 0xff,
+    0xce, 0xcf, 0xcf, 0xff, 0xc8, 0xc9, 0xc9, 0xff, 0xc6, 0xc8, 0xc8, 0xff,
+    0xc4, 0xc6, 0xc6, 0xff, 0xc2, 0xc3, 0xc3, 0xff, 0xba, 0xbd, 0xbc, 0xff,
+    0xbc, 0xbe, 0xbe, 0xff, 0xb5, 0xb8, 0xb7, 0xff, 0xb4, 0xb6, 0xb5, 0xff,
+    0xb0, 0xb2, 0xb2, 0xff, 0xaf, 0xb1, 0xb0, 0xff, 0xaa, 0xad, 0xac, 0xff,
+    0xaa, 0xad, 0xac, 0xff, 0xa7, 0xa9, 0xa8, 0xff, 0xa4, 0xa5, 0xa5, 0xff,
+    0xa7, 0xa8, 0xa8, 0xff, 0xc4, 0xc3, 0xc3, 0xff, 0xb8, 0xb7, 0xb7, 0xff,
+    0xc0, 0xbf, 0xbe, 0xff, 0xd0, 0xce, 0xce, 0xff, 0xe3, 0xe2, 0xe2, 0x94,
+    0xff, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0x4b, 0xff, 0xff, 0xff, 0x44,
+    0xff, 0xff, 0xff, 0x40, 0xed, 0xe7, 0xe6, 0x48, 0xba, 0xad, 0xa1, 0xff,
+    0xd6, 0xcf, 0xc1, 0xff, 0xf4, 0xf3, 0xe4, 0xff, 0xf5, 0xf4, 0xe5, 0xff,
+    0xf5, 0xf3, 0xe5, 0xff, 0xf5, 0xf5, 0xe5, 0xff,
+    0xc7, 0xc9, 0xc8, 0xff, 0xc5, 0xc6, 0xc6, 0xff, 0xc1, 0xc2, 0xc2, 0xff,
+    0xbd, 0xbe, 0xbe, 0xff, 0xba, 0xbc, 0xbb, 0xff, 0xb3, 0xb4, 0xb4, 0xff,
+    0xb2, 0xb5, 0xb4, 0xff, 0xb1, 0xb4, 0xb3, 0xff, 0xac, 0xaf, 0xae, 0xff,
+    0xa8, 0xaa, 0xa9, 0xff, 0xa8, 0xab, 0xaa, 0xff, 0xa1, 0xa4, 0xa3, 0xff,
+    0xa1, 0xa4, 0xa3, 0xff, 0xa3, 0xa5, 0xa4, 0xff, 0x9f, 0xa1, 0xa0, 0xff,
+    0x99, 0x9b, 0x9a, 0xff, 0x98, 0x9a, 0x9a, 0xff, 0x97, 0x9a, 0x99, 0xff,
+    0xa0, 0xa0, 0xa0, 0xff, 0x9b, 0x9b, 0x9b, 0xff, 0x9f, 0xa0, 0x9f, 0xe8,
+    0xff, 0xff, 0xff, 0x48, 0xff, 0xff, 0xff, 0x44, 0xff, 0xff, 0xff, 0x3f,
+    0xff, 0xff, 0xff, 0x3b, 0xff, 0xff, 0xff, 0x34, 0xbb, 0xa7, 0xa5, 0xd8,
+    0xb9, 0xa9, 0xa6, 0xff, 0xb9, 0xac, 0xa0, 0xff, 0xf8, 0xfa, 0xe7, 0xff,
+    0xf5, 0xf4, 0xe6, 0xff, 0xf4, 0xf3, 0xe4, 0xff,
+    0xc0, 0xc0, 0xbf, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xbb, 0xbc, 0xbb, 0xff,
+    0xb6, 0xb6, 0xb6, 0xff, 0xb0, 0xb1, 0xb1, 0xff, 0xad, 0xad, 0xad, 0xff,
+    0xa8, 0xa7, 0xa7, 0xff, 0xa8, 0xa9, 0xa9, 0xff, 0xa5, 0xa6, 0xa6, 0xff,
+    0xa4, 0xa6, 0xa5, 0xff, 0xa3, 0xa6, 0xa6, 0xff, 0x9b, 0x9d, 0x9c, 0xff,
+    0x96, 0x99, 0x99, 0xff, 0x9b, 0x9d, 0x9d, 0xff, 0x97, 0x99, 0x98, 0xff,
+    0x8e, 0x91, 0x91, 0xff, 0x98, 0x9b, 0x9b, 0xff, 0x89, 0x8c, 0x8b, 0xff,
+    0x87, 0x8b, 0x89, 0xff, 0x84, 0x7f, 0x81, 0xff, 0x82, 0x82, 0x83, 0xff,
+    0xc0, 0xbe, 0xbf, 0x67, 0xff, 0xff, 0xff, 0x3c, 0xff, 0xff, 0xff, 0x37,
+    0xff, 0xff, 0xff, 0x33, 0xff, 0xff, 0xff, 0x2f, 0xc6, 0xbb, 0xb9, 0x50,
+    0xac, 0x9c, 0x99, 0xff, 0xa8, 0x98, 0x91, 0xff, 0xbd, 0xb0, 0xa5, 0xff,
+    0xf6, 0xf5, 0xe6, 0xff, 0xf4, 0xf3, 0xe4, 0xff,
+    0xbb, 0xbb, 0xba, 0xff, 0xb3, 0xb3, 0xb3, 0xff, 0xb3, 0xb4, 0xb4, 0xff,
+    0xae, 0xaf, 0xae, 0xff, 0xad, 0xae, 0xae, 0xff, 0xb2, 0xb4, 0xb4, 0xfc,
+    0xa8, 0xa8, 0xa9, 0xf3, 0xa7, 0xa7, 0xa7, 0xf3, 0x9e, 0x9f, 0x9d, 0xfc,
+    0x9b, 0x9c, 0x9a, 0xff, 0x9c, 0x9e, 0x9e, 0xff, 0x94, 0x96, 0x94, 0xff,
+    0x90, 0x90, 0x90, 0xff, 0x96, 0x98, 0x99, 0xff, 0x8d, 0x8f, 0x8e, 0xff,
+    0x83, 0x83, 0x84, 0xff, 0x8f, 0x92, 0x91, 0xff, 0x83, 0x85, 0x85, 0xff,
+    0x87, 0x87, 0x87, 0xff, 0x7c, 0x7d, 0x7d, 0xff, 0x78, 0x74, 0x72, 0xff,
+    0x95, 0x93, 0x92, 0x97, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0x30,
+    0xff, 0xff, 0xff, 0x2c, 0xff, 0xff, 0xff, 0x27, 0xff, 0xff, 0xff, 0x23,
+    0xa2, 0x93, 0x94, 0xe7, 0x96, 0x83, 0x81, 0xff, 0xa8, 0x91, 0x8b, 0xff,
+    0xc4, 0xbc, 0xb2, 0xff, 0xf5, 0xf5, 0xe4, 0xff,
+    0xb7, 0xb9, 0xb8, 0xff, 0xaf, 0xaf, 0xae, 0xff, 0xaf, 0xaf, 0xaf, 0xff,
+    0xac, 0xad, 0xae, 0xff, 0xa8, 0xaa, 0xa9, 0xff, 0xae, 0xaf, 0xaf, 0xec,
+    0xc6, 0xc7, 0xc7, 0xb4, 0xc5, 0xc6, 0xc6, 0xb3, 0x9a, 0x99, 0x99, 0xeb,
+    0x91, 0x91, 0x90, 0xff, 0x94, 0x95, 0x95, 0xff, 0x95, 0x96, 0x96, 0xff,
+    0x8c, 0x8e, 0x8e, 0xff, 0x86, 0x88, 0x87, 0xff, 0x83, 0x82, 0x82, 0xff,
+    0x80, 0x81, 0x81, 0xff, 0x82, 0x84, 0x84, 0xff, 0x7b, 0x79, 0x7a, 0xff,
+    0x73, 0x74, 0x73, 0xff, 0x79, 0x7a, 0x7b, 0xff, 0x75, 0x73, 0x72, 0xff,
+    0x6f, 0x70, 0x6e, 0xfc, 0xe8, 0xe7, 0xe7, 0x37, 0xff, 0xff, 0xff, 0x2b,
+    0xff, 0xff, 0xff, 0x24, 0xff, 0xff, 0xff, 0x20, 0xff, 0xff, 0xff, 0x1c,
+    0x70, 0x6e, 0x6d, 0xeb, 0x6c, 0x69, 0x66, 0xff, 0x83, 0x78, 0x7b, 0xff,
+    0x83, 0x7f, 0x78, 0xff, 0xdc, 0xd5, 0xcd, 0xff,
+    0xb3, 0xb5, 0xb4, 0xff, 0xa9, 0xa9, 0xaa, 0xff, 0xa7, 0xa8, 0xa7, 0xff,
+    0xa7, 0xa8, 0xa7, 0xff, 0xa6, 0xa8, 0xa8, 0xff, 0xab, 0xac, 0xab, 0xe3,
+    0xdb, 0xdc, 0xdc, 0x97, 0xd9, 0xda, 0xda, 0x93, 0x99, 0x99, 0x98, 0xe0,
+    0x94, 0x95, 0x95, 0xff, 0x8e, 0x8f, 0x8e, 0xff, 0x8f, 0x93, 0x92, 0xff,
+    0x88, 0x8a, 0x89, 0xff, 0x79, 0x78, 0x78, 0xff, 0x80, 0x82, 0x82, 0xff,
+    0x7f, 0x81, 0x81, 0xff, 0x7f, 0x7d, 0x7e, 0xff, 0x76, 0x72, 0x72, 0xff,
+    0x70, 0x70, 0x70, 0xff, 0x73, 0x73, 0x73, 0xff, 0x67, 0x66, 0x64, 0xff,
+    0x6b, 0x6b, 0x6a, 0xff, 0x70, 0x73, 0x72, 0xd4, 0xff, 0xff, 0xff, 0x23,
+    0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x1b, 0x79, 0x74, 0x72, 0x67,
+    0x63, 0x61, 0x61, 0xff, 0x63, 0x62, 0x60, 0xff, 0x5e, 0x5c, 0x5a, 0xff,
+    0x61, 0x5f, 0x5c, 0xff, 0x6b, 0x63, 0x5e, 0xff,
+    0xae, 0xaf, 0xaf, 0xff, 0xa9, 0xa9, 0xa9, 0xff, 0x9c, 0x9b, 0x99, 0xff,
+    0x9d, 0x9c, 0x9b, 0xff, 0x9c, 0x9c, 0x9c, 0xff, 0x9c, 0x9c, 0x9d, 0xf7,
+    0xaa, 0xac, 0xac, 0xd4, 0xa5, 0xa7, 0xa6, 0xd3, 0x98, 0x9a, 0x9a, 0xf4,
+    0x8d, 0x8e, 0x8e, 0xff, 0x85, 0x85, 0x85, 0xff, 0x85, 0x86, 0x86, 0xff,
+    0x82, 0x84, 0x84, 0xff, 0x7b, 0x7b, 0x7b, 0xff, 0x7e, 0x82, 0x81, 0xff,
+    0x79, 0x7b, 0x7b, 0xff, 0x79, 0x7b, 0x7b, 0xff, 0x72, 0x73, 0x73, 0xff,
+    0x70, 0x6e, 0x6e, 0xff, 0x6d, 0x6d, 0x6d, 0xff, 0x61, 0x5f, 0x5d, 0xff,
+    0x5d, 0x5d, 0x5b, 0xff, 0x64, 0x60, 0x61, 0xff, 0x5e, 0x5d, 0x5d, 0xec,
+    0x6a, 0x69, 0x67, 0xa0, 0x67, 0x66, 0x64, 0xbc, 0x59, 0x56, 0x55, 0xff,
+    0x54, 0x51, 0x4e, 0xff, 0x56, 0x52, 0x51, 0xff, 0x55, 0x52, 0x4f, 0xff,
+    0x52, 0x4e, 0x49, 0xff, 0x54, 0x54, 0x52, 0xff,
+    0xa9, 0xac, 0xab, 0xff, 0xa1, 0xa0, 0xa0, 0xff, 0x9a, 0x99, 0x98, 0xff,
+    0x97, 0x97, 0x96, 0xff, 0x95, 0x94, 0x94, 0xff, 0x8e, 0x8c, 0x8c, 0xff,
+    0x95, 0x98, 0x97, 0xfc, 0x90, 0x91, 0x91, 0xfc, 0x95, 0x96, 0x96, 0xff,
+    0x86, 0x86, 0x86, 0xff, 0x81, 0x82, 0x80, 0xff, 0x7d, 0x7e, 0x7b, 0xff,
+    0x78, 0x79, 0x78, 0xff, 0x71, 0x70, 0x6e, 0xff, 0x72, 0x71, 0x70, 0xff,
+    0x72, 0x73, 0x72, 0xff, 0x70, 0x70, 0x6e, 0xff, 0x6d, 0x6a, 0x6a, 0xff,
+    0x64, 0x64, 0x63, 0xff, 0x69, 0x68, 0x67, 0xff, 0x61, 0x5f, 0x5e, 0xff,
+    0x59, 0x57, 0x57, 0xff, 0x5f, 0x5f, 0x5e, 0xff, 0x55, 0x55, 0x53, 0xff,
+    0x57, 0x58, 0x57, 0xff, 0x51, 0x53, 0x50, 0xff, 0x54, 0x51, 0x51, 0xff,
+    0x4c, 0x4b, 0x4a, 0xff, 0x49, 0x4a, 0x47, 0xff, 0x4f, 0x51, 0x4e, 0xff,
+    0x4f, 0x4d, 0x49, 0xff, 0x4c, 0x4b, 0x46, 0xff,
+    0xa7, 0xaa, 0xaa, 0xff, 0x99, 0x98, 0x98, 0xff, 0x95, 0x92, 0x92, 0xff,
+    0x94, 0x93, 0x92, 0xff, 0x8a, 0x87, 0x84, 0xff, 0x85, 0x80, 0x7f, 0xff,
+    0x8d, 0x90, 0x8f, 0xff, 0x85, 0x85, 0x85, 0xff, 0x8e, 0x8e, 0x8e, 0xff,
+    0x80, 0x80, 0x81, 0xff, 0x7c, 0x7d, 0x7b, 0xff, 0x79, 0x79, 0x78, 0xff,
+    0x78, 0x79, 0x78, 0xff, 0x6e, 0x6c, 0x6b, 0xff, 0x68, 0x66, 0x66, 0xff,
+    0x69, 0x6a, 0x67, 0xff, 0x60, 0x5e, 0x5d, 0xff, 0x5b, 0x58, 0x57, 0xff,
+    0x58, 0x56, 0x55, 0xff, 0x61, 0x5e, 0x5d, 0xff, 0x54, 0x53, 0x52, 0xff,
+    0x60, 0x5d, 0x5c, 0xff, 0x5b, 0x5b, 0x5a, 0xff, 0x59, 0x5a, 0x58, 0xff,
+    0x48, 0x43, 0x42, 0xff, 0x44, 0x40, 0x40, 0xff, 0x48, 0x46, 0x44, 0xff,
+    0x4a, 0x46, 0x46, 0xff, 0x4c, 0x4f, 0x4c, 0xff, 0x49, 0x4a, 0x48, 0xff,
+    0x47, 0x46, 0x41, 0xff, 0x44, 0x43, 0x3f, 0xff,
+    0xa2, 0xa4, 0xa4, 0xff, 0x96, 0x95, 0x96, 0xff, 0x8e, 0x8c, 0x8a, 0xff,
+    0x89, 0x86, 0x86, 0xff, 0x82, 0x7c, 0x7c, 0xff, 0x83, 0x80, 0x7f, 0xff,
+    0x82, 0x82, 0x80, 0xff, 0x82, 0x83, 0x81, 0xff, 0x82, 0x85, 0x85, 0xff,
+    0x7c, 0x7c, 0x7c, 0xff, 0x77, 0x78, 0x75, 0xff, 0x75, 0x77, 0x76, 0xff,
+    0x71, 0x72, 0x70, 0xff, 0x68, 0x66, 0x65, 0xff, 0x62, 0x60, 0x5f, 0xff,
+    0x5f, 0x5e, 0x5c, 0xff, 0x5a, 0x52, 0x4f, 0xff, 0x5b, 0x53, 0x4f, 0xff,
+    0x50, 0x49, 0x49, 0xff, 0x5c, 0x58, 0x57, 0xff, 0x50, 0x4b, 0x49, 0xff,
+    0x57, 0x54, 0x53, 0xff, 0x4f, 0x4f, 0x4e, 0xff, 0x53, 0x57, 0x55, 0xff,
+    0x48, 0x45, 0x44, 0xff, 0x3c, 0x33, 0x33, 0xff, 0x49, 0x45, 0x43, 0xff,
+    0x41, 0x3f, 0x3d, 0xff, 0x49, 0x46, 0x44, 0xff, 0x4a, 0x48, 0x47, 0xff,
+    0x3f, 0x3c, 0x3a, 0xff, 0x43, 0x41, 0x3e, 0xff,
+    0x99, 0x9c, 0x9a, 0xff, 0x90, 0x8e, 0x8f, 0xff, 0x8c, 0x8b, 0x89, 0xff,
+    0x81, 0x7c, 0x7c, 0xff, 0x7d, 0x78, 0x78, 0xff, 0x82, 0x82, 0x80, 0xff,
+    0x77, 0x74, 0x73, 0xff, 0x75, 0x73, 0x73, 0xff, 0x78, 0x76, 0x76, 0xff,
+    0x70, 0x6f, 0x6f, 0xff, 0x6d, 0x6c, 0x6b, 0xff, 0x6e, 0x6f, 0x6d, 0xff,
+    0x68, 0x68, 0x66, 0xff, 0x5f, 0x5b, 0x5b, 0xff, 0x5b, 0x56, 0x56, 0xff,
+    0x5a, 0x58, 0x57, 0xff, 0x53, 0x49, 0x47, 0xff, 0x4e, 0x45, 0x43, 0xff,
+    0x49, 0x43, 0x41, 0xff, 0x5f, 0x5b, 0x5a, 0xff, 0x46, 0x3f, 0x3e, 0xff,
+    0x4b, 0x48, 0x47, 0xff, 0x42, 0x3f, 0x3f, 0xff, 0x4d, 0x50, 0x50, 0xff,
+    0x52, 0x52, 0x51, 0xff, 0x37, 0x31, 0x30, 0xff, 0x3d, 0x38, 0x37, 0xff,
+    0x3f, 0x39, 0x38, 0xff, 0x40, 0x3c, 0x3b, 0xff, 0x4a, 0x48, 0x47, 0xff,
+    0x3f, 0x3d, 0x3b, 0xff, 0x46, 0x45, 0x43, 0xff,
+};
diff --git a/projects/libwebp/img_grid.h b/projects/libwebp/img_grid.h
new file mode 100644
index 0000000..33fcfcd
--- /dev/null
+++ b/projects/libwebp/img_grid.h
@@ -0,0 +1,104 @@
+#include <stdint.h>
+
+static const int kImgGridWidth = 16;
+static const int kImgGridHeight = 16;
+
+/*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit, Fix 0xFF: 8 bit*/
+static const uint8_t kImgGridData[] = {
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff,
+    0xff, 0x00, 0x00, 0xff,
+};
diff --git a/projects/libwebp/img_peak.h b/projects/libwebp/img_peak.h
new file mode 100644
index 0000000..9b2a116
--- /dev/null
+++ b/projects/libwebp/img_peak.h
@@ -0,0 +1,5512 @@
+#include <stdint.h>
+
+static const int kImgPeakWidth = 128;
+static const int kImgPeakHeight = 128;
+
+/*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit, Fix 0xFF: 8 bit*/
+static const uint8_t kImgPeakData[] = {
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xe4, 0xe2, 0xd8, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xec, 0xdb, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xec, 0xd6, 0xc4, 0xff, 0xd9, 0xc6, 0xb4, 0xff,
+    0xa7, 0x94, 0x84, 0xff, 0xa9, 0x9b, 0x8c, 0xff, 0xa9, 0x9b, 0x8c, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xc0, 0xaa, 0x9c, 0xff, 0xc4, 0xb2, 0xac, 0xff,
+    0xe6, 0xd6, 0xcc, 0xff, 0xee, 0xdd, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xde, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xc0, 0xaa, 0x9c, 0xff,
+    0x9c, 0x7e, 0x6c, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x94, 0x79, 0x6c, 0xff,
+    0x94, 0x79, 0x6c, 0xff, 0x8e, 0x79, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xbf, 0xaa, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xd6, 0xc5, 0xbc, 0xff,
+    0xec, 0xdb, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xde, 0xd4, 0xff,
+    0xd4, 0xb8, 0xac, 0xff, 0x94, 0x79, 0x6c, 0xff, 0x84, 0x6e, 0x5c, 0xff,
+    0x94, 0x79, 0x6c, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0x8a, 0x76, 0x6c, 0xff,
+    0x9e, 0x8b, 0x84, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0xc4, 0xb2, 0xac, 0xff, 0xcc, 0xbd, 0xbc, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xd9, 0xcc, 0xbc, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xdc, 0xbe, 0xb4, 0xff, 0xac, 0x8e, 0x7c, 0xff, 0x9c, 0x81, 0x74, 0xff,
+    0x7c, 0x62, 0x54, 0xff, 0x80, 0x67, 0x5c, 0xff, 0xa4, 0x89, 0x7c, 0xff,
+    0xbc, 0xa4, 0x9c, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0xac, 0x8d, 0x84, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xc7, 0xb8, 0xac, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xc9, 0xc0, 0xb4, 0xff, 0xe4, 0xd2, 0xc4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xec, 0xd6, 0xc4, 0xff, 0xa4, 0x89, 0x7c, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x7e, 0x67, 0x54, 0xff, 0x7c, 0x62, 0x54, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x8c, 0x6d, 0x6c, 0xff,
+    0xac, 0x8d, 0x84, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0xac, 0x8d, 0x8c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x9c, 0x7a, 0x7c, 0xff,
+    0x8e, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xd7, 0xcc, 0xc4, 0xff, 0xd6, 0xc5, 0xbc, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0xc7, 0xb8, 0xac, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xec, 0xd6, 0xc4, 0xff, 0x94, 0x76, 0x64, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x8e, 0x72, 0x74, 0xff, 0xa4, 0x85, 0x84, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x8e, 0x72, 0x74, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0xa8, 0x93, 0x8c, 0xff, 0xc4, 0xb2, 0xac, 0xff, 0xee, 0xdd, 0xd4, 0xff,
+    0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xe7, 0xce, 0xbc, 0xff,
+    0x84, 0x6e, 0x5c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0xa4, 0x85, 0x84, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xa4, 0x85, 0x84, 0xff, 0xcc, 0xaa, 0xac, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x8e, 0x72, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x8f, 0x86, 0x7c, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xdc, 0xbe, 0xb4, 0xff,
+    0xee, 0xdd, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0x84, 0x6e, 0x5c, 0xff,
+    0x6f, 0x56, 0x44, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x94, 0x79, 0x6c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0xb4, 0x96, 0x94, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x8e, 0x72, 0x74, 0xff, 0xbd, 0xa6, 0xa4, 0xff, 0xdc, 0xba, 0xbc, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xac, 0x8d, 0x8c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x9c, 0x7a, 0x7c, 0xff, 0x84, 0x77, 0x74, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0x9c, 0x93, 0x8c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x8f, 0x86, 0x7c, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xee, 0xdd, 0xd4, 0xff, 0xee, 0xdd, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xe7, 0xce, 0xbc, 0xff, 0x9c, 0x7e, 0x6c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0xd4, 0xc6, 0xc4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xef, 0xe2, 0xdc, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xe4, 0xce, 0xcc, 0xff,
+    0xec, 0xde, 0xdc, 0xff, 0xf8, 0xea, 0xec, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x84, 0x77, 0x74, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xee, 0xdd, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xd4, 0xc2, 0xac, 0xff,
+    0x7e, 0x67, 0x54, 0xff, 0x7c, 0x5c, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x74, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0xac, 0x8d, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xdc, 0xba, 0xbc, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xba, 0xb0, 0xa4, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xbd, 0xa6, 0xa4, 0xff, 0xec, 0xdb, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xe7, 0xce, 0xbc, 0xff, 0x7c, 0x62, 0x54, 0xff,
+    0x6f, 0x56, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x8d, 0x72, 0x6b, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xba, 0xb0, 0xa4, 0xff, 0x94, 0x8b, 0x84, 0xff, 0xba, 0xb0, 0xa4, 0xff,
+    0xec, 0xd6, 0xc4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xc7, 0xb2, 0xa4, 0xff, 0x7e, 0x67, 0x54, 0xff, 0x6f, 0x56, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x94, 0x8b, 0x84, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xe6, 0xd6, 0xcc, 0xff, 0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xec, 0xdb, 0xcc, 0xff, 0x9c, 0x7e, 0x6c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x9c, 0x7a, 0x74, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x8a, 0x76, 0x6c, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xc4, 0xb2, 0xac, 0xff,
+    0xcc, 0xbd, 0xbc, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xd7, 0xcc, 0xc4, 0xff,
+    0xc9, 0xc0, 0xb4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xd9, 0xcc, 0xbc, 0xff, 0xef, 0xe2, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xec, 0xd6, 0xc4, 0xff, 0x84, 0x6e, 0x5c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x80, 0x67, 0x5c, 0xff,
+    0x8d, 0x72, 0x6b, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xd9, 0xd4, 0xcc, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xd6, 0xc5, 0xbc, 0xff,
+    0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xd9, 0xc6, 0xb4, 0xff,
+    0x7e, 0x67, 0x54, 0xff, 0x6f, 0x56, 0x44, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x7e, 0x67, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x80, 0x67, 0x5c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x7c, 0x72, 0x64, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xe4, 0xde, 0xdc, 0xff, 0xcc, 0xc2, 0xbc, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xd9, 0xc6, 0xb4, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6f, 0x56, 0x44, 0xff,
+    0x7c, 0x62, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x8d, 0x72, 0x6b, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x8d, 0x72, 0x6b, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x75, 0x62, 0x64, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xc7, 0xb8, 0xac, 0xff, 0xda, 0xd4, 0xc4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xd4, 0xb8, 0xac, 0xff, 0x80, 0x67, 0x5c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7c, 0x5e, 0x5c, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x8d, 0x72, 0x6b, 0xff, 0x75, 0x56, 0x54, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x75, 0x56, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xd7, 0xcc, 0xc4, 0xff,
+    0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xac, 0x8e, 0x7c, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x6f, 0x56, 0x44, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x6f, 0x56, 0x44, 0xff, 0x7c, 0x62, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x8c, 0x6e, 0x64, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x7d, 0x62, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0xb4, 0x9b, 0x94, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7c, 0x72, 0x64, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xcc, 0xbd, 0xbc, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc2, 0xc2, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xa4, 0x86, 0x74, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff, 0x7c, 0x62, 0x54, 0xff,
+    0x7d, 0x62, 0x5c, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x8e, 0x72, 0x74, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0xbc, 0xa4, 0x9c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xaa, 0xac, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xc9, 0xc0, 0xb4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xac, 0x8e, 0x7c, 0xff, 0x6f, 0x56, 0x44, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x9c, 0x7a, 0x74, 0xff, 0xa4, 0x85, 0x84, 0xff, 0x9c, 0x7a, 0x7c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0xbc, 0xa4, 0x9c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xd7, 0xcc, 0xc4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0xf7, 0xdd, 0xcc, 0xff, 0x94, 0x79, 0x6c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6f, 0x56, 0x44, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x64, 0x5a, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x8d, 0x72, 0x6b, 0xff, 0x8c, 0x6d, 0x6c, 0xff,
+    0x8c, 0x6d, 0x6c, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x8c, 0x6d, 0x6c, 0xff,
+    0x7c, 0x5e, 0x5c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xec, 0xdb, 0xcc, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xfc, 0xe2, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xf7, 0xdd, 0xcc, 0xff, 0x94, 0x76, 0x64, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x6f, 0x56, 0x44, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x7c, 0x5e, 0x5c, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x8c, 0x6e, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x7c, 0x5e, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x75, 0x56, 0x54, 0xff, 0x50, 0x4e, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xbf, 0xaa, 0xa4, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xd9, 0xcc, 0xbc, 0xff,
+    0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x6f, 0x56, 0x44, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5c, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5e, 0x5c, 0xff, 0x8c, 0x6d, 0x6c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x8d, 0x72, 0x6b, 0xff, 0x69, 0x55, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x90, 0x7f, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x90, 0x7f, 0x74, 0xff, 0x9c, 0x88, 0x7c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x8e, 0x79, 0x74, 0xff, 0xac, 0x8d, 0x8c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xba, 0xb0, 0xa4, 0xff,
+    0xe6, 0xd6, 0xcc, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe2, 0xcc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xac, 0x8e, 0x7c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x74, 0x5b, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0xac, 0x8d, 0x8c, 0xff, 0xbf, 0xaa, 0xa4, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x80, 0x67, 0x5c, 0xff, 0x8a, 0x76, 0x6c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x80, 0x67, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x9c, 0x7a, 0x74, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xe2, 0xdc, 0xcc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe6, 0xcc, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0x94, 0x79, 0x6c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x7c, 0x62, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0xbc, 0xa4, 0x9c, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xac, 0x8d, 0x8c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x7d, 0x62, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x75, 0x62, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x96, 0x86, 0x8c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xba, 0xb0, 0xa4, 0xff, 0xd9, 0xd4, 0xcc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0x9c, 0x7e, 0x6c, 0xff, 0x7c, 0x62, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x94, 0x79, 0x6c, 0xff, 0xbc, 0xa4, 0x9c, 0xff, 0xc7, 0xb8, 0xac, 0xff,
+    0x70, 0x66, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x7c, 0x72, 0x64, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x74, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x7c, 0x5e, 0x5c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x75, 0x56, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0xac, 0x8d, 0x8c, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xba, 0xb0, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xe2, 0xdc, 0xcc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf9, 0xe2, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xac, 0x8d, 0x84, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff, 0x74, 0x4e, 0x44, 0xff,
+    0x74, 0x4e, 0x44, 0xff, 0x75, 0x56, 0x54, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x8a, 0x76, 0x6c, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0x8a, 0x76, 0x6c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0x84, 0x77, 0x74, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x8d, 0x72, 0x6b, 0xff, 0x96, 0x85, 0x84, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xcc, 0xbe, 0xc4, 0xff, 0xa1, 0xa2, 0x9c, 0xff, 0xc7, 0xb8, 0xac, 0xff,
+    0xd7, 0xcc, 0xc4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf9, 0xe2, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xb4, 0x9a, 0x8c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x4e, 0x44, 0xff, 0x75, 0x56, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x74, 0x4e, 0x4c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x8c, 0x6d, 0x6c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x7d, 0x62, 0x5c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xad, 0x9a, 0x9c, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0xbc, 0xb6, 0xac, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xb1, 0xa3, 0x94, 0xff, 0xc9, 0xc0, 0xb4, 0xff, 0xd9, 0xcc, 0xbc, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x7c, 0x72, 0x64, 0xff,
+    0x8f, 0x86, 0x7c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x8e, 0x72, 0x74, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0xbc, 0xaa, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0xbd, 0xa6, 0xa4, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xea, 0xe4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0x7c, 0x72, 0x64, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x64, 0x5a, 0x4c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x7c, 0x5e, 0x5c, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5c, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x8c, 0x6d, 0x6c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xad, 0x9a, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xc6, 0xb1, 0xb4, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xbc, 0xb6, 0xac, 0xff, 0xbf, 0xaa, 0xa4, 0xff, 0xc9, 0xc0, 0xb4, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0x90, 0x7f, 0x74, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7c, 0x5e, 0x5c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x4e, 0x4c, 0xff, 0x5c, 0x3e, 0x34, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x80, 0x67, 0x5c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x78, 0x66, 0x64, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xad, 0x9a, 0x9c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xbc, 0xaa, 0xac, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0x9c, 0x7a, 0x7c, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xcc, 0xc2, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0xd7, 0xcc, 0xc4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0x90, 0x7f, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x7c, 0x5d, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x77, 0x66, 0x6c, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x96, 0x86, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x8e, 0x72, 0x74, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xc2, 0xbc, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xa9, 0x9b, 0x8c, 0xff, 0xf9, 0xe2, 0xd4, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xea, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x9c, 0x93, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xd7, 0xcc, 0xc4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x70, 0x66, 0x5c, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x78, 0x77, 0x74, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xad, 0x9a, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xbc, 0xaa, 0xac, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xb0, 0xaa, 0x9c, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xea, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x92, 0x92, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x50, 0x4e, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x75, 0x56, 0x54, 0xff, 0x7c, 0x5e, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x81, 0x72, 0x74, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0x94, 0x8b, 0x84, 0xff, 0xe4, 0xde, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xe4, 0xde, 0xdc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x74, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x70, 0x66, 0x5c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x75, 0x62, 0x64, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xc7, 0xb8, 0xac, 0xff,
+    0xf4, 0xea, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xe8, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0x9c, 0x93, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xe4, 0xde, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xbd, 0xa6, 0xa4, 0xff,
+    0x9c, 0x7a, 0x7c, 0xff, 0x75, 0x62, 0x64, 0xff, 0x7c, 0x5e, 0x5c, 0xff,
+    0x74, 0x4e, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x9c, 0x93, 0x8c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xa1, 0xa2, 0x9c, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0x9c, 0x93, 0x8c, 0xff,
+    0xef, 0xe2, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xe8, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x71, 0x72, 0x6c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xdc, 0xd6, 0xdc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xbe, 0xc4, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xb4, 0x96, 0x94, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xec, 0xde, 0xdc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xd6, 0xc5, 0xbc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x92, 0x92, 0x8c, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xbc, 0xaa, 0xac, 0xff, 0xbc, 0xaa, 0xac, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x7c, 0x5d, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x94, 0x8b, 0x84, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0x9c, 0x93, 0x8c, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xdc, 0xd6, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x84, 0x77, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xcc, 0xbe, 0xc4, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xad, 0x9a, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xee, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xee, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x75, 0x62, 0x64, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x53, 0x41, 0x3c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x53, 0x41, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x7f, 0x6a, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xba, 0xb0, 0xa4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xee, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x71, 0x72, 0x74, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x84, 0x77, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xb0, 0xa3, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xe4, 0xe2, 0xd8, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x72, 0x5b, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x75, 0x62, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc2, 0xc2, 0xbc, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0xd6, 0xc5, 0xbc, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xfc, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x78, 0x77, 0x74, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x83, 0x82, 0x84, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x8c, 0x86, 0x8c, 0xff, 0x96, 0x85, 0x84, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x7d, 0x62, 0x5c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x96, 0x85, 0x84, 0xff, 0x7c, 0x72, 0x64, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xf8, 0xea, 0xec, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xc2, 0xc2, 0xbc, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xd7, 0xcc, 0xc4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0xcc, 0xbd, 0xbc, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x7c, 0x5d, 0x54, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xbe, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xc2, 0xbc, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xee, 0xdd, 0xd4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0x77, 0x66, 0x6c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x3e, 0x34, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x9c, 0x92, 0x84, 0xff,
+    0xe2, 0xdc, 0xcc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x75, 0x62, 0x64, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x83, 0x82, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xbe, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xcc, 0xbd, 0xbc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x94, 0x8e, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x55, 0x55, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0x9c, 0x93, 0x8c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xc4, 0xbe, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xfb, 0xf9, 0xec, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf1, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xac, 0xa9, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x50, 0x4e, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x3e, 0x34, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x3e, 0x34, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x81, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xac, 0xa9, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xc2, 0xbc, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x9c, 0x88, 0x7c, 0xff, 0xe6, 0xd6, 0xcc, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x83, 0x82, 0x84, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x7f, 0x6a, 0x64, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xbd, 0xbc, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0xc6, 0xb1, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x74, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x96, 0x85, 0x84, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x77, 0x66, 0x6c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xdc, 0xd6, 0xdc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xcc, 0xbe, 0xc4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0xba, 0xb0, 0xa4, 0xff, 0xf4, 0xea, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xe4, 0xe2, 0xd8, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x8e, 0x79, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xd7, 0xcc, 0xc4, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x3e, 0x34, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0xcc, 0xbe, 0xac, 0xff, 0xfb, 0xf9, 0xec, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x94, 0x8e, 0x94, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x81, 0x72, 0x74, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0x84, 0x77, 0x74, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x74, 0x4e, 0x4c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x96, 0x85, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x83, 0x82, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xf8, 0xea, 0xec, 0xff, 0xec, 0xe2, 0xe4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0x90, 0x7f, 0x74, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xfb, 0xf9, 0xec, 0xff,
+    0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc2, 0xc2, 0xbc, 0xff, 0xb3, 0xae, 0xac, 0xff, 0x9c, 0x9a, 0x94, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x9c, 0x9a, 0x94, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x94, 0x8b, 0x84, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x7d, 0x62, 0x5c, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x75, 0x56, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0x96, 0x85, 0x84, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xe4, 0xd2, 0xd4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xd9, 0xd4, 0xcc, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xd7, 0xcc, 0xc4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xa1, 0xa2, 0x9c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x9c, 0x93, 0x8c, 0xff, 0xc4, 0xb2, 0xac, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xb0, 0xa3, 0x9c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xe4, 0xde, 0xdc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xf2, 0xf0, 0xec, 0xff,
+    0xcc, 0xbe, 0xc4, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0x92, 0x92, 0x8c, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0x80, 0x67, 0x5c, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x89, 0x86, 0x84, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xa1, 0xa2, 0x9c, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xfc, 0xf6, 0xf4, 0xff, 0xdc, 0xd6, 0xdc, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xd4, 0xc6, 0xc4, 0xff,
+    0xdc, 0xd6, 0xdc, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xe9, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x70, 0x5e, 0x5c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xbc, 0xaa, 0xac, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x3e, 0x34, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x3e, 0x34, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0x9c, 0x9a, 0x94, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xc2, 0xc2, 0xbc, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xec, 0xe2, 0xe4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc8, 0xca, 0xc4, 0xff,
+    0xc2, 0xc2, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xbc, 0xaa, 0xac, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff,
+    0x69, 0x4e, 0x44, 0xff, 0x69, 0x4e, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xc8, 0xca, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0xf4, 0xf2, 0xf4, 0xff,
+    0xf4, 0xf2, 0xf4, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xc9, 0xc0, 0xb4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x78, 0x66, 0x64, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x6c, 0x66, 0x6c, 0xff, 0x83, 0x82, 0x84, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x75, 0x56, 0x54, 0xff, 0x69, 0x4e, 0x44, 0xff,
+    0x74, 0x5b, 0x4c, 0xff, 0x74, 0x4e, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x72, 0x62, 0x5c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x92, 0x92, 0x8c, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xc6, 0xb1, 0xb4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc2, 0xc2, 0xbc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xec, 0xe2, 0xe4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc4, 0xbe, 0xc4, 0xff, 0xcc, 0xbd, 0xbc, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xf4, 0xea, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xbc, 0xaa, 0xac, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xdc, 0xba, 0xbc, 0xff, 0xc6, 0xb1, 0xb4, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x75, 0x56, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x72, 0x5b, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x84, 0x77, 0x74, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x84, 0x79, 0x7c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xd7, 0xcc, 0xc4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xa1, 0xa2, 0x9c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xcc, 0xbe, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0x8e, 0x72, 0x74, 0xff, 0x69, 0x55, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x74, 0x55, 0x4c, 0xff, 0x74, 0x55, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x92, 0x92, 0x8c, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xec, 0xea, 0xec, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0x89, 0x86, 0x84, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xfc, 0xf2, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x71, 0x72, 0x6c, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0x92, 0x92, 0x8c, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x92, 0x92, 0x8c, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0xa1, 0xa2, 0x9c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x75, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x75, 0x62, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x74, 0x55, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x3e, 0x34, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x54, 0x46, 0x3c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x94, 0x8e, 0x94, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xad, 0x9a, 0x9c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xc8, 0xca, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xf4, 0xea, 0xe4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xc4, 0xba, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x90, 0x7f, 0x74, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0x71, 0x72, 0x74, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x89, 0x86, 0x84, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0x96, 0x85, 0x84, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6a, 0x53, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x6c, 0x4a, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0x81, 0x72, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xb0, 0xa3, 0x9c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfc, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf0, 0xd4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0x88, 0x8a, 0x84, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x6a, 0x53, 0x4c, 0xff, 0x75, 0x56, 0x54, 0xff, 0x6c, 0x4a, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x90, 0x7f, 0x74, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xc8, 0xca, 0xc4, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xb4, 0xaa, 0xac, 0xff, 0xc4, 0xba, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x94, 0x8b, 0x84, 0xff, 0xb4, 0xae, 0x9c, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x6a, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x75, 0x62, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x4e, 0x4c, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0x84, 0x79, 0x7c, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9e, 0x8e, 0x94, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd9, 0xd4, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0x9c, 0x93, 0x8c, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfc, 0xf9, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfc, 0xf9, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf0, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x71, 0x72, 0x74, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x6c, 0x66, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0x71, 0x72, 0x6c, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x69, 0x4e, 0x4c, 0xff, 0x5c, 0x42, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x60, 0x46, 0x3c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x96, 0x85, 0x84, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x94, 0x8b, 0x84, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x9e, 0x8e, 0x94, 0xff, 0x9c, 0x9a, 0x94, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xa4, 0x9e, 0xa4, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc2, 0xc2, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xc8, 0xca, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xd4, 0xc6, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xc6, 0xb1, 0xb4, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xfb, 0xf9, 0xec, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x71, 0x72, 0x74, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x6c, 0x66, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x69, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x61, 0x48, 0x44, 0xff, 0x5c, 0x42, 0x44, 0xff,
+    0x5c, 0x42, 0x3c, 0xff, 0x53, 0x41, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x96, 0x85, 0x84, 0xff,
+    0x8e, 0x7a, 0x7c, 0xff, 0x8c, 0x81, 0x84, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x8c, 0x81, 0x84, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0x94, 0x8e, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0xcc, 0xbe, 0xc4, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x92, 0x92, 0x8c, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xdc, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x6a, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x83, 0x82, 0x84, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x71, 0x72, 0x6c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x61, 0x48, 0x44, 0xff, 0x61, 0x48, 0x44, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x8e, 0x7a, 0x7c, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xae, 0xa4, 0xa4, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x8c, 0x81, 0x84, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x94, 0x8c, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xcc, 0xbd, 0xbc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x61, 0x48, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x89, 0x86, 0x84, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xd4, 0xc6, 0xc4, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x69, 0x55, 0x54, 0xff, 0x75, 0x62, 0x64, 0xff,
+    0x94, 0x8c, 0x8c, 0xff, 0x89, 0x86, 0x84, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xbe, 0xc4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xb4, 0xaa, 0xac, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xe2, 0xdc, 0xcc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x69, 0x4e, 0x4c, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc5, 0xb7, 0xb4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0x9e, 0x8e, 0x94, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xbc, 0xb0, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xe4, 0xce, 0xcc, 0xff, 0xd5, 0xcd, 0xcc, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xc4, 0xbe, 0xc4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xec, 0xea, 0xec, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xc4, 0xbe, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xb1, 0xb4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xb4, 0xaa, 0xac, 0xff, 0xbc, 0xaa, 0xac, 0xff, 0xcc, 0xbe, 0xc4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xd8, 0xdc, 0xd4, 0xff, 0xe8, 0xe7, 0xe4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x78, 0x77, 0x74, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xe6, 0xd6, 0xd6, 0xff, 0xcc, 0xbd, 0xbc, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x84, 0x77, 0x74, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xe8, 0xe7, 0xe4, 0xff,
+    0xe8, 0xe7, 0xe4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xd5, 0xcd, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x83, 0x82, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xe8, 0xe7, 0xe4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xe4, 0xde, 0xdc, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xf4, 0xf2, 0xf4, 0xff, 0xe8, 0xe7, 0xe4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xba, 0xbc, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0xe8, 0xe7, 0xe4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x6c, 0x66, 0x6c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x83, 0x82, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xbc, 0xb1, 0xb4, 0xff, 0xae, 0xa4, 0xa4, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc8, 0xca, 0xc4, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xec, 0xea, 0xec, 0xff, 0xec, 0xea, 0xec, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd9, 0xd4, 0xcc, 0xff,
+    0xd8, 0xdc, 0xd4, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xfb, 0xf9, 0xec, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x71, 0x72, 0x74, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x71, 0x72, 0x6c, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xa4, 0x9e, 0xa4, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xd8, 0xdc, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xcc, 0xc5, 0xc4, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xbc, 0xb6, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc8, 0xca, 0xc4, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xf2, 0xf0, 0xec, 0xff, 0xf2, 0xf0, 0xec, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xfa, 0xfe, 0xe4, 0xff,
+    0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x78, 0x77, 0x74, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0xc6, 0xb1, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xb3, 0xae, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xcf, 0xc6, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xcf, 0xc6, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xcf, 0xc6, 0xcc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xd9, 0xd4, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xd8, 0xdc, 0xd4, 0xff, 0xfc, 0xfe, 0xf4, 0xff,
+    0xfb, 0xfe, 0xec, 0xff, 0xfa, 0xfe, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x8c, 0x86, 0x8c, 0xff, 0xac, 0xa9, 0xac, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xc5, 0xc4, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xa1, 0xa2, 0x9c, 0xff, 0xbc, 0xb6, 0xac, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xd8, 0xdc, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xf2, 0xf0, 0xec, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xfb, 0xfe, 0xec, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x94, 0x8c, 0x8c, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xd6, 0xd2, 0xd4, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xe4, 0xe1, 0xe4, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xe8, 0xe7, 0xe4, 0xff,
+    0xfb, 0xf9, 0xec, 0xff, 0xfb, 0xf9, 0xec, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0xc9, 0xc0, 0xb4, 0xff, 0xb0, 0xa3, 0x9c, 0xff, 0xb1, 0xa3, 0x94, 0xff,
+    0xbc, 0xa4, 0x9c, 0xff, 0xc0, 0xaa, 0x9c, 0xff, 0xd6, 0xc5, 0xbc, 0xff,
+    0xcc, 0xbe, 0xac, 0xff, 0xd9, 0xcc, 0xbc, 0xff, 0xe2, 0xdc, 0xcc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf7, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xbc, 0xb1, 0xb4, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xa1, 0x99, 0x9c, 0xff,
+    0xac, 0xa9, 0xac, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xec, 0xea, 0xec, 0xff,
+    0xe8, 0xe7, 0xe4, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc2, 0xc2, 0xbc, 0xff,
+    0xa3, 0xa3, 0xa4, 0xff, 0xb1, 0xaa, 0xa4, 0xff, 0xb3, 0xae, 0xac, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xd9, 0xd4, 0xcc, 0xff, 0xe8, 0xe7, 0xe4, 0xff,
+    0xd9, 0xd4, 0xcc, 0xff, 0xd7, 0xcc, 0xc4, 0xff, 0xbc, 0xb6, 0xac, 0xff,
+    0xb0, 0xa3, 0x9c, 0xff, 0xc4, 0xb2, 0xac, 0xff, 0xbc, 0xa4, 0x9c, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0x9e, 0x8b, 0x84, 0xff, 0xa7, 0x94, 0x84, 0xff,
+    0x9c, 0x8e, 0x7c, 0xff, 0xa9, 0x9b, 0x8c, 0xff, 0xb4, 0xaa, 0x94, 0xff,
+    0xbc, 0xb6, 0xac, 0xff, 0xda, 0xd4, 0xc4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xba, 0xb6, 0xb4, 0xff, 0xa4, 0x9e, 0xa4, 0xff, 0x89, 0x86, 0x84, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0x89, 0x86, 0x84, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0x83, 0x82, 0x84, 0xff, 0x94, 0x8e, 0x94, 0xff,
+    0xd7, 0xd6, 0xd4, 0xff, 0xf4, 0xf2, 0xf4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xe4, 0xe1, 0xe4, 0xff, 0xd8, 0xdc, 0xd4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xd6, 0xd2, 0xd4, 0xff,
+    0xa1, 0x99, 0x9c, 0xff, 0xb3, 0xae, 0xac, 0xff, 0xbc, 0xb6, 0xac, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0xf2, 0xf0, 0xec, 0xff, 0xd8, 0xdc, 0xd4, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xcc, 0xbd, 0xbc, 0xff, 0xef, 0xe2, 0xdc, 0xff, 0xc6, 0xb1, 0xb4, 0xff,
+    0xac, 0x8d, 0x8c, 0xff, 0xac, 0x8d, 0x84, 0xff, 0xa4, 0x89, 0x7c, 0xff,
+    0x9c, 0x88, 0x7c, 0xff, 0x9c, 0x8e, 0x7c, 0xff, 0x9c, 0x8e, 0x7c, 0xff,
+    0xb1, 0xa3, 0x94, 0xff, 0xb1, 0xa3, 0x94, 0xff, 0xb4, 0xae, 0x9c, 0xff,
+    0xd9, 0xcc, 0xbc, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x81, 0x7e, 0x7c, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xa1, 0x99, 0x9c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0x88, 0x8a, 0x84, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x83, 0x82, 0x84, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0x9c, 0x9a, 0x94, 0xff, 0x89, 0x86, 0x84, 0xff, 0x71, 0x72, 0x6c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xe8, 0xe7, 0xe4, 0xff, 0xec, 0xea, 0xec, 0xff,
+    0xe8, 0xe7, 0xe4, 0xff, 0xe4, 0xe1, 0xe4, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xc4, 0xbe, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xc4, 0xc3, 0xc4, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0x9c, 0x9a, 0x94, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xd7, 0xd6, 0xd4, 0xff,
+    0xf2, 0xf0, 0xec, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0xdc, 0xba, 0xbc, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0xa4, 0x85, 0x84, 0xff, 0x9c, 0x88, 0x7c, 0xff,
+    0x9c, 0x88, 0x7c, 0xff, 0x9c, 0x88, 0x7c, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0xa4, 0x86, 0x74, 0xff, 0x9c, 0x88, 0x7c, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0xb1, 0xa3, 0x94, 0xff, 0xb4, 0xae, 0x9c, 0xff, 0xe2, 0xdc, 0xcc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0x9a, 0x94, 0x94, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x94, 0x8e, 0x94, 0xff, 0xba, 0xb6, 0xb4, 0xff, 0xcc, 0xcc, 0xcc, 0xff,
+    0xe8, 0xe7, 0xe4, 0xff, 0xd7, 0xd6, 0xd4, 0xff, 0xdc, 0xd6, 0xdc, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xba, 0xb6, 0xb4, 0xff,
+    0xd9, 0xd4, 0xcc, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xa1, 0x9e, 0x9c, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xf4, 0xea, 0xe4, 0xff, 0xbc, 0xb0, 0xac, 0xff,
+    0xbc, 0xaa, 0xac, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0xa4, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xbc, 0xa4, 0x9c, 0xff, 0xbf, 0xaa, 0xa4, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xac, 0x8d, 0x84, 0xff, 0x9c, 0x88, 0x7c, 0xff,
+    0x90, 0x7f, 0x74, 0xff, 0xac, 0x8d, 0x84, 0xff, 0xba, 0xb0, 0xa4, 0xff,
+    0xf4, 0xe9, 0xd4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf7, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0x89, 0x86, 0x84, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0xa3, 0xa3, 0xa4, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xac, 0xa9, 0xac, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0x8b, 0x8b, 0x8c, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xb9, 0xbc, 0xff,
+    0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xdc, 0xdc, 0xdc, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xbc, 0xb9, 0xbc, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0xdc, 0xdc, 0xdc, 0xff, 0xd6, 0xd2, 0xd4, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xbc, 0xb0, 0xac, 0xff, 0xa6, 0x95, 0x94, 0xff, 0x96, 0x86, 0x8c, 0xff,
+    0x9e, 0x8b, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xa4, 0x85, 0x84, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xa6, 0x95, 0x94, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0xa7, 0x94, 0x84, 0xff,
+    0xba, 0xb0, 0xa4, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf7, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x6a, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x7b, 0x7a, 0x7c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x9c, 0x9a, 0x94, 0xff,
+    0x71, 0x72, 0x74, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xc8, 0xca, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0xc2, 0xbe, 0xbc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xe4, 0xe1, 0xe4, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xd5, 0xcd, 0xcc, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x9c, 0x7a, 0x7c, 0xff, 0xa4, 0x85, 0x84, 0xff, 0xa4, 0x85, 0x84, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0xb4, 0x96, 0x94, 0xff,
+    0xbd, 0xa6, 0xa4, 0xff, 0xc5, 0xb7, 0xb4, 0xff, 0xbc, 0xa4, 0x9c, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0x9c, 0x88, 0x7c, 0xff, 0x9c, 0x88, 0x7c, 0xff,
+    0x9c, 0x92, 0x84, 0xff, 0xc7, 0xb8, 0xac, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0xa1, 0xa2, 0x9c, 0xff, 0xb4, 0xb2, 0xb4, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xc2, 0xc2, 0xbc, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0xa1, 0x9e, 0x9c, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0xdc, 0xd6, 0xdc, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xd4, 0xc6, 0xc4, 0xff,
+    0xc6, 0xb1, 0xb4, 0xff, 0xe6, 0xd6, 0xd6, 0xff, 0xcc, 0xbe, 0xc4, 0xff,
+    0xb4, 0x96, 0x94, 0xff, 0xa4, 0x85, 0x84, 0xff, 0x9c, 0x7a, 0x74, 0xff,
+    0x9c, 0x7a, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0xa6, 0x95, 0x94, 0xff, 0xb0, 0xa3, 0x9c, 0xff,
+    0xad, 0x9e, 0x9e, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0x90, 0x7f, 0x74, 0xff,
+    0x9c, 0x81, 0x74, 0xff, 0xa9, 0x9b, 0x8c, 0xff, 0xd8, 0xdc, 0xd4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x8b, 0x8b, 0x8c, 0xff, 0xc4, 0xc3, 0xc4, 0xff,
+    0x9a, 0x94, 0x94, 0xff, 0xb4, 0xb2, 0xb4, 0xff, 0x71, 0x72, 0x74, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x89, 0x86, 0x84, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0xbc, 0xb9, 0xbc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc2, 0xbe, 0xbc, 0xff,
+    0xa6, 0x95, 0x94, 0xff, 0xd4, 0xc6, 0xc4, 0xff, 0xe4, 0xd2, 0xd4, 0xff,
+    0xb4, 0x9b, 0x94, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x9c, 0x7a, 0x7c, 0xff,
+    0x9c, 0x7a, 0x74, 0xff, 0x8e, 0x7a, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xb4, 0x9b, 0x94, 0xff, 0xad, 0x9e, 0x9e, 0xff,
+    0xba, 0xb0, 0xa4, 0xff, 0xbf, 0xaa, 0xa4, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0x84, 0x7e, 0x74, 0xff, 0x90, 0x7f, 0x74, 0xff, 0xa9, 0x9b, 0x8c, 0xff,
+    0xd9, 0xc6, 0xb4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x63, 0x6a, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0xa1, 0x9e, 0x9c, 0xff,
+    0x81, 0x7e, 0x7c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x83, 0x82, 0x84, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0xb4, 0xb2, 0xb4, 0xff, 0xcc, 0xc5, 0xc4, 0xff, 0xac, 0xa9, 0xac, 0xff,
+    0x7b, 0x7a, 0x7c, 0xff, 0xbf, 0xaa, 0xa4, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x9c, 0x7a, 0x74, 0xff, 0x8e, 0x72, 0x74, 0xff,
+    0x9c, 0x7a, 0x7c, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0xae, 0xa4, 0xa4, 0xff, 0xbf, 0xaa, 0xa4, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x8a, 0x76, 0x6c, 0xff, 0x84, 0x7e, 0x74, 0xff,
+    0xa9, 0x9b, 0x8c, 0xff, 0xc9, 0xc0, 0xb4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x83, 0x82, 0x84, 0xff,
+    0xb3, 0xae, 0xac, 0xff, 0x9c, 0x9a, 0x94, 0xff, 0xa3, 0xa3, 0xa4, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x9c, 0x93, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x81, 0x72, 0x74, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x8f, 0x7f, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff, 0xa4, 0x85, 0x84, 0xff,
+    0xa8, 0x93, 0x8c, 0xff, 0xb4, 0x9b, 0x94, 0xff, 0xa8, 0x93, 0x8c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x8c, 0x6e, 0x64, 0xff, 0x90, 0x7f, 0x74, 0xff,
+    0xa7, 0x94, 0x84, 0xff, 0xb0, 0xa3, 0x9c, 0xff, 0xe4, 0xd2, 0xc4, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x64, 0x6a, 0x6c, 0xff, 0x92, 0x92, 0x8c, 0xff, 0x64, 0x6a, 0x6c, 0xff,
+    0x83, 0x82, 0x84, 0xff, 0x7b, 0x7a, 0x7c, 0xff, 0x8b, 0x8b, 0x8c, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x96, 0x85, 0x84, 0xff, 0x9c, 0x80, 0x7c, 0xff,
+    0x96, 0x85, 0x84, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0x9e, 0x8b, 0x84, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x9c, 0x92, 0x84, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0xa7, 0x94, 0x84, 0xff, 0xb1, 0xa3, 0x94, 0xff,
+    0xda, 0xd4, 0xc4, 0xff, 0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf3, 0xf2, 0xdc, 0xff, 0xf3, 0xf2, 0xdc, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x71, 0x72, 0x6c, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x96, 0x86, 0x8c, 0xff, 0xad, 0x9a, 0x9c, 0xff,
+    0xa4, 0x85, 0x84, 0xff, 0xa4, 0x85, 0x84, 0xff, 0x8d, 0x72, 0x6b, 0xff,
+    0x78, 0x66, 0x64, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x9c, 0x7a, 0x74, 0xff, 0xa4, 0x89, 0x7c, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0xe2, 0xdc, 0xcc, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x64, 0x6a, 0x6c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x81, 0x7e, 0x7c, 0xff, 0x78, 0x66, 0x64, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x9d, 0x8d, 0x8c, 0xff, 0xbc, 0xaa, 0xac, 0xff,
+    0xac, 0x8d, 0x8c, 0xff, 0x96, 0x86, 0x8c, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x75, 0x62, 0x64, 0xff, 0x84, 0x77, 0x74, 0xff, 0xbd, 0xa6, 0xa4, 0xff,
+    0x9c, 0x80, 0x7c, 0xff, 0x8e, 0x79, 0x74, 0xff, 0x9c, 0x7a, 0x74, 0xff,
+    0x9c, 0x88, 0x7c, 0xff, 0xa8, 0x9b, 0x94, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0xf2, 0xe9, 0xdc, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x70, 0x66, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x77, 0x66, 0x6c, 0xff, 0x7e, 0x6d, 0x6c, 0xff, 0x84, 0x79, 0x7c, 0xff,
+    0x96, 0x86, 0x8c, 0xff, 0xac, 0x8d, 0x84, 0xff, 0x8e, 0x72, 0x74, 0xff,
+    0x7f, 0x6a, 0x64, 0xff, 0xad, 0x9e, 0x9e, 0xff, 0xba, 0xb0, 0xa4, 0xff,
+    0xb4, 0x9b, 0x94, 0xff, 0x8e, 0x72, 0x74, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x8e, 0x79, 0x74, 0xff, 0x84, 0x7e, 0x74, 0xff, 0xda, 0xd4, 0xc4, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0xf4, 0xf8, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x53, 0x41, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x78, 0x66, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x6c, 0x61, 0x64, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0xa8, 0x93, 0x8c, 0xff, 0x8f, 0x7f, 0x7c, 0xff,
+    0x72, 0x62, 0x5c, 0xff, 0x7f, 0x72, 0x6c, 0xff, 0x9d, 0x8d, 0x8c, 0xff,
+    0xa8, 0x9b, 0x94, 0xff, 0x9c, 0x80, 0x7c, 0xff, 0x8e, 0x79, 0x74, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x8f, 0x86, 0x7c, 0xff, 0xb1, 0xaa, 0xa4, 0xff,
+    0xe4, 0xe2, 0xd8, 0xff, 0xf4, 0xf2, 0xe4, 0xff, 0xf3, 0xf2, 0xdc, 0xff,
+    0xf4, 0xf2, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x7e, 0x6d, 0x6c, 0xff, 0x8f, 0x7f, 0x7c, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x7e, 0x6d, 0x6c, 0xff,
+    0x9d, 0x8d, 0x8c, 0xff, 0x84, 0x79, 0x7c, 0xff, 0x7f, 0x72, 0x6c, 0xff,
+    0x7f, 0x72, 0x6c, 0xff, 0x7c, 0x72, 0x64, 0xff, 0x94, 0x8b, 0x84, 0xff,
+    0xda, 0xd4, 0xc4, 0xff, 0xf4, 0xea, 0xe4, 0xff, 0xf2, 0xe9, 0xdc, 0xff,
+    0xf4, 0xea, 0xe4, 0xff, 0xf4, 0xf8, 0xe4, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x6f, 0x6c, 0x6c, 0xff, 0x78, 0x66, 0x64, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x63, 0x66, 0x64, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x8c, 0x81, 0x84, 0xff, 0x81, 0x72, 0x74, 0xff, 0x81, 0x72, 0x74, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x63, 0x6a, 0x64, 0xff, 0x84, 0x7e, 0x74, 0xff,
+    0xc2, 0xbe, 0xbc, 0xff, 0xe4, 0xe2, 0xd8, 0xff, 0xc9, 0xc0, 0xb4, 0xff,
+    0xf4, 0xea, 0xe4, 0xff, 0xf4, 0xf2, 0xe4, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x69, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x70, 0x5e, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x63, 0x66, 0x64, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x81, 0x72, 0x74, 0xff, 0x84, 0x77, 0x74, 0xff, 0x77, 0x66, 0x6c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x71, 0x72, 0x6c, 0xff,
+    0xb1, 0xaa, 0xa4, 0xff, 0xd6, 0xc5, 0xbc, 0xff, 0x9a, 0x94, 0x94, 0xff,
+    0xd9, 0xd4, 0xcc, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x6b, 0x56, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x6c, 0x61, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x6c, 0x61, 0x64, 0xff,
+    0x6c, 0x66, 0x6c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x71, 0x6a, 0x64, 0xff, 0x6f, 0x6c, 0x6c, 0xff,
+    0x84, 0x77, 0x74, 0xff, 0x89, 0x86, 0x84, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0xcc, 0xc2, 0xbc, 0xff, 0xe4, 0xe2, 0xd8, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x2e, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x6f, 0x6c, 0x6c, 0xff, 0x71, 0x6a, 0x64, 0xff,
+    0x71, 0x6a, 0x64, 0xff, 0x70, 0x66, 0x5c, 0xff, 0x72, 0x62, 0x5c, 0xff,
+    0x88, 0x8a, 0x84, 0xff, 0xa8, 0x9b, 0x94, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x5f, 0x62, 0x64, 0xff, 0x5f, 0x62, 0x64, 0xff, 0x5d, 0x62, 0x5c, 0xff,
+    0x63, 0x66, 0x64, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x72, 0x5b, 0x54, 0xff,
+    0x78, 0x77, 0x74, 0xff, 0x8f, 0x86, 0x7c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x5d, 0x62, 0x5c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x70, 0x5e, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x70, 0x66, 0x5c, 0xff, 0x63, 0x66, 0x64, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x6b, 0x56, 0x5c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x69, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x2e, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x64, 0x5d, 0x5c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x2c, 0x26, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x64, 0x4e, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x69, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x2e, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x46, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x53, 0x41, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x5d, 0x5a, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x50, 0x4e, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x46, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x5d, 0x5a, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x50, 0x4e, 0x44, 0xff, 0x44, 0x46, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff, 0x53, 0x5a, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x64, 0x5d, 0x5c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x2e, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x5f, 0x62, 0x64, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x46, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x50, 0x4e, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x64, 0x4e, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x44, 0x46, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x53, 0x5a, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x53, 0x41, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x46, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x46, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x46, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x44, 0x46, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x3c, 0x32, 0x2c, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x53, 0x41, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x53, 0x41, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x4c, 0x52, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x58, 0x5c, 0x5c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x58, 0x49, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x53, 0x41, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x2e, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x64, 0x4e, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x46, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x55, 0x52, 0x4c, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x5d, 0x5a, 0x54, 0xff, 0x6b, 0x56, 0x5c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x53, 0x41, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x3c, 0x32, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x5c, 0x3e, 0x34, 0xff, 0x3c, 0x32, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x49, 0x4c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x53, 0x41, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x5d, 0x62, 0x5c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x44, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x2c, 0x26, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x58, 0x5c, 0x5c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x4e, 0x4c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x30, 0x26, 0x24, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x44, 0x47, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x55, 0x54, 0xff, 0x58, 0x49, 0x4c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x55, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x53, 0x5a, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x30, 0x26, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x55, 0x4e, 0x4c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x2c, 0x26, 0x2c, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x2c, 0x26, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x34, 0x2e, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x2e, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x4e, 0x42, 0x44, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x4e, 0x42, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x34, 0x32, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x3a, 0x3c, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x49, 0x4a, 0x4c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x30, 0x26, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x4c, 0x47, 0x44, 0xff, 0x4c, 0x53, 0x54, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x2c, 0x26, 0x2c, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x2c, 0x26, 0x2c, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x55, 0x55, 0x54, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x44, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x42, 0x42, 0x44, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff,
+    0x30, 0x2a, 0x24, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3b, 0x3a, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x53, 0x54, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x34, 0x33, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x34, 0x33, 0x34, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x34, 0x33, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x2e, 0x2c, 0xff, 0x3c, 0x2e, 0x2c, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x26, 0x24, 0xff, 0x30, 0x26, 0x24, 0xff,
+    0x3c, 0x2e, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x30, 0x2a, 0x24, 0xff, 0x33, 0x2c, 0x2c, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x55, 0x52, 0x4c, 0xff, 0x55, 0x52, 0x4c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x3c, 0x32, 0x2c, 0xff, 0x33, 0x2c, 0x2c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x4c, 0x53, 0x54, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4c, 0x52, 0x4c, 0xff,
+    0x4b, 0x4e, 0x4c, 0xff, 0x55, 0x55, 0x54, 0xff, 0x4b, 0x4e, 0x4c, 0xff,
+    0x49, 0x4a, 0x4c, 0xff, 0x34, 0x32, 0x2c, 0xff, 0x34, 0x32, 0x2c, 0xff,
+    0x33, 0x2c, 0x2c, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x4e, 0x42, 0x44, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x34, 0x2e, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3c, 0x35, 0x34, 0xff, 0x3b, 0x3a, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x34, 0xff, 0x44, 0x3a, 0x3c, 0xff, 0x42, 0x42, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff, 0x49, 0x4a, 0x4c, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x3c, 0x35, 0x34, 0xff, 0x3c, 0x35, 0x34, 0xff,
+    0x3b, 0x3a, 0x3c, 0xff, 0x40, 0x3f, 0x3c, 0xff, 0x44, 0x47, 0x44, 0xff,
+    0x44, 0x47, 0x44, 0xff, 0x4c, 0x47, 0x44, 0xff,
+};
diff --git a/projects/libwebp/project.yaml b/projects/libwebp/project.yaml
index 593cd8a..16c58b3 100644
--- a/projects/libwebp/project.yaml
+++ b/projects/libwebp/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://developers.google.com/speed/webp/"
-language: c++
 primary_contact: "jzern@google.com"
 fuzzing_engines:
   - libfuzzer
@@ -19,4 +18,3 @@
   - aosmond@mozilla.com
   - tnikkel@mozilla.com
   - twsmith@mozilla.com
-main_repo: 'https://chromium.googlesource.com/webm/libwebp'
diff --git a/projects/libxls/Dockerfile b/projects/libxls/Dockerfile
index 069fdd4..a6de95c 100644
--- a/projects/libxls/Dockerfile
+++ b/projects/libxls/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER emmiller@gmail.com
 RUN apt-get update && apt-get install -y make autoconf autoconf-archive automake gettext libtool
 
 RUN git clone --depth 1 https://github.com/libxls/libxls libxls
diff --git a/projects/libxls/project.yaml b/projects/libxls/project.yaml
index 28f8313..4915173 100644
--- a/projects/libxls/project.yaml
+++ b/projects/libxls/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://github.com/libxls/libxls"
-language: c++
 primary_contact: "emmiller@gmail.com"
-main_repo: 'https://github.com/libxls/libxls'
diff --git a/projects/libxml2/Dockerfile b/projects/libxml2/Dockerfile
index 6d64df3..fc821c8 100644
--- a/projects/libxml2/Dockerfile
+++ b/projects/libxml2/Dockerfile
@@ -15,11 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER ochang@chromium.org
+RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
 
-RUN apt-get update && \
-    apt-get install -y --no-install-recommends \
-        make autoconf automake libtool pkg-config \
-        zlib1g-dev zlib1g-dev:i386 liblzma-dev liblzma-dev:i386
 RUN git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
 WORKDIR libxml2
+
 COPY build.sh $SRC/
+COPY *.cc *.h *.options *.dict $SRC/
diff --git a/projects/libxml2/build.sh b/projects/libxml2/build.sh
index 4240ba7..418792b 100755
--- a/projects/libxml2/build.sh
+++ b/projects/libxml2/build.sh
@@ -16,37 +16,19 @@
 #
 ################################################################################
 
-if [ "$SANITIZER" = undefined ]; then
-    export CFLAGS="$CFLAGS -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow"
-    export CXXFLAGS="$CXXFLAGS -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow"
-fi
+./autogen.sh
+./configure --with-http=no
+make -j$(nproc) clean
+make -j$(nproc) all
 
-export V=1
+seed_corpus_temp_file="$OUT/xml_seed_corpus.zip"
+zip -r $seed_corpus_temp_file $SRC/libxml2/test
 
-./autogen.sh \
-    --disable-shared \
-    --without-debug \
-    --without-ftp \
-    --without-http \
-    --without-legacy \
-    --without-python
-make -j$(nproc)
+for fuzzer in libxml2_xml_read_memory_fuzzer libxml2_xml_reader_for_file_fuzzer; do
+  $CXX $CXXFLAGS -std=c++11 -Iinclude/ \
+      $SRC/$fuzzer.cc -o $OUT/$fuzzer \
+      $LIB_FUZZING_ENGINE .libs/libxml2.a
 
-cd fuzz
-make clean-corpus
-make fuzz.o
-
-for fuzzer in html regexp schema uri xml xpath; do
-    make $fuzzer.o
-    # Link with $CXX
-    $CXX $CXXFLAGS \
-        $fuzzer.o fuzz.o \
-        -o $OUT/$fuzzer \
-        $LIB_FUZZING_ENGINE \
-        ../.libs/libxml2.a -Wl,-Bstatic -lz -llzma -Wl,-Bdynamic
-
-    [ -e seed/$fuzzer ] || make seed/$fuzzer.stamp
-    zip -j $OUT/${fuzzer}_seed_corpus.zip seed/$fuzzer/*
+  cp $SRC/*.dict $OUT/$fuzzer.dict
+  cp $seed_corpus_temp_file $OUT/${fuzzer}_seed_corpus.zip
 done
-
-cp *.dict *.options $OUT/
diff --git a/projects/libxml2/fuzzer_temp_file.h b/projects/libxml2/fuzzer_temp_file.h
new file mode 100644
index 0000000..fe25cab
--- /dev/null
+++ b/projects/libxml2/fuzzer_temp_file.h
@@ -0,0 +1,81 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Adapter utility from fuzzer input to a temporary file, for fuzzing APIs that
+// require a file instead of an input buffer.
+
+#ifndef FUZZER_TEMP_FILE_H_
+#define FUZZER_TEMP_FILE_H_
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+// Pure-C interface for creating and cleaning up temporary files.
+
+static char* fuzzer_get_tmpfile(const uint8_t* data, size_t size) {
+  char* filename_buffer = strdup("/tmp/generate_temporary_file.XXXXXX");
+  if (!filename_buffer) {
+    perror("Failed to allocate file name buffer.");
+    abort();
+  }
+  const int file_descriptor = mkstemp(filename_buffer);
+  if (file_descriptor < 0) {
+    perror("Failed to make temporary file.");
+    abort();
+  }
+  FILE* file = fdopen(file_descriptor, "wb");
+  if (!file) {
+    perror("Failed to open file descriptor.");
+    close(file_descriptor);
+    abort();
+  }
+  const size_t bytes_written = fwrite(data, sizeof(uint8_t), size, file);
+  if (bytes_written < size) {
+    close(file_descriptor);
+    fprintf(stderr, "Failed to write all bytes to file (%zu out of %zu)",
+            bytes_written, size);
+    abort();
+  }
+  fclose(file);
+  return filename_buffer;
+}
+
+static void fuzzer_release_tmpfile(char* filename) {
+  if (unlink(filename) != 0) {
+    perror("WARNING: Failed to delete temporary file.");
+  }
+  free(filename);
+}
+
+// C++ RAII object for creating temporary files.
+
+#ifdef __cplusplus
+class FuzzerTemporaryFile {
+ public:
+  FuzzerTemporaryFile(const uint8_t* data, size_t size)
+      : filename_(fuzzer_get_tmpfile(data, size)) {}
+
+  ~FuzzerTemporaryFile() { fuzzer_release_tmpfile(filename_); }
+
+  const char* filename() const { return filename_; }
+
+ private:
+  char* filename_;
+};
+#endif
+
+#endif  // FUZZER_TEMP_FILE_H_
diff --git a/projects/libxml2/libxml2_xml_read_memory_fuzzer.cc b/projects/libxml2/libxml2_xml_read_memory_fuzzer.cc
new file mode 100644
index 0000000..6f1d549
--- /dev/null
+++ b/projects/libxml2/libxml2_xml_read_memory_fuzzer.cc
@@ -0,0 +1,48 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <cassert>
+#include <cstddef>
+#include <cstdint>
+
+#include <functional>
+#include <limits>
+#include <string>
+
+#include "libxml/parser.h"
+#include "libxml/xmlsave.h"
+
+void ignore (void* ctx, const char* msg, ...) {
+  // Error handler to avoid spam of error messages from libxml parser.
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  xmlSetGenericErrorFunc(NULL, &ignore);
+
+  // Test default empty options value and some random combination.
+  std::string data_string(reinterpret_cast<const char*>(data), size);
+  const std::size_t data_hash = std::hash<std::string>()(data_string);
+  const int max_option_value = std::numeric_limits<int>::max();
+  int random_option_value = data_hash % max_option_value;
+
+  // Disable XML_PARSE_HUGE to avoid stack overflow.
+  random_option_value &= ~XML_PARSE_HUGE;
+  const int options[] = {0, random_option_value};
+
+  for (const auto option_value : options) {
+    // Intentionally pass raw data as the API does not require trailing \0.
+    if (auto doc = xmlReadMemory(reinterpret_cast<const char*>(data), size,
+                                 "noname.xml", NULL, option_value)) {
+      auto buf = xmlBufferCreate();
+      assert(buf);
+      auto ctxt = xmlSaveToBuffer(buf, NULL, 0);
+      xmlSaveDoc(ctxt, doc);
+      xmlSaveClose(ctxt);
+      xmlFreeDoc(doc);
+      xmlBufferFree(buf);
+    }
+  }
+
+  return 0;
+}
diff --git a/projects/libxml2/libxml2_xml_reader_for_file_fuzzer.cc b/projects/libxml2/libxml2_xml_reader_for_file_fuzzer.cc
new file mode 100644
index 0000000..4a71aa5
--- /dev/null
+++ b/projects/libxml2/libxml2_xml_reader_for_file_fuzzer.cc
@@ -0,0 +1,52 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <fuzzer/FuzzedDataProvider.h>
+
+#include <cstddef>
+#include <cstdint>
+#include <string>
+
+#include "fuzzer_temp_file.h"
+
+#include "libxml/xmlreader.h"
+
+void ignore (void* ctx, const char* msg, ...) {
+  // Error handler to avoid spam of error messages from libxml parser.
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  xmlSetGenericErrorFunc(NULL, &ignore);
+
+  FuzzedDataProvider provider(data, size);
+  const int options = provider.ConsumeIntegral<int>();
+
+  // libxml does not expect more than 100 characters, let's go beyond that.
+  const std::string encoding = provider.ConsumeRandomLengthString(128);
+  auto file_contents = provider.ConsumeRemainingBytes<uint8_t>();
+
+  FuzzerTemporaryFile file(file_contents.data(), file_contents.size());
+
+  xmlTextReaderPtr xmlReader =
+      xmlReaderForFile(file.filename(), encoding.c_str(), options);
+
+  constexpr int kReadSuccessful = 1;
+  while (xmlTextReaderRead(xmlReader) == kReadSuccessful) {
+    xmlTextReaderNodeType(xmlReader);
+    xmlTextReaderConstValue(xmlReader);
+  }
+
+  xmlFreeTextReader(xmlReader);
+  return EXIT_SUCCESS;
+}
diff --git a/projects/libxml2/project.yaml b/projects/libxml2/project.yaml
index 873e81e..39fdb71 100644
--- a/projects/libxml2/project.yaml
+++ b/projects/libxml2/project.yaml
@@ -1,15 +1,16 @@
 homepage: "http://www.xmlsoft.org/"
-language: c++
 primary_contact: "wellnhofer@aevum.de"
 vendor_ccs:
   - "akilsrin@apple.com"
   - "ddkilzer@apple.com"
   - "benl@google.com"
-  - "simon.lewis@apple.com"
 sanitizers:
   - address
   - memory
   - undefined
+labels:
+  libxml2_xml_reader_for_file_fuzzer:
+    - sundew
 architectures:
   - x86_64
   - i386
@@ -17,4 +18,3 @@
   - libfuzzer
   - honggfuzz
   - afl
-main_repo: 'https://gitlab.gnome.org/GNOME/libxml2.git'
diff --git a/projects/libxml2/xml.dict b/projects/libxml2/xml.dict
new file mode 100644
index 0000000..4ffa6c8
--- /dev/null
+++ b/projects/libxml2/xml.dict
@@ -0,0 +1,87 @@
+# Copyright 2016 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+#
+# AFL dictionary for XML
+# ----------------------
+#
+# Several basic syntax elements and attributes, modeled on libxml2.
+#
+# Created by Michal Zalewski <lcamtuf@google.com>
+#
+
+attr_encoding=" encoding=\"1\""
+attr_generic=" a=\"1\""
+attr_href=" href=\"1\""
+attr_standalone=" standalone=\"no\""
+attr_version=" version=\"1\""
+attr_xml_base=" xml:base=\"1\""
+attr_xml_id=" xml:id=\"1\""
+attr_xml_lang=" xml:lang=\"1\""
+attr_xml_space=" xml:space=\"1\""
+attr_xmlns=" xmlns=\"1\""
+
+entity_builtin="&lt;"
+entity_decimal="&#1;"
+entity_external="&a;"
+entity_hex="&#x1;"
+
+string_any="ANY"
+string_brackets="[]"
+string_cdata="CDATA"
+string_col_fallback=":fallback"
+string_col_generic=":a"
+string_col_include=":include"
+string_dashes="--"
+string_empty="EMPTY"
+string_empty_dblquotes="\"\""
+string_empty_quotes="''"
+string_entities="ENTITIES"
+string_entity="ENTITY"
+string_fixed="#FIXED"
+string_id="ID"
+string_idref="IDREF"
+string_idrefs="IDREFS"
+string_implied="#IMPLIED"
+string_nmtoken="NMTOKEN"
+string_nmtokens="NMTOKENS"
+string_notation="NOTATION"
+string_parentheses="()"
+string_pcdata="#PCDATA"
+string_percent="%a"
+string_public="PUBLIC"
+string_required="#REQUIRED"
+string_schema=":schema"
+string_system="SYSTEM"
+string_ucs4="UCS-4"
+string_utf16="UTF-16"
+string_utf8="UTF-8"
+string_xmlns="xmlns:"
+
+tag_attlist="<!ATTLIST"
+tag_cdata="<![CDATA["
+tag_close="</a>"
+tag_doctype="<!DOCTYPE"
+tag_element="<!ELEMENT"
+tag_entity="<!ENTITY"
+tag_ignore="<![IGNORE["
+tag_include="<![INCLUDE["
+tag_notation="<!NOTATION"
+tag_open="<a>"
+tag_open_close="<a />"
+tag_open_exclamation="<!"
+tag_open_q="<?"
+tag_sq2_close="]]>"
+tag_xml_q="<?xml?>"
diff --git a/projects/libxslt/Dockerfile b/projects/libxslt/Dockerfile
index 2592e6a..b020aeb 100644
--- a/projects/libxslt/Dockerfile
+++ b/projects/libxslt/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER wellnhofer@aevum.de
 
 # Note that we don't use the system libxml2 but a custom instrumented build.
 # libgcrypt is required for the crypto extensions of libexslt.
diff --git a/projects/libxslt/project.yaml b/projects/libxslt/project.yaml
index 09fc830..72d793f 100644
--- a/projects/libxslt/project.yaml
+++ b/projects/libxslt/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.xmlsoft.org/libxslt/"
-language: c++
 primary_contact: "wellnhofer@aevum.de"
 vendor_ccs:
   - "ddkilzer@apple.com"
@@ -8,4 +7,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://gitlab.gnome.org/GNOME/libxslt.git'
diff --git a/projects/libyal/Dockerfile b/projects/libyal/Dockerfile
deleted file mode 100644
index c255806..0000000
--- a/projects/libyal/Dockerfile
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y make autoconf automake autopoint libtool pkg-config flex byacc
-
-RUN git clone --depth 1 https://github.com/libyal/libfplist.git libfplist
-RUN git clone --depth 1 https://github.com/libyal/libftxf.git libftxf
-RUN git clone --depth 1 https://github.com/libyal/libfusn.git libfusn
-RUN git clone --depth 1 https://github.com/libyal/libfwnt.git libfwnt
-RUN git clone --depth 1 https://github.com/libyal/libfwps.git libfwps
-RUN git clone --depth 1 https://github.com/libyal/libfwsi.git libfwsi
-
-RUN git clone --depth 1 https://github.com/libyal/libagdb.git libagdb
-RUN git clone --depth 1 https://github.com/libyal/libcreg.git libcreg
-RUN git clone --depth 1 https://github.com/libyal/libesedb.git libesedb
-RUN git clone --depth 1 https://github.com/libyal/libevt.git libevt
-RUN git clone --depth 1 https://github.com/libyal/libevtx.git libevtx
-RUN git clone --depth 1 https://github.com/libyal/libexe.git libexe
-RUN git clone --depth 1 https://github.com/libyal/liblnk.git liblnk
-RUN git clone --depth 1 https://github.com/libyal/libmdmp.git libmdmp
-RUN git clone --depth 1 https://github.com/libyal/libmsiecf.git libmsiecf
-RUN git clone --depth 1 https://github.com/libyal/libnk2.git libnk2
-RUN git clone --depth 1 https://github.com/libyal/libolecf.git libolecf
-RUN git clone --depth 1 https://github.com/libyal/libpff.git libpff
-RUN git clone --depth 1 https://github.com/libyal/libregf.git libregf
-RUN git clone --depth 1 https://github.com/libyal/libscca.git libscca
-
-RUN git clone --depth 1 https://github.com/libyal/libfsapfs.git libfsapfs
-RUN git clone --depth 1 https://github.com/libyal/libfsext.git libfsext
-RUN git clone --depth 1 https://github.com/libyal/libfshfs.git libfshfs
-RUN git clone --depth 1 https://github.com/libyal/libfsntfs.git libfsntfs
-RUN git clone --depth 1 https://github.com/libyal/libfsxfs.git libfsxfs
-
-RUN git clone --depth 1 https://github.com/libyal/libbde.git libbde
-RUN git clone --depth 1 https://github.com/libyal/libluksde.git libluksde
-RUN git clone --depth 1 https://github.com/libyal/libvsgpt.git libvsgpt
-RUN git clone --depth 1 https://github.com/libyal/libvslvm.git libvslvm
-RUN git clone --depth 1 https://github.com/libyal/libvsmbr.git libvsmbr
-
-RUN git clone --depth 1 https://github.com/libyal/libewf.git libewf
-RUN git clone --depth 1 https://github.com/libyal/libmodi.git libmodi
-RUN git clone --depth 1 https://github.com/libyal/libqcow.git libqcow
-RUN git clone --depth 1 https://github.com/libyal/libsmraw.git libsmraw
-RUN git clone --depth 1 https://github.com/libyal/libvhdi.git libvhdi
-RUN git clone --depth 1 https://github.com/libyal/libvmdk.git libvmdk
-
-WORKDIR libyal
-COPY build.sh $SRC/
diff --git a/projects/libyal/build.sh b/projects/libyal/build.sh
deleted file mode 100755
index c61ee51..0000000
--- a/projects/libyal/build.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-for PROJECT in ${SRC}/*;
-do
-  PROJECT=$(basename ${PROJECT})
-
-  # A libyal project should have an ossfuzz directory and a synclibs.sh script.
-  if ! test -d ${SRC}/${PROJECT}/ossfuzz || ! test -x ${SRC}/${PROJECT}/synclibs.sh;
-  then
-    continue
-  fi
-  cd ${SRC}/${PROJECT}
-
-  # Prepare the project source for build.
-  ./synclibs.sh
-  ./autogen.sh
-  ./configure --enable-shared=no
-
-  # Build the project and fuzzer binaries.
-  make -j$(nproc) LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE}
-
-  # Download the test data if supported.
-  if test -x ./synctestdata.sh;
-  then
-    ./synctestdata.sh
-  fi
-
-  # Copy the fuzzer binaries and test data to the output directory.
-  for FUZZ_TARGET in $(cd ossfuzz && find . -executable -type f);
-  do
-    FUZZ_TARGET=$(basename ${FUZZ_TARGET})
-
-    # Prefix the fuzzer binaries with the project name.
-    cp ossfuzz/${FUZZ_TARGET} ${OUT}/${PROJECT}_${FUZZ_TARGET}
-
-    # Download the test data if supported.
-    LIBYAL_TYPE_NAME=${FUZZ_TARGET/_fuzzer/};
-
-    if test -f tests/data/${LIBYAL_TYPE_NAME/}.1;
-    then
-      (cd tests/data && zip ${OUT}/${PROJECT}_${FUZZ_TARGET}_seed_corpus.zip ${LIBYAL_TYPE_NAME}.*)
-
-    elif test -d tests/input/public;
-    then
-      (cd tests/input/public && zip ${OUT}/${PROJECT}_${FUZZ_TARGET}_seed_corpus.zip *)
-
-    else
-      echo "Missing test data for seed corpus."
-      exit 1
-    fi
-  done
-done
diff --git a/projects/libyal/project.yaml b/projects/libyal/project.yaml
deleted file mode 100644
index 367ab33..0000000
--- a/projects/libyal/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/libyal"
-language: c
-primary_contact: "joachim.metz@gmail.com"
-sanitizers:
-- address
-- memory
-- undefined
-architectures:
-- x86_64
-- i386
-main_repo: 'https://github.com/libyal/libfplist.git'
diff --git a/projects/libyaml/Dockerfile b/projects/libyaml/Dockerfile
index 8477cce..dd99a1c 100644
--- a/projects/libyaml/Dockerfile
+++ b/projects/libyaml/Dockerfile
@@ -15,10 +15,11 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alex.gaynor@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 
 RUN git clone --depth=1 https://github.com/yaml/libyaml
-RUN zip $SRC/libyaml_seed_corpus.zip libyaml/examples/*
+RUN zip libyaml_fuzzer_seed_corpus.zip libyaml/examples/*
 
 WORKDIR libyaml
-COPY build.sh *.h *_fuzzer.c libyaml_fuzzer.options yaml.dict $SRC/
+COPY build.sh libyaml_fuzzer.cc libyaml_fuzzer.options yaml.dict $SRC/
diff --git a/projects/libyaml/build.sh b/projects/libyaml/build.sh
index 1eb3130..f78b99b 100755
--- a/projects/libyaml/build.sh
+++ b/projects/libyaml/build.sh
@@ -18,22 +18,9 @@
 ./configure
 make "-j$(nproc)"
 
-for fuzzer in $SRC/*_fuzzer.c; do
-  fuzzer_basename=$(basename -s .c $fuzzer)
+$CXX $CXXFLAGS -std=c++11 -Iinclude \
+    $SRC/libyaml_fuzzer.cc -o $OUT/libyaml_fuzzer \
+    $LIB_FUZZING_ENGINE src/.libs/libyaml.a
 
-  $CC $CFLAGS \
-      -I $SRC -Iinclude \
-      -c $fuzzer -o $fuzzer_basename.o
-
-  $CXX $CXXFLAGS \
-      -std=c++11 \
-      $fuzzer_basename.o \
-      -o $OUT/$fuzzer_basename \
-      $LIB_FUZZING_ENGINE \
-      src/.libs/libyaml.a
-
-  cp $SRC/libyaml_seed_corpus.zip "${OUT}/${fuzzer_basename}_seed_corpus.zip"
-  cp $SRC/libyaml_fuzzer.options "${OUT}/${fuzzer_basename}.options"
-done
-
-cp $SRC/yaml.dict $OUT/
+cp $SRC/libyaml_fuzzer_seed_corpus.zip $OUT/
+cp $SRC/*.dict $SRC/*.options $OUT/
diff --git a/projects/libyaml/libyaml_deconstructor_alt_fuzzer.c b/projects/libyaml/libyaml_deconstructor_alt_fuzzer.c
deleted file mode 100644
index b8ac2fe..0000000
--- a/projects/libyaml/libyaml_deconstructor_alt_fuzzer.c
+++ /dev/null
@@ -1,833 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  bool done = false;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-  yaml_event_t input_event;
-  yaml_document_t output_document;
-
-  int root;
-
-  /* Initialize the parser and emitter objects. */
-
-  if (!yaml_parser_initialize(&parser)) {
-    return 1;
-  }
-
-  if (!yaml_emitter_initialize(&emitter)) {
-    yaml_parser_delete(&parser);
-    return 1;
-  }
-
-  /* Set the parser parameters. */
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  /* Set the emitter parameters. */
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  /* Create and emit the STREAM-START event. */
-
-  if (!yaml_emitter_open(&emitter))
-    goto error;
-
-  /* Create a output_document object. */
-
-  if (!yaml_document_initialize(&output_document, NULL, NULL, NULL, 0, 0))
-    goto error;
-
-  /* Create the root sequence. */
-
-  root = yaml_document_add_sequence(&output_document, NULL,
-                                    YAML_BLOCK_SEQUENCE_STYLE);
-  if (!root)
-    goto error;
-
-  /* Loop through the input events. */
-
-  while (!done) {
-    int properties, key, value, map, seq;
-
-    /* Get the next event. */
-
-    if (!yaml_parser_parse(&parser, &input_event))
-      goto error;
-
-    /* Check if this is the stream end. */
-
-    done = (input_event.type == YAML_STREAM_END_EVENT);
-
-    /* Create a mapping node and attach it to the root sequence. */
-
-    properties = yaml_document_add_mapping(&output_document, NULL,
-                                           YAML_BLOCK_MAPPING_STYLE);
-    if (!properties)
-      goto error;
-    if (!yaml_document_append_sequence_item(&output_document, root, properties))
-      goto error;
-
-    /* Analyze the event. */
-
-    switch (input_event.type) {
-    case YAML_STREAM_START_EVENT:
-
-      /* Add 'type': 'STREAM-START'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"STREAM-START", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'encoding': <encoding>. */
-
-      if (input_event.data.stream_start.encoding) {
-        yaml_encoding_t encoding = input_event.data.stream_start.encoding;
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"encoding", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(
-            &output_document, NULL,
-            (encoding == YAML_UTF8_ENCODING
-                 ? (yaml_char_t *)"utf-8"
-                 : encoding == YAML_UTF16LE_ENCODING
-                       ? (yaml_char_t *)"utf-16-le"
-                       : encoding == YAML_UTF16BE_ENCODING
-                             ? (yaml_char_t *)"utf-16-be"
-                             : (yaml_char_t *)"unknown"),
-            -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      break;
-
-    case YAML_STREAM_END_EVENT:
-
-      /* Add 'type': 'STREAM-END'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"STREAM-END", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    case YAML_DOCUMENT_START_EVENT:
-
-      /* Add 'type': 'DOCUMENT-START'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"DOCUMENT-START", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Display the output_document version numbers. */
-
-      if (input_event.data.document_start.version_directive) {
-        yaml_version_directive_t *version =
-            input_event.data.document_start.version_directive;
-        char number[64];
-
-        /* Add 'version': {}. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"version", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        map = yaml_document_add_mapping(&output_document, NULL,
-                                        YAML_FLOW_MAPPING_STYLE);
-        if (!map)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, map))
-          goto error;
-
-        /* Add 'major': <number>. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"major", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        sprintf(number, "%d", version->major);
-        value = yaml_document_add_scalar(
-            &output_document, (yaml_char_t *)YAML_INT_TAG,
-            (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, map, key,
-                                               value))
-          goto error;
-
-        /* Add 'minor': <number>. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"minor", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        sprintf(number, "%d", version->minor);
-        value = yaml_document_add_scalar(
-            &output_document, (yaml_char_t *)YAML_INT_TAG,
-            (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, map, key,
-                                               value))
-          goto error;
-      }
-
-      /* Display the output_document tag directives. */
-
-      if (input_event.data.document_start.tag_directives.start !=
-          input_event.data.document_start.tag_directives.end) {
-        yaml_tag_directive_t *tag;
-
-        /* Add 'tags': []. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"tags", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        seq = yaml_document_add_sequence(&output_document, NULL,
-                                         YAML_BLOCK_SEQUENCE_STYLE);
-        if (!seq)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, seq))
-          goto error;
-
-        for (tag = input_event.data.document_start.tag_directives.start;
-             tag != input_event.data.document_start.tag_directives.end; tag++) {
-          /* Add {}. */
-
-          map = yaml_document_add_mapping(&output_document, NULL,
-                                          YAML_FLOW_MAPPING_STYLE);
-          if (!map)
-            goto error;
-          if (!yaml_document_append_sequence_item(&output_document, seq, map))
-            goto error;
-
-          /* Add 'handle': <handle>. */
-
-          key = yaml_document_add_scalar(&output_document, NULL,
-                                         (yaml_char_t *)"handle", -1,
-                                         YAML_PLAIN_SCALAR_STYLE);
-          if (!key)
-            goto error;
-          value = yaml_document_add_scalar(&output_document, NULL, tag->handle,
-                                           -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-          if (!value)
-            goto error;
-          if (!yaml_document_append_mapping_pair(&output_document, map, key,
-                                                 value))
-            goto error;
-
-          /* Add 'prefix': <prefix>. */
-
-          key = yaml_document_add_scalar(&output_document, NULL,
-                                         (yaml_char_t *)"prefix", -1,
-                                         YAML_PLAIN_SCALAR_STYLE);
-          if (!key)
-            goto error;
-          value = yaml_document_add_scalar(&output_document, NULL, tag->prefix,
-                                           -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-          if (!value)
-            goto error;
-          if (!yaml_document_append_mapping_pair(&output_document, map, key,
-                                                 value))
-            goto error;
-        }
-      }
-
-      /* Add 'implicit': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"implicit", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (input_event.data.document_start.implicit ? (yaml_char_t *)"true"
-                                                    : (yaml_char_t *)"false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    case YAML_DOCUMENT_END_EVENT:
-
-      /* Add 'type': 'DOCUMENT-END'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"DOCUMENT-END", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'implicit': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"implicit", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (input_event.data.document_end.implicit ? (yaml_char_t *)"true"
-                                                  : (yaml_char_t *)"false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    case YAML_ALIAS_EVENT:
-
-      /* Add 'type': 'ALIAS'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"ALIAS", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'anchor': <anchor>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"anchor", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       input_event.data.alias.anchor, -1,
-                                       YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    case YAML_SCALAR_EVENT:
-
-      /* Add 'type': 'SCALAR'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"SCALAR", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'anchor': <anchor>. */
-
-      if (input_event.data.scalar.anchor) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"anchor", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.scalar.anchor, -1,
-                                         YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'tag': <tag>. */
-
-      if (input_event.data.scalar.tag) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"tag", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.scalar.tag, -1,
-                                         YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'value': <value>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"value", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, NULL, input_event.data.scalar.value,
-          input_event.data.scalar.length, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Display if the scalar tag is implicit. */
-
-      /* Add 'implicit': {} */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"version", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      map = yaml_document_add_mapping(&output_document, NULL,
-                                      YAML_FLOW_MAPPING_STYLE);
-      if (!map)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             map))
-        goto error;
-
-      /* Add 'plain': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"plain", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (input_event.data.scalar.plain_implicit ? (yaml_char_t *)"true"
-                                                  : (yaml_char_t *)"false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, map, key, value))
-        goto error;
-
-      /* Add 'quoted': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"quoted", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (input_event.data.scalar.quoted_implicit ? (yaml_char_t *)"true"
-                                                   : (yaml_char_t *)"false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, map, key, value))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.scalar.style) {
-        yaml_scalar_style_t style = input_event.data.scalar.style;
-
-        /* Add 'style': <style>. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"style", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(
-            &output_document, NULL,
-            (yaml_char_t
-                 *)(style == YAML_PLAIN_SCALAR_STYLE
-                        ? "plain"
-                        : style == YAML_SINGLE_QUOTED_SCALAR_STYLE
-                              ? "single-quoted"
-                              : style == YAML_DOUBLE_QUOTED_SCALAR_STYLE
-                                    ? "double-quoted"
-                                    : style == YAML_LITERAL_SCALAR_STYLE
-                                          ? "literal"
-                                          : style == YAML_FOLDED_SCALAR_STYLE
-                                                ? "folded"
-                                                : "unknown"),
-            -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      break;
-
-    case YAML_SEQUENCE_START_EVENT:
-
-      /* Add 'type': 'SEQUENCE-START'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"SEQUENCE-START", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'anchor': <anchor>. */
-
-      if (input_event.data.sequence_start.anchor) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"anchor", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.sequence_start.anchor,
-                                         -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'tag': <tag>. */
-
-      if (input_event.data.sequence_start.tag) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"tag", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.sequence_start.tag,
-                                         -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'implicit': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"implicit", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (input_event.data.sequence_start.implicit ? (yaml_char_t *)"true"
-                                                    : (yaml_char_t *)"false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.sequence_start.style) {
-        yaml_sequence_style_t style = input_event.data.sequence_start.style;
-
-        /* Add 'style': <style>. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"style", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(
-            &output_document, NULL,
-            (yaml_char_t *)(style == YAML_BLOCK_SEQUENCE_STYLE
-                                ? "block"
-                                : style == YAML_FLOW_SEQUENCE_STYLE
-                                      ? "flow"
-                                      : "unknown"),
-            -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      break;
-
-    case YAML_SEQUENCE_END_EVENT:
-
-      /* Add 'type': 'SEQUENCE-END'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"SEQUENCE-END", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    case YAML_MAPPING_START_EVENT:
-
-      /* Add 'type': 'MAPPING-START'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"MAPPING-START", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Add 'anchor': <anchor>. */
-
-      if (input_event.data.mapping_start.anchor) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"anchor", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.mapping_start.anchor,
-                                         -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'tag': <tag>. */
-
-      if (input_event.data.mapping_start.tag) {
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"tag", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(&output_document, NULL,
-                                         input_event.data.mapping_start.tag, -1,
-                                         YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      /* Add 'implicit': <flag>. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"implicit", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(
-          &output_document, (yaml_char_t *)YAML_BOOL_TAG,
-          (yaml_char_t *)(input_event.data.mapping_start.implicit ? "true"
-                                                                  : "false"),
-          -1, YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.sequence_start.style) {
-        yaml_sequence_style_t style = input_event.data.sequence_start.style;
-
-        /* Add 'style': <style>. */
-
-        key = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"style", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-        if (!key)
-          goto error;
-        value = yaml_document_add_scalar(
-            &output_document, NULL,
-            (yaml_char_t *)(style == YAML_BLOCK_MAPPING_STYLE
-                                ? "block"
-                                : style == YAML_FLOW_MAPPING_STYLE ? "flow"
-                                                                   : "unknown"),
-            -1, YAML_PLAIN_SCALAR_STYLE);
-        if (!value)
-          goto error;
-        if (!yaml_document_append_mapping_pair(&output_document, properties,
-                                               key, value))
-          goto error;
-      }
-
-      break;
-
-    case YAML_MAPPING_END_EVENT:
-
-      /* Add 'type': 'MAPPING-END'. */
-
-      key = yaml_document_add_scalar(&output_document, NULL,
-                                     (yaml_char_t *)"type", -1,
-                                     YAML_PLAIN_SCALAR_STYLE);
-      if (!key)
-        goto error;
-      value = yaml_document_add_scalar(&output_document, NULL,
-                                       (yaml_char_t *)"MAPPING-END", -1,
-                                       YAML_PLAIN_SCALAR_STYLE);
-      if (!value)
-        goto error;
-      if (!yaml_document_append_mapping_pair(&output_document, properties, key,
-                                             value))
-        goto error;
-
-      break;
-
-    default:
-      /* It couldn't really happen. */
-      break;
-    }
-
-    /* Delete the event object. */
-
-    yaml_event_delete(&input_event);
-  }
-
-  if (!yaml_emitter_dump(&emitter, &output_document))
-    goto error;
-
-  yaml_emitter_close(&emitter);
-
-error:
-
-  free(out.buf);
-
-  yaml_event_delete(&input_event);
-  yaml_document_delete(&output_document);
-  yaml_parser_delete(&parser);
-  yaml_emitter_delete(&emitter);
-
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_deconstructor_fuzzer.c b/projects/libyaml/libyaml_deconstructor_fuzzer.c
deleted file mode 100644
index 2f1079b..0000000
--- a/projects/libyaml/libyaml_deconstructor_fuzzer.c
+++ /dev/null
@@ -1,994 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  bool done = false;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-  yaml_event_t input_event;
-  yaml_event_t output_event;
-
-  /* Initialize the parser and emitter objects. */
-
-  if (!yaml_parser_initialize(&parser)) {
-    return 1;
-  }
-
-  if (!yaml_emitter_initialize(&emitter)) {
-    yaml_parser_delete(&parser);
-    return 1;
-  }
-
-  /* Set the parser parameters. */
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  /* Set the emitter parameters. */
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  /* Create and emit the STREAM-START event. */
-
-  if (!yaml_stream_start_event_initialize(&output_event, YAML_UTF8_ENCODING))
-    goto error;
-  if (!yaml_emitter_emit(&emitter, &output_event))
-    goto error;
-
-  /* Create and emit the DOCUMENT-START event. */
-
-  if (!yaml_document_start_event_initialize(&output_event, NULL, NULL, NULL, 0))
-    goto error;
-  if (!yaml_emitter_emit(&emitter, &output_event))
-    goto error;
-
-  /* Create and emit the SEQUENCE-START event. */
-
-  if (!yaml_sequence_start_event_initialize(
-          &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:seq", 1,
-          YAML_BLOCK_SEQUENCE_STYLE))
-    goto error;
-  if (!yaml_emitter_emit(&emitter, &output_event))
-    goto error;
-
-  /* Loop through the input events. */
-
-  while (!done) {
-    /* Get the next event. */
-
-    if (!yaml_parser_parse(&parser, &input_event))
-      goto error;
-
-    /* Check if this is the stream end. */
-
-    done = (input_event.type == YAML_STREAM_END_EVENT);
-
-    /* Create and emit a MAPPING-START event. */
-
-    if (!yaml_mapping_start_event_initialize(
-            &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
-            YAML_BLOCK_MAPPING_STYLE))
-      goto error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-      goto error;
-
-    /* Analyze the event. */
-
-    switch (input_event.type) {
-    case YAML_STREAM_START_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'STREAM-START'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"STREAM-START", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display encoding information. */
-
-      if (input_event.data.stream_start.encoding) {
-        yaml_encoding_t encoding = input_event.data.stream_start.encoding;
-
-        /* Write 'encoding'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"encoding", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the stream encoding. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)(encoding == YAML_UTF8_ENCODING
-                                    ? "utf-8"
-                                    : encoding == YAML_UTF16LE_ENCODING
-                                          ? "utf-16-le"
-                                          : encoding == YAML_UTF16BE_ENCODING
-                                                ? "utf-16-be"
-                                                : "unknown"),
-                -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      break;
-
-    case YAML_STREAM_END_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'STREAM-END'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"STREAM-END", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    case YAML_DOCUMENT_START_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'DOCUMENT-START'. */
-
-      if (!yaml_scalar_event_initialize(&output_event, NULL,
-                                        (yaml_char_t *)"tag:yaml.org,2002:str",
-                                        (yaml_char_t *)"DOCUMENT-START", -1, 1,
-                                        1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the document version numbers. */
-
-      if (input_event.data.document_start.version_directive) {
-        yaml_version_directive_t *version =
-            input_event.data.document_start.version_directive;
-        char number[64];
-
-        /* Write 'version'. */
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"version", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write '{'. */
-
-        if (!yaml_mapping_start_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
-                YAML_FLOW_MAPPING_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write 'major'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"major", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write a number. */
-
-        sprintf(number, "%d", version->major);
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:int",
-                (yaml_char_t *)number, -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write 'minor'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"minor", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write a number. */
-
-        sprintf(number, "%d", version->minor);
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:int",
-                (yaml_char_t *)number, -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write '}'. */
-
-        if (!yaml_mapping_end_event_initialize(&output_event))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Display the document tag directives. */
-
-      if (input_event.data.document_start.tag_directives.start !=
-          input_event.data.document_start.tag_directives.end) {
-        yaml_tag_directive_t *tag;
-
-        /* Write 'tags'. */
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"tags", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Start a block sequence. */
-
-        if (!yaml_sequence_start_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:seq", 1,
-                YAML_BLOCK_SEQUENCE_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        for (tag = input_event.data.document_start.tag_directives.start;
-             tag != input_event.data.document_start.tag_directives.end; tag++) {
-          /* Write '{'. */
-
-          if (!yaml_mapping_start_event_initialize(
-                  &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:map",
-                  1, YAML_FLOW_MAPPING_STYLE))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-
-          /* Write 'handle'. */
-
-          if (!yaml_scalar_event_initialize(
-                  &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                  (yaml_char_t *)"handle", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-
-          /* Write the tag directive handle. */
-
-          if (!yaml_scalar_event_initialize(
-                  &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                  (yaml_char_t *)tag->handle, -1, 0, 1,
-                  YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-
-          /* Write 'prefix'. */
-
-          if (!yaml_scalar_event_initialize(
-                  &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                  (yaml_char_t *)"prefix", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-
-          /* Write the tag directive prefix. */
-
-          if (!yaml_scalar_event_initialize(
-                  &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                  (yaml_char_t *)tag->prefix, -1, 0, 1,
-                  YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-
-          /* Write '}'. */
-
-          if (!yaml_mapping_end_event_initialize(&output_event))
-            goto error;
-          if (!yaml_emitter_emit(&emitter, &output_event))
-            goto error;
-        }
-
-        /* End a block sequence. */
-
-        if (!yaml_sequence_end_event_initialize(&output_event))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Write 'implicit'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"implicit", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the document is implicit. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.document_start.implicit
-                                  ? "true"
-                                  : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    case YAML_DOCUMENT_END_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'DOCUMENT-END'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"DOCUMENT-END", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'implicit'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"implicit", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the document is implicit. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.document_end.implicit ? "true"
-                                                                     : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    case YAML_ALIAS_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'ALIAS'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"ALIAS", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'anchor'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"anchor", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write the alias anchor. */
-
-      if (!yaml_scalar_event_initialize(&output_event, NULL,
-                                        (yaml_char_t *)"tag:yaml.org,2002:str",
-                                        input_event.data.alias.anchor, -1, 0, 1,
-                                        YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    case YAML_SCALAR_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'SCALAR'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"SCALAR", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the scalar anchor. */
-
-      if (input_event.data.scalar.anchor) {
-        /* Write 'anchor'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"anchor", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the scalar anchor. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.scalar.anchor, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Display the scalar tag. */
-
-      if (input_event.data.scalar.tag) {
-        /* Write 'tag'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"tag", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the scalar tag. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.scalar.tag, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Display the scalar value. */
-
-      /* Write 'value'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"value", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write the scalar value. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              input_event.data.scalar.value, input_event.data.scalar.length, 0,
-              1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display if the scalar tag is implicit. */
-
-      /* Write 'implicit'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"implicit", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write '{'. */
-
-      if (!yaml_mapping_start_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
-              YAML_FLOW_MAPPING_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'plain'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"plain", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the scalar is implicit in the plain style. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.scalar.plain_implicit ? "true"
-                                                                     : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'quoted'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"non-plain", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the scalar is implicit in a non-plain style. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.scalar.quoted_implicit
-                                  ? "true"
-                                  : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write '}'. */
-
-      if (!yaml_mapping_end_event_initialize(&output_event))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.scalar.style) {
-        yaml_scalar_style_t style = input_event.data.scalar.style;
-
-        /* Write 'style'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"style", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the scalar style. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t
-                     *)(style == YAML_PLAIN_SCALAR_STYLE
-                            ? "plain"
-                            : style == YAML_SINGLE_QUOTED_SCALAR_STYLE
-                                  ? "single-quoted"
-                                  : style == YAML_DOUBLE_QUOTED_SCALAR_STYLE
-                                        ? "double-quoted"
-                                        : style == YAML_LITERAL_SCALAR_STYLE
-                                              ? "literal"
-                                              : style ==
-                                                        YAML_FOLDED_SCALAR_STYLE
-                                                    ? "folded"
-                                                    : "unknown"),
-                -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      break;
-
-    case YAML_SEQUENCE_START_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'SEQUENCE-START'. */
-
-      if (!yaml_scalar_event_initialize(&output_event, NULL,
-                                        (yaml_char_t *)"tag:yaml.org,2002:str",
-                                        (yaml_char_t *)"SEQUENCE-START", -1, 1,
-                                        1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the sequence anchor. */
-
-      if (input_event.data.sequence_start.anchor) {
-        /* Write 'anchor'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"anchor", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the sequence anchor. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.sequence_start.anchor, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Display the sequence tag. */
-
-      if (input_event.data.sequence_start.tag) {
-        /* Write 'tag'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"tag", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the sequence tag. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.sequence_start.tag, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Write 'implicit'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"implicit", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the sequence tag is implicit. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.sequence_start.implicit
-                                  ? "true"
-                                  : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.sequence_start.style) {
-        yaml_sequence_style_t style = input_event.data.sequence_start.style;
-
-        /* Write 'style'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"style", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the scalar style. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)(style == YAML_BLOCK_SEQUENCE_STYLE
-                                    ? "block"
-                                    : style == YAML_FLOW_SEQUENCE_STYLE
-                                          ? "flow"
-                                          : "unknown"),
-                -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      break;
-
-    case YAML_SEQUENCE_END_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'SEQUENCE-END'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"SEQUENCE-END", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    case YAML_MAPPING_START_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'MAPPING-START'. */
-
-      if (!yaml_scalar_event_initialize(&output_event, NULL,
-                                        (yaml_char_t *)"tag:yaml.org,2002:str",
-                                        (yaml_char_t *)"MAPPING-START", -1, 1,
-                                        1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the mapping anchor. */
-
-      if (input_event.data.mapping_start.anchor) {
-        /* Write 'anchor'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"anchor", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the mapping anchor. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.mapping_start.anchor, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Display the mapping tag. */
-
-      if (input_event.data.mapping_start.tag) {
-        /* Write 'tag'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"tag", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the mapping tag. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                input_event.data.mapping_start.tag, -1, 0, 1,
-                YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      /* Write 'implicit'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"implicit", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write if the mapping tag is implicit. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
-              (yaml_char_t *)(input_event.data.mapping_start.implicit
-                                  ? "true"
-                                  : "false"),
-              -1, 1, 0, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Display the style information. */
-
-      if (input_event.data.mapping_start.style) {
-        yaml_mapping_style_t style = input_event.data.mapping_start.style;
-
-        /* Write 'style'. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)"style", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-
-        /* Write the scalar style. */
-
-        if (!yaml_scalar_event_initialize(
-                &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-                (yaml_char_t *)(style == YAML_BLOCK_MAPPING_STYLE
-                                    ? "block"
-                                    : style == YAML_FLOW_MAPPING_STYLE
-                                          ? "flow"
-                                          : "unknown"),
-                -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-          goto error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-          goto error;
-      }
-
-      break;
-
-    case YAML_MAPPING_END_EVENT:
-
-      /* Write 'type'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"type", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      /* Write 'MAPPING-END'. */
-
-      if (!yaml_scalar_event_initialize(
-              &output_event, NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
-              (yaml_char_t *)"MAPPING-END", -1, 1, 1, YAML_PLAIN_SCALAR_STYLE))
-        goto error;
-      if (!yaml_emitter_emit(&emitter, &output_event))
-        goto error;
-
-      break;
-
-    default:
-      /* It couldn't really happen. */
-      break;
-    }
-
-    /* Delete the event object. */
-
-    yaml_event_delete(&input_event);
-
-    /* Create and emit a MAPPING-END event. */
-
-    if (!yaml_mapping_end_event_initialize(&output_event))
-      goto error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-      goto error;
-  }
-
-  /* Create and emit the SEQUENCE-END event. */
-
-  if (!yaml_sequence_end_event_initialize(&output_event))
-    goto error;
-  if (!yaml_emitter_emit(&emitter, &output_event))
-    goto error;
-
-  /* Create and emit the DOCUMENT-END event. */
-
-  if (!yaml_document_end_event_initialize(&output_event, 0))
-    goto error;
-  if (!yaml_emitter_emit(&emitter, &output_event))
-    goto error;
-
-  /* Create and emit the STREAM-END event. */
-
-  if (!yaml_stream_end_event_initialize(&output_event))
-    goto error;
-  yaml_emitter_emit(&emitter, &output_event);
-
-error:
-
-  free(out.buf);
-
-  yaml_event_delete(&input_event);
-  yaml_parser_delete(&parser);
-  yaml_emitter_delete(&emitter);
-
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_dumper_fuzzer.c b/projects/libyaml/libyaml_dumper_fuzzer.c
deleted file mode 100644
index 5ad8a4e..0000000
--- a/projects/libyaml/libyaml_dumper_fuzzer.c
+++ /dev/null
@@ -1,311 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-#define MAX_DOCUMENTS 16
-
-bool nodes_equal(yaml_document_t *document1, int index1,
-                 yaml_document_t *document2, int index2, int level) {
-  const bool equal = true;
-
-  if (level++ > 1000)
-    return !equal;
-  yaml_node_t *node1 = yaml_document_get_node(document1, index1);
-
-  if (!node1)
-    return !equal;
-
-  yaml_node_t *node2 = yaml_document_get_node(document2, index2);
-
-  if (!node2)
-    return !equal;
-
-  if (node1->type != node2->type)
-    return !equal;
-
-  if (strcmp((char *)node1->tag, (char *)node2->tag) != 0)
-    return !equal;
-
-  switch (node1->type) {
-  case YAML_SCALAR_NODE:
-    if (node1->data.scalar.length != node2->data.scalar.length)
-      return !equal;
-    if (strncmp((char *)node1->data.scalar.value,
-                (char *)node2->data.scalar.value,
-                node1->data.scalar.length) != 0)
-      return !equal;
-    break;
-  case YAML_SEQUENCE_NODE:
-    if ((node1->data.sequence.items.top - node1->data.sequence.items.start) !=
-        (node2->data.sequence.items.top - node2->data.sequence.items.start))
-      return !equal;
-    for (int k = 0; k < (node1->data.sequence.items.top -
-                         node1->data.sequence.items.start);
-         k++) {
-      if (!nodes_equal(document1, node1->data.sequence.items.start[k],
-                       document2, node2->data.sequence.items.start[k], level))
-        return !equal;
-    }
-    break;
-  case YAML_MAPPING_NODE:
-    if ((node1->data.mapping.pairs.top - node1->data.mapping.pairs.start) !=
-        (node2->data.mapping.pairs.top - node2->data.mapping.pairs.start))
-      return !equal;
-    for (int k = 0;
-         k < (node1->data.mapping.pairs.top - node1->data.mapping.pairs.start);
-         k++) {
-      if (!nodes_equal(document1, node1->data.mapping.pairs.start[k].key,
-                       document2, node2->data.mapping.pairs.start[k].key,
-                       level))
-        return !equal;
-      if (!nodes_equal(document1, node1->data.mapping.pairs.start[k].value,
-                       document2, node2->data.mapping.pairs.start[k].value,
-                       level))
-        return !equal;
-    }
-    break;
-  default:
-    return !equal;
-  }
-  return equal;
-}
-
-bool documents_equal(yaml_document_t *document1, yaml_document_t *document2) {
-
-  const bool equal = true;
-
-  if ((document1->version_directive && !document2->version_directive) ||
-      (!document1->version_directive && document2->version_directive) ||
-      (document1->version_directive && document2->version_directive &&
-       (document1->version_directive->major !=
-            document2->version_directive->major ||
-        document1->version_directive->minor !=
-            document2->version_directive->minor)))
-    return !equal;
-
-  if ((document1->tag_directives.end - document1->tag_directives.start) !=
-      (document2->tag_directives.end - document2->tag_directives.start))
-    return !equal;
-  for (int k = 0;
-       k < (document1->tag_directives.end - document1->tag_directives.start);
-       k++) {
-    if ((strcmp((char *)document1->tag_directives.start[k].handle,
-                (char *)document2->tag_directives.start[k].handle) != 0) ||
-        (strcmp((char *)document1->tag_directives.start[k].prefix,
-                (char *)document2->tag_directives.start[k].prefix) != 0))
-      return !equal;
-  }
-
-  if ((document1->nodes.top - document1->nodes.start) !=
-      (document2->nodes.top - document2->nodes.start))
-    return !equal;
-
-  if (document1->nodes.top != document1->nodes.start) {
-    if (!nodes_equal(document1, 1, document2, 1, 0))
-      return !equal;
-  }
-
-  return equal;
-}
-
-bool copy_document(yaml_document_t *document_to,
-                   yaml_document_t *document_from) {
-  bool error = true;
-
-  yaml_node_t *node;
-  yaml_node_item_t *item;
-  yaml_node_pair_t *pair;
-
-  if (!yaml_document_initialize(document_to, document_from->version_directive,
-                                document_from->tag_directives.start,
-                                document_from->tag_directives.end,
-                                document_from->start_implicit,
-                                document_from->end_implicit))
-    return !error;
-
-  for (node = document_from->nodes.start; node < document_from->nodes.top;
-       node++) {
-    switch (node->type) {
-    case YAML_SCALAR_NODE:
-      if (!yaml_document_add_scalar(
-              document_to, node->tag, node->data.scalar.value,
-              node->data.scalar.length, node->data.scalar.style))
-        goto out;
-      break;
-    case YAML_SEQUENCE_NODE:
-      if (!yaml_document_add_sequence(document_to, node->tag,
-                                      node->data.sequence.style))
-        goto out;
-      break;
-    case YAML_MAPPING_NODE:
-      if (!yaml_document_add_mapping(document_to, node->tag,
-                                     node->data.mapping.style))
-        goto out;
-      break;
-    default:
-      goto out;
-    }
-  }
-
-  for (node = document_from->nodes.start; node < document_from->nodes.top;
-       node++) {
-    switch (node->type) {
-    case YAML_SEQUENCE_NODE:
-      for (item = node->data.sequence.items.start;
-           item < node->data.sequence.items.top; item++) {
-        if (!yaml_document_append_sequence_item(
-                document_to, node - document_from->nodes.start + 1, *item))
-          goto out;
-      }
-      break;
-    case YAML_MAPPING_NODE:
-      for (pair = node->data.mapping.pairs.start;
-           pair < node->data.mapping.pairs.top; pair++) {
-        if (!yaml_document_append_mapping_pair(
-                document_to, node - document_from->nodes.start + 1, pair->key,
-                pair->value))
-          goto out;
-      }
-      break;
-    default:
-      break;
-    }
-  }
-  return error;
-
-out:
-  yaml_document_delete(document_to);
-  return !error;
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-
-  yaml_document_t document;
-  yaml_document_t documents[MAX_DOCUMENTS];
-  size_t document_number = 0;
-  int count = 0;
-  bool done = false;
-  bool equal = false;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  if (!yaml_parser_initialize(&parser))
-    return 0;
-
-  yaml_parser_set_input_string(&parser, data, size);
-  if (!yaml_emitter_initialize(&emitter))
-    return 0;
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-  yaml_emitter_open(&emitter);
-
-  while (!done) {
-    if (!yaml_parser_load(&parser, &document)) {
-      equal = 1;
-      break;
-    }
-
-    done = (!yaml_document_get_root_node(&document));
-    if (!done) {
-      if (document_number >= MAX_DOCUMENTS) {
-        yaml_document_delete(&document);
-        equal = true;
-        break;
-      }
-
-      if (!copy_document(&documents[document_number++], &document)) {
-        yaml_document_delete(&document);
-        equal = true;
-        break;
-      }
-      if (!(yaml_emitter_dump(&emitter, &document) ||
-            (yaml_emitter_flush(&emitter) && 0))) {
-        equal = true;
-        break;
-      }
-
-      count++;
-    } else {
-      yaml_document_delete(&document);
-    }
-  }
-
-  yaml_parser_delete(&parser);
-  yaml_emitter_close(&emitter);
-  yaml_emitter_delete(&emitter);
-
-  if (!equal) {
-    count = 0;
-    done = false;
-    if (!yaml_parser_initialize(&parser))
-      goto error;
-
-    if (!out.buf) {
-      yaml_parser_delete(&parser);
-      goto error;
-    }
-
-    yaml_parser_set_input_string(&parser, out.buf, out.size);
-
-    while (!done) {
-      if (!yaml_parser_load(&parser, &document)) {
-        yaml_parser_delete(&parser);
-        goto error;
-      }
-
-      done = (!yaml_document_get_root_node(&document));
-      if (!done) {
-        if (!documents_equal(documents + count, &document)) {
-          yaml_parser_delete(&parser);
-          goto error;
-        }
-        count++;
-      }
-      yaml_document_delete(&document);
-    }
-    yaml_parser_delete(&parser);
-  }
-
-  for (int k = 0; k < document_number; k++) {
-    yaml_document_delete(documents + k);
-  }
-
-error:
-
-  free(out.buf);
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_emitter_fuzzer.c b/projects/libyaml/libyaml_emitter_fuzzer.c
deleted file mode 100644
index d44bd60..0000000
--- a/projects/libyaml/libyaml_emitter_fuzzer.c
+++ /dev/null
@@ -1,298 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-#define MAX_EVENTS 1024
-
-bool events_equal(yaml_event_t *event1, yaml_event_t *event2) {
-  
-  const bool equal = true;
-
-  if (event1->type != event2->type)
-    return equal;
-
-  switch (event1->type) {
-  case YAML_STREAM_START_EVENT:
-    return !equal;
-
-  case YAML_DOCUMENT_START_EVENT:
-    if ((event1->data.document_start.version_directive &&
-         !event2->data.document_start.version_directive) ||
-        (!event1->data.document_start.version_directive &&
-         event2->data.document_start.version_directive) ||
-        (event1->data.document_start.version_directive &&
-         event2->data.document_start.version_directive &&
-         (event1->data.document_start.version_directive->major !=
-              event2->data.document_start.version_directive->major ||
-          event1->data.document_start.version_directive->minor !=
-              event2->data.document_start.version_directive->minor)))
-      return equal;
-    if ((event1->data.document_start.tag_directives.end -
-         event1->data.document_start.tag_directives.start) !=
-        (event2->data.document_start.tag_directives.end -
-         event2->data.document_start.tag_directives.start))
-      return equal;
-    for (int k = 0; k < (event1->data.document_start.tag_directives.end -
-                         event1->data.document_start.tag_directives.start);
-         k++) {
-      if ((strcmp((char *)event1->data.document_start.tag_directives.start[k]
-                      .handle,
-                  (char *)event2->data.document_start.tag_directives.start[k]
-                      .handle) != 0) ||
-          (strcmp((char *)event1->data.document_start.tag_directives.start[k]
-                      .prefix,
-                  (char *)event2->data.document_start.tag_directives.start[k]
-                      .prefix) != 0))
-        return equal;
-    }
-    return !equal;
-
-  case YAML_DOCUMENT_END_EVENT:
-    return !equal;
-
-  case YAML_ALIAS_EVENT:
-    return (strcmp((char *)event1->data.alias.anchor,
-                   (char *)event2->data.alias.anchor) == 0);
-
-  case YAML_SCALAR_EVENT:
-    if ((event1->data.scalar.anchor && !event2->data.scalar.anchor) ||
-        (!event1->data.scalar.anchor && event2->data.scalar.anchor) ||
-        (event1->data.scalar.anchor && event2->data.scalar.anchor &&
-         strcmp((char *)event1->data.scalar.anchor,
-                (char *)event2->data.scalar.anchor) != 0))
-      return equal;
-    if ((event1->data.scalar.tag && !event2->data.scalar.tag &&
-         strcmp((char *)event1->data.scalar.tag, "!") != 0) ||
-        (!event1->data.scalar.tag && event2->data.scalar.tag &&
-         strcmp((char *)event2->data.scalar.tag, "!") != 0) ||
-        (event1->data.scalar.tag && event2->data.scalar.tag &&
-         strcmp((char *)event1->data.scalar.tag,
-                (char *)event2->data.scalar.tag) != 0))
-      return equal;
-    if ((event1->data.scalar.length != event2->data.scalar.length) ||
-        memcmp(event1->data.scalar.value, event2->data.scalar.value,
-               event1->data.scalar.length) != 0)
-      return equal;
-    if ((event1->data.scalar.plain_implicit !=
-         event2->data.scalar.plain_implicit) ||
-        (event1->data.scalar.quoted_implicit !=
-         event2->data.scalar.quoted_implicit))
-      return equal;
-    return !equal;
-
-  case YAML_SEQUENCE_START_EVENT:
-    if ((event1->data.sequence_start.anchor &&
-         !event2->data.sequence_start.anchor) ||
-        (!event1->data.sequence_start.anchor &&
-         event2->data.sequence_start.anchor) ||
-        (event1->data.sequence_start.anchor &&
-         event2->data.sequence_start.anchor &&
-         strcmp((char *)event1->data.sequence_start.anchor,
-                (char *)event2->data.sequence_start.anchor) != 0))
-      return equal;
-    if ((event1->data.sequence_start.tag && !event2->data.sequence_start.tag) ||
-        (!event1->data.sequence_start.tag && event2->data.sequence_start.tag) ||
-        (event1->data.sequence_start.tag && event2->data.sequence_start.tag &&
-         strcmp((char *)event1->data.sequence_start.tag,
-                (char *)event2->data.sequence_start.tag) != 0))
-      return equal;
-    if ((event1->data.sequence_start.implicit !=
-         event2->data.sequence_start.implicit))
-      return equal;
-    return !equal;
-
-  case YAML_MAPPING_START_EVENT:
-    if ((event1->data.mapping_start.anchor &&
-         !event2->data.mapping_start.anchor) ||
-        (!event1->data.mapping_start.anchor &&
-         event2->data.mapping_start.anchor) ||
-        (event1->data.mapping_start.anchor &&
-         event2->data.mapping_start.anchor &&
-         strcmp((char *)event1->data.mapping_start.anchor,
-                (char *)event2->data.mapping_start.anchor) != 0))
-      return equal;
-    if ((event1->data.mapping_start.tag && !event2->data.mapping_start.tag) ||
-        (!event1->data.mapping_start.tag && event2->data.mapping_start.tag) ||
-        (event1->data.mapping_start.tag && event2->data.mapping_start.tag &&
-         strcmp((char *)event1->data.mapping_start.tag,
-                (char *)event2->data.mapping_start.tag) != 0))
-      return equal;
-    if ((event1->data.mapping_start.implicit !=
-         event2->data.mapping_start.implicit))
-      return equal;
-    return !equal;
-
-  default:
-    return !equal;
-  }
-}
-
-bool copy_event(yaml_event_t *event_to, yaml_event_t *event_from) {
-
-  switch (event_from->type) {
-  case YAML_STREAM_START_EVENT:
-    return yaml_stream_start_event_initialize(
-        event_to, event_from->data.stream_start.encoding);
-
-  case YAML_STREAM_END_EVENT:
-    return yaml_stream_end_event_initialize(event_to);
-
-  case YAML_DOCUMENT_START_EVENT:
-    return yaml_document_start_event_initialize(
-        event_to, event_from->data.document_start.version_directive,
-        event_from->data.document_start.tag_directives.start,
-        event_from->data.document_start.tag_directives.end,
-        event_from->data.document_start.implicit);
-
-  case YAML_DOCUMENT_END_EVENT:
-    return yaml_document_end_event_initialize(
-        event_to, event_from->data.document_end.implicit);
-
-  case YAML_ALIAS_EVENT:
-    return yaml_alias_event_initialize(event_to, event_from->data.alias.anchor);
-
-  case YAML_SCALAR_EVENT:
-    return yaml_scalar_event_initialize(
-        event_to, event_from->data.scalar.anchor, event_from->data.scalar.tag,
-        event_from->data.scalar.value, event_from->data.scalar.length,
-        event_from->data.scalar.plain_implicit,
-        event_from->data.scalar.quoted_implicit, event_from->data.scalar.style);
-
-  case YAML_SEQUENCE_START_EVENT:
-    return yaml_sequence_start_event_initialize(
-        event_to, event_from->data.sequence_start.anchor,
-        event_from->data.sequence_start.tag,
-        event_from->data.sequence_start.implicit,
-        event_from->data.sequence_start.style);
-
-  case YAML_SEQUENCE_END_EVENT:
-    return yaml_sequence_end_event_initialize(event_to);
-
-  case YAML_MAPPING_START_EVENT:
-    return yaml_mapping_start_event_initialize(
-        event_to, event_from->data.mapping_start.anchor,
-        event_from->data.mapping_start.tag,
-        event_from->data.mapping_start.implicit,
-        event_from->data.mapping_start.style);
-
-  case YAML_MAPPING_END_EVENT:
-    return yaml_mapping_end_event_initialize(event_to);
-  }
-
-  return false;
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-  yaml_event_t event;
-  yaml_event_t events[MAX_EVENTS];
-  size_t event_number = 0;
-  bool done = false;
-  int count = 0;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  if (!yaml_parser_initialize(&parser))
-    return 0;
-
-  yaml_parser_set_input_string(&parser, data, size);
-  if (!yaml_emitter_initialize(&emitter)) {
-    yaml_parser_delete(&parser);
-    return 0;
-  }
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-
-  while (!done) {
-    if (!yaml_parser_parse(&parser, &event)) {
-      goto delete_parser;
-    }
-
-    done = (event.type == YAML_STREAM_END_EVENT);
-    if (event_number >= MAX_EVENTS) {
-      yaml_event_delete(&event);
-      goto delete_parser;
-    }
-
-    if (copy_event(&events[event_number++], &event)) {
-      yaml_event_delete(&event);
-      goto delete_parser;
-    }
-
-    if (!yaml_emitter_emit(&emitter, &event)) {
-      goto delete_parser;
-    }
-
-  }
-
-  yaml_parser_delete(&parser);
-
-  done = false;
-  if (!yaml_parser_initialize(&parser))
-    goto error;
-
-  yaml_parser_set_input_string(&parser, out.buf, out.size);
-
-  while (!done) {
-    if (!yaml_parser_parse(&parser, &event))
-      break;
-
-    done = (event.type == YAML_STREAM_END_EVENT);
-    if (events_equal(events + count, &event)) {
-      yaml_event_delete(&event);
-      break;
-    }
-
-    yaml_event_delete(&event);
-    count++;
-  }
-
-delete_parser:
-
-  yaml_parser_delete(&parser);
-
-error:
-
-  yaml_emitter_delete(&emitter);
-
-  for (int k = 0; k < event_number; k++) {
-    yaml_event_delete(events + k);
-  }
-
-  free(out.buf);
-
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_fuzzer.cc b/projects/libyaml/libyaml_fuzzer.cc
new file mode 100644
index 0000000..57d5093
--- /dev/null
+++ b/projects/libyaml/libyaml_fuzzer.cc
@@ -0,0 +1,21 @@
+#include <stdint.h>
+
+#include <yaml.h>
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    yaml_parser_t parser;
+    yaml_parser_initialize(&parser);
+    yaml_parser_set_input_string(&parser, data, size);
+
+    int done = 0;
+    while (!done) {
+        yaml_event_t event;
+        if (!yaml_parser_parse(&parser, &event)) {
+            break;
+        }
+        done = (event.type == YAML_STREAM_END_EVENT);
+        yaml_event_delete(&event);
+    }
+    yaml_parser_delete(&parser);
+    return 0;
+}
diff --git a/projects/libyaml/libyaml_loader_fuzzer.c b/projects/libyaml/libyaml_loader_fuzzer.c
deleted file mode 100644
index 6986fea..0000000
--- a/projects/libyaml/libyaml_loader_fuzzer.c
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  yaml_parser_t parser;
-  yaml_document_t document;
-  bool done = false;
-
-  if(!yaml_parser_initialize(&parser))
-    return 0;
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  while (!done)
-  {
-      if (!yaml_parser_load(&parser, &document)) {
-          break;
-      }
-
-      done = (!yaml_document_get_root_node(&document));
-
-      yaml_document_delete(&document);
-  }
-
-  yaml_parser_delete(&parser);
-
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_parser_fuzzer.c b/projects/libyaml/libyaml_parser_fuzzer.c
deleted file mode 100644
index a0119bb..0000000
--- a/projects/libyaml/libyaml_parser_fuzzer.c
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  yaml_parser_t parser;
-  yaml_event_t event;
-  bool done = false;
-
-  if(!yaml_parser_initialize(&parser))
-    return 0;
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  while (!done)
-  {
-      if (!yaml_parser_parse(&parser, &event)) break;
-
-      done = (event.type == YAML_STREAM_END_EVENT);
-
-      yaml_event_delete(&event);
-  }
-
-  yaml_parser_delete(&parser);
-
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_reformatter_alt_fuzzer.c b/projects/libyaml/libyaml_reformatter_alt_fuzzer.c
deleted file mode 100644
index 5ca6c2b..0000000
--- a/projects/libyaml/libyaml_reformatter_alt_fuzzer.c
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  bool done = false;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-  yaml_document_t document;
-
-  /* Initialize the parser and emitter objects. */
-
-  if (!yaml_parser_initialize(&parser))
-    return 0;
-
-  if (!yaml_emitter_initialize(&emitter))
-    goto cleanup_parser;
-
-  /* Set the parser parameters. */
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  /* Set the emitter parameters. */
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  /* The main loop. */
-
-  while (!done) {
-    /* Get the next event. */
-
-    if (!yaml_parser_load(&parser, &document))
-      break;
-
-    /* Check if this is the stream end. */
-
-    done = (!yaml_document_get_root_node(&document));
-
-    /* Emit the event. */
-
-    if (!yaml_emitter_dump(&emitter, &document))
-      break;
-  }
-
-  free(out.buf);
-  yaml_emitter_delete(&emitter);
-
-cleanup_parser:
-
-  yaml_parser_delete(&parser);
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_reformatter_fuzzer.c b/projects/libyaml/libyaml_reformatter_fuzzer.c
deleted file mode 100644
index a43243f..0000000
--- a/projects/libyaml/libyaml_reformatter_fuzzer.c
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include "yaml_write_handler.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 2)
-    return 0;
-
-  bool done = false;
-  bool is_canonical = data[0] & 1;
-  bool is_unicode = data[1] & 1;
-  data += 2;
-  size -= 2;
-
-  yaml_parser_t parser;
-  yaml_emitter_t emitter;
-  yaml_event_t event;
-
-  /* Initialize the parser and emitter objects. */
-
-  if (!yaml_parser_initialize(&parser))
-    return 0;
-
-  if (!yaml_emitter_initialize(&emitter))
-    goto cleanup_parser;
-
-  /* Set the parser parameters. */
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  /* Set the emitter parameters. */
-  yaml_output_buffer_t out = {/*buf=*/NULL, /*size=*/0};
-  yaml_emitter_set_output(&emitter, yaml_write_handler, &out);
-
-  yaml_emitter_set_canonical(&emitter, is_canonical);
-  yaml_emitter_set_unicode(&emitter, is_unicode);
-
-  /* The main loop. */
-
-  while (!done) {
-    /* Get the next event. */
-
-    if (!yaml_parser_parse(&parser, &event))
-      break;
-
-    /* Check if this is the stream end. */
-
-    done = (event.type == YAML_STREAM_END_EVENT);
-
-    /* Emit the event. */
-
-    if (!yaml_emitter_emit(&emitter, &event))
-      break;
-  }
-
-  free(out.buf);
-  yaml_emitter_delete(&emitter);
-
-cleanup_parser:
-
-  yaml_parser_delete(&parser);
-  return 0;
-}
diff --git a/projects/libyaml/libyaml_scanner_fuzzer.c b/projects/libyaml/libyaml_scanner_fuzzer.c
deleted file mode 100644
index 681f8b6..0000000
--- a/projects/libyaml/libyaml_scanner_fuzzer.c
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "yaml.h"
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  yaml_parser_t parser;
-  yaml_token_t token;
-  bool done = false;
-
-  if(!yaml_parser_initialize(&parser))
-    return 0;
-
-  yaml_parser_set_input_string(&parser, data, size);
-
-  while (!done)
-  {
-      if (!yaml_parser_scan(&parser, &token)) {
-          break;
-      }
-
-      done = (token.type == YAML_STREAM_END_TOKEN);
-
-      yaml_token_delete(&token);
-  }
-
-  yaml_parser_delete(&parser);
-
-  return 0;
-}
diff --git a/projects/libyaml/project.yaml b/projects/libyaml/project.yaml
index 417dcc5..3e885cc 100644
--- a/projects/libyaml/project.yaml
+++ b/projects/libyaml/project.yaml
@@ -1,14 +1,10 @@
 homepage: https://github.com/yaml/libyaml
-language: c++
 primary_contact: "sigmavirus24@gmail.com"
 auto_ccs:
   - "alex.gaynor@gmail.com"
-  - "perlpunks@googlemail.com"
-  - "ingy@ingy.net"
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
@@ -18,4 +14,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/yaml/libyaml'
diff --git a/projects/libyaml/yaml_write_handler.h b/projects/libyaml/yaml_write_handler.h
deleted file mode 100644
index cb5d26e..0000000
--- a/projects/libyaml/yaml_write_handler.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef YAML_WRITE_HANDLER_H_
-#define YAML_WRITE_HANDLER_H_
-
-typedef struct yaml_output_buffer {
-  unsigned char *buf;
-  size_t size;
-} yaml_output_buffer_t;
-
-static int yaml_write_handler(void *data, unsigned char *buffer, size_t size) {
-  yaml_output_buffer_t *out = (yaml_output_buffer_t *)data;
-
-  out->buf = (unsigned char *)realloc(out->buf, out->size + size);
-  if (!out->buf) {
-    out->size = 0;
-    return 1;
-  }
-
-  memcpy(out->buf + out->size, buffer, size);
-  out->size += size;
-  return 0;
-}
-
-#endif // YAML_WRITE_HANDLER_H_
diff --git a/projects/libyang/Dockerfile b/projects/libyang/Dockerfile
deleted file mode 100755
index c1c5f75..0000000
--- a/projects/libyang/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf automake libtool subversion
-RUN git clone https://github.com/CESNET/libyang
-
-RUN svn co svn://vcs.exim.org/pcre2/code/trunk pcre2 && \
-    cd pcre2 && \
-    ./autogen.sh && \
-    ./configure && \
-    make && \
-    make install
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/libyang/build.sh b/projects/libyang/build.sh
deleted file mode 100755
index cb5857d..0000000
--- a/projects/libyang/build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd libyang
-git checkout libyang2
-
-sed -i 's/add_subdirectory/#add_subdirectory/g' ./tools/CMakeLists.txt
-mkdir build && cd build
-cmake ../ -DENABLE_STATIC=ON 
-make
-
-static_pcre=($(find /src/pcre2 -name "libpcre2-8.a"))
-
-for fuzzer in lyd_parse_mem_json lyd_parse_mem_xml lys_parse_mem; do
-    $CC $CFLAGS $LIB_FUZZING_ENGINE ../tests/fuzz/${fuzzer}.c -o $OUT/${fuzzer} \
-        ./libyang.a -I../src -I./src -I./compat ${static_pcre} 
-done
diff --git a/projects/libyang/project.yaml b/projects/libyang/project.yaml
deleted file mode 100755
index aac772c..0000000
--- a/projects/libyang/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/CESNET/libyang"
-main_repo: 'https://github.com/CESNET/libyang'
-primary_contact: "mvasko@cesnet.cz"
-language: c
-auto_ccs:
-  - "mv6606@gmail.com"
-  - "david@adalogics.com"
-  - "warband.times@gmail.com"
-  - "juraj.vijtiuk@sartura.hr"
-sanitizers:
-  - address
-  - memory
diff --git a/projects/libyuv/project.yaml b/projects/libyuv/project.yaml
deleted file mode 100644
index b2ce796..0000000
--- a/projects/libyuv/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://chromium.googlesource.com/libyuv/libyuv/"
-language: c++
-primary_contact: "mikhal@webrtc.org"
-auto_ccs:
-    - "fbarchard@google.com"
-    - "frkoenig@google.com"
-vendor_ccs:
-    - "ansgoel@microsoft.com"
-    - "jonorman@microsoft.com"
-fuzzing_engines:
-    - libfuzzer
-    - afl
-sanitizers:
-    - address
-    - memory
-    - undefined
diff --git a/projects/libzip/Dockerfile b/projects/libzip/Dockerfile
index a2c0b42..fb19311 100644
--- a/projects/libzip/Dockerfile
+++ b/projects/libzip/Dockerfile
@@ -17,6 +17,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER randy408@protonmail.com
 
 RUN apt-get update && apt-get install -y cmake pkg-config zlib1g-dev liblzma-dev
 
diff --git a/projects/libzip/project.yaml b/projects/libzip/project.yaml
index 2743d39..45cf724 100644
--- a/projects/libzip/project.yaml
+++ b/projects/libzip/project.yaml
@@ -1,10 +1,4 @@
 homepage: "https://libzip.org/"
-language: c++
 primary_contact: "libzip@nih.at"
 auto_ccs:
-  - "randy440088@gmail.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
-main_repo: 'https://github.com/nih-at/libzip.git'
+  - "randy440088@gmail.com"
\ No newline at end of file
diff --git a/projects/libzmq/Dockerfile b/projects/libzmq/Dockerfile
deleted file mode 100644
index dbefc17..0000000
--- a/projects/libzmq/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool gettext pkg-config build-essential
-RUN git clone --depth 1 https://github.com/zeromq/libzmq.git
-RUN git clone --depth 1 https://github.com/zeromq/libzmq-fuzz-corpora.git
-RUN git clone --depth 1 -b stable https://github.com/jedisct1/libsodium.git
-WORKDIR libzmq
-COPY build.sh $SRC/
diff --git a/projects/libzmq/build.sh b/projects/libzmq/build.sh
deleted file mode 100755
index 519696f..0000000
--- a/projects/libzmq/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-# Copyright 2020 Luca Boccassi <bluca@debian.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-${SRC}/libzmq/builds/fuzz/ci_build.sh
diff --git a/projects/libzmq/project.yaml b/projects/libzmq/project.yaml
deleted file mode 100644
index a7b9465..0000000
--- a/projects/libzmq/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/zeromq/libzmq"
-language: c++
-primary_contact: "bluca@debian.org"
-auto_ccs:
-  - "luca.boccassi@gmail.com"
-  - "somdoron@gmail.com"
-  - "simon.giesecke@gmail.com"
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/zeromq/libzmq.git'
diff --git a/projects/lighttpd/Dockerfile b/projects/lighttpd/Dockerfile
deleted file mode 100755
index e27d804..0000000
--- a/projects/lighttpd/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y libz-dev libtool pkg-config autoconf
-RUN git clone https://github.com/lighttpd/lighttpd1.4
-
-WORKDIR $SRC/lighttpd1.4
-COPY build.sh $SRC/
-COPY fuzz_* $SRC/
diff --git a/projects/lighttpd/build.sh b/projects/lighttpd/build.sh
deleted file mode 100755
index 5cd286a..0000000
--- a/projects/lighttpd/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./autogen.sh
-./configure --without-pcre --enable-static
-make
-cd src
-$CC $CFLAGS -c $SRC/fuzz_burl.c -I. -I../include
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE fuzz_burl.o burl.o buffer.o base64.o -o $OUT/fuzz_burl
diff --git a/projects/lighttpd/fuzz_burl.c b/projects/lighttpd/fuzz_burl.c
deleted file mode 100644
index 5ba1e1c..0000000
--- a/projects/lighttpd/fuzz_burl.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright 2021 Google LLC
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#include "burl.h"
-#include "buffer.h"
-
-void run_burl_normalize (buffer *psrc, buffer *ptmp, 
-						int flags, int line, const char *in, 
-						size_t in_len) {
-    int qs;
-    buffer_copy_string_len(psrc, in, in_len);
-    qs = burl_normalize(psrc, ptmp, flags);
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    if (size <= 4) {
-        return 0;
-    }
-    int flags = ((int*)data)[0];
-    data += 4;
-    size -= 4;
-    char *new_str = (char *)malloc(size+1);
-    if (new_str == NULL){
-        return 0;
-    }
-    memcpy(new_str, data, size);
-    new_str[size] = '\0';
-
-    /* main fuzzer entrypoint for library */
-    buffer *psrc = buffer_init();
-    buffer *ptmp = buffer_init();
-    run_burl_normalize(psrc, ptmp, flags, __LINE__, new_str, size);
-    buffer_urldecode_path(psrc);
-
-    buffer_free(psrc);
-    buffer_free(ptmp);
-    free(new_str);
-    return 0;     
-}
diff --git a/projects/lighttpd/project.yaml b/projects/lighttpd/project.yaml
deleted file mode 100755
index 9a4b442..0000000
--- a/projects/lighttpd/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://www.lighttpd.net/"
-primary_contact: "lighttpd.fuzz@gmail.com"
-language: c
-auto_ccs :
-  - "david@adalogics.com"
-main_repo: "https://github.com/lighttpd/lighttpd1.4"
diff --git a/projects/llvm/Dockerfile b/projects/llvm/Dockerfile
index 1fd4c55..f6cc0c8 100644
--- a/projects/llvm/Dockerfile
+++ b/projects/llvm/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcc@google.com
 RUN apt-get update -y
 RUN apt-get install -y autoconf automake libtool curl make g++ unzip wget git \
     binutils liblzma-dev libz-dev python-all cmake ninja-build subversion \
diff --git a/projects/llvm/project.yaml b/projects/llvm/project.yaml
index 54aef01..81662e8 100644
--- a/projects/llvm/project.yaml
+++ b/projects/llvm/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://llvm.org/"
-language: c++
 primary_contact: "kcc@google.com"
 auto_ccs:
   - "mascasa@google.com"
@@ -20,10 +19,9 @@
   - address
   - memory
 
+# The LLVM build currently supports only libFuzzer
 fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
+    - libfuzzer
 
 # Bug reports are public by default:
 view_restrictions: none
-main_repo: 'https://github.com/llvm/llvm-project.git'
diff --git a/projects/llvm_libcxx/Dockerfile b/projects/llvm_libcxx/Dockerfile
index 81fd8b2..389b365 100644
--- a/projects/llvm_libcxx/Dockerfile
+++ b/projects/llvm_libcxx/Dockerfile
@@ -15,5 +15,4 @@
 ################################################################################
 FROM gcr.io/oss-fuzz-base/base-builder
 RUN git clone --depth 1 https://github.com/llvm/llvm-project.git
-WORKDIR llvm-project
 COPY build.sh $SRC/
diff --git a/projects/llvm_libcxx/build.sh b/projects/llvm_libcxx/build.sh
index b7f61c7..56130d3 100755
--- a/projects/llvm_libcxx/build.sh
+++ b/projects/llvm_libcxx/build.sh
@@ -15,5 +15,22 @@
 #
 ################################################################################
 
-# Run the oss-fuzz script in the repository
-./libcxx/utils/ci/oss-fuzz.sh
+cd llvm-project
+
+if [[ $SANITIZER = *undefined* ]]; then
+  CXXFLAGS="$CXXFLAGS -fsanitize=unsigned-integer-overflow -fsanitize-trap=unsigned-integer-overflow"
+fi
+
+for f in $(grep -v "#" libcxx/fuzzing/RoutineNames.txt); do
+  cat > ${f}_fuzzer.cc <<EOF
+#include "fuzzing/fuzzing.h"
+#include <cassert>
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  int result = fuzzing::$f(data, size);
+  assert(result == 0); return 0;
+}
+EOF
+  $CXX $CXXFLAGS -std=c++11 ${f}_fuzzer.cc ./libcxx/fuzzing/fuzzing.cpp \
+      -nostdinc++ -cxx-isystem ./libcxx/include -iquote ./libcxx \
+      -o $OUT/$f $LIB_FUZZING_ENGINE
+done
diff --git a/projects/llvm_libcxx/project.yaml b/projects/llvm_libcxx/project.yaml
index 95587c1..06b10f3 100644
--- a/projects/llvm_libcxx/project.yaml
+++ b/projects/llvm_libcxx/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://libcxx.llvm.org/"
-language: c++
 primary_contact: "mclow.lists@gmail.com"
 auto_ccs:
   - "timshen91@gmail.com"
diff --git a/projects/llvm_libcxxabi/Dockerfile b/projects/llvm_libcxxabi/Dockerfile
index b66bd78..15ca3e1 100644
--- a/projects/llvm_libcxxabi/Dockerfile
+++ b/projects/llvm_libcxxabi/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcc@google.com
 RUN apt-get update && apt-get install -y subversion
 
 RUN git clone --depth 1 https://github.com/llvm/llvm-project.git
diff --git a/projects/llvm_libcxxabi/project.yaml b/projects/llvm_libcxxabi/project.yaml
index 64e7e62..3a2e46f 100644
--- a/projects/llvm_libcxxabi/project.yaml
+++ b/projects/llvm_libcxxabi/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://libcxxabi.llvm.org/"
-language: c++
 primary_contact: "kcc@google.com"
 auto_ccs:
   - "Erik.Pilkington@gmail.com"
diff --git a/projects/lodepng/Dockerfile b/projects/lodepng/Dockerfile
index f295e56..f5c9c27 100644
--- a/projects/lodepng/Dockerfile
+++ b/projects/lodepng/Dockerfile
@@ -15,9 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER lvandeve@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/lvandeve/lodepng.git lodepng     # or use other version control
 WORKDIR lodepng
-ADD http://oss-fuzz-corpus.storage.googleapis.com/lodepng/lodepng_fuzzer_seed_corpus.zip $SRC/
-ADD https://raw.githubusercontent.com/google/AFL/master/dictionaries/png.dict $SRC/lodepng_fuzzer.dict
 COPY build.sh $SRC/
diff --git a/projects/lodepng/build.sh b/projects/lodepng/build.sh
index 491b0fc..be59342 100755
--- a/projects/lodepng/build.sh
+++ b/projects/lodepng/build.sh
@@ -19,9 +19,3 @@
 # allocate more than 100MB memory, which prevents OOM with the 2GB limit.
 $CXX $CXXFLAGS -DLODEPNG_MAX_ALLOC=100000000 lodepng.cpp lodepng_fuzzer.cpp -o\
  $OUT/lodepng_fuzzer $LIB_FUZZING_ENGINE
-
-# copy seed corpus
-cp $SRC/lodepng_fuzzer_seed_corpus.zip $OUT/
-
-# copy dictionary file
-cp $SRC/*.dict $OUT/
diff --git a/projects/lodepng/project.yaml b/projects/lodepng/project.yaml
index babb4c9..57af912 100644
--- a/projects/lodepng/project.yaml
+++ b/projects/lodepng/project.yaml
@@ -1,9 +1,5 @@
 homepage: "https://github.com/lvandeve/lodepng"
-language: c++
 primary_contact: "lvandeve@gmail.com"
-auto_ccs:
-  - "singharshdeep@google.com"
 sanitizers:
 - address
 - undefined
-main_repo: 'https://github.com/lvandeve/lodepng.git'
diff --git a/projects/loki/Dockerfile b/projects/loki/Dockerfile
deleted file mode 100644
index 2340618..0000000
--- a/projects/loki/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/grafana/loki/
-COPY build.sh $SRC/
-WORKDIR $SRC/loki
diff --git a/projects/loki/build.sh b/projects/loki/build.sh
deleted file mode 100644
index de3d5fb..0000000
--- a/projects/loki/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer github.com/grafana/loki/pkg/logql FuzzParseExpr fuzz_parse_expr
diff --git a/projects/loki/project.yaml b/projects/loki/project.yaml
deleted file mode 100644
index 5b75286..0000000
--- a/projects/loki/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/grafana/loki"
-primary_contact: "cyril.tovena@grafana.com"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "edward.welch@grafana.com"
-  - "michel.hollands@grafana.com"
-  - "loki@grafana.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/grafana/loki'
diff --git a/projects/lotus/Dockerfile b/projects/lotus/Dockerfile
deleted file mode 100644
index 08dccff..0000000
--- a/projects/lotus/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y mesa-opencl-icd ocl-icd-opencl-dev gcc \
-    git bzr jq pkg-config curl clang build-essential hwloc libhwloc-dev
-RUN git clone --depth 1 https://github.com/filecoin-project/lotus
-RUN git clone --depth 1 https://github.com/filecoin-project/fuzzing-lotus
-COPY build.sh $SRC/
-WORKDIR $SRC/lotus
diff --git a/projects/lotus/build.sh b/projects/lotus/build.sh
deleted file mode 100644
index 6460309..0000000
--- a/projects/lotus/build.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-make
-
-# Not all fuzzers can be compiled with --sanitizer=coverage.
-# The specific issue is that gofuzz.NewFromGofuzz is not supported when compiling with coverage.
-# The current status of the coverage build is that we do not break it for the fuzzers that cannot be compiled.
-#The reason that we don't break the build script is to create coverage reports for the fuzzers that compile.
-if [[ $SANITIZER = *coverage* ]]; then
-	compile_go_fuzzer github.com/filecoin-project/lotus/chain/types FuzzMessage fuzz_message gofuzz
-	mkdir fuzzing
-	cp ../fuzzing-lotus/fuzz/fuzz.go fuzzing/
-	compile_go_fuzzer github.com/filecoin-project/lotus/fuzzing FuzzBlockMsg fuzz_block_msg || true
-	compile_go_fuzzer github.com/filecoin-project/lotus/fuzzing FuzzBlockMsgStructural fuzz_block_msg_structural || true
-	compile_go_fuzzer github.com/filecoin-project/lotus/fuzzing FuzzBlockHeader fuzz_block_header || true
-	compile_go_fuzzer github.com/filecoin-project/lotus/fuzzing FuzzNodesForHeight fuzz_nodes_for_height || true
-	exit 0
-fi
-
-compile_go_fuzzer ./chain/types FuzzMessage fuzz_message gofuzz
-
-
-# Fuzzers from fuzzing-lotus
-cd ../fuzzing-lotus/fuzz
-rm -Rf libfuzzer
-go mod init github.com/filecoin-project/fuzzing-lotus/fuzz
-
-compile_go_fuzzer github.com/filecoin-project/fuzzing-lotus/fuzz FuzzBlockMsg fuzz_block_msg
-compile_go_fuzzer github.com/filecoin-project/fuzzing-lotus/fuzz FuzzBlockMsgStructural fuzz_block_msg_structural
-compile_go_fuzzer github.com/filecoin-project/fuzzing-lotus/fuzz FuzzBlockHeader fuzz_block_header
-compile_go_fuzzer github.com/filecoin-project/fuzzing-lotus/fuzz FuzzNodesForHeight fuzz_nodes_for_height
-exit 0
diff --git a/projects/lotus/project.yaml b/projects/lotus/project.yaml
deleted file mode 100644
index 6ab81c1..0000000
--- a/projects/lotus/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/filecoin-project/lotus"
-main_repo: "https://github.com/filecoin-project/lotus"
-primary_contact: "security@filecoin.org"
-auto_ccs :
-  - "Adam@adalogics.com"
-  - "kubuxu@protocol.ai"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/lua/Dockerfile b/projects/lua/Dockerfile
deleted file mode 100644
index 054ce66..0000000
--- a/projects/lua/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y libreadline-dev 
-RUN git clone https://github.com/lua/lua
-WORKDIR $SRC
-COPY build.sh $SRC/
-COPY fuzz_lua.c $SRC/
diff --git a/projects/lua/build.sh b/projects/lua/build.sh
deleted file mode 100755
index 72f33c7..0000000
--- a/projects/lua/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-sed "s/CFLAGS=/CFLAGS+=/g" -i $SRC/lua/makefile
-sed "s/MYLDFLAGS=/MYLDFLAGS=${CFLAGS} /g" -i $SRC/lua/makefile
-sed "s|CC= gcc|CC= ${CC}|g" -i $SRC/lua/makefile
-
-cd $SRC/lua
-make
-cp ../fuzz_lua.c .
-$CC $CFLAGS -c fuzz_lua.c -o fuzz_lua.o
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE fuzz_lua.o -o $OUT/fuzz_lua ./liblua.a
diff --git a/projects/lua/fuzz_lua.c b/projects/lua/fuzz_lua.c
deleted file mode 100644
index 2acaf2c..0000000
--- a/projects/lua/fuzz_lua.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Copyright 2020 Google LLC
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-
-#define lua_c
-
-#include "lprefix.h"
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <signal.h>
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "lualib.h"
-
-
-#if !defined(LUA_PROGNAME)
-#define LUA_PROGNAME            "lua"
-#endif
-
-#if !defined(LUA_INIT_VAR)
-#define LUA_INIT_VAR            "LUA_INIT"
-#endif
-
-#define LUA_INITVARVERSION      LUA_INIT_VAR LUA_VERSUFFIX
-
-
-static lua_State *globalL = NULL;
-
-static const char *progname = LUA_PROGNAME;
-
-
-/*
-** Hook set by signal function to stop the interpreter.
-*/
-static void lstop (lua_State *L, lua_Debug *ar) {
-  (void)ar;  /* unused arg. */
-  lua_sethook(L, NULL, 0, 0);  /* reset hook */
-  luaL_error(L, "interrupted!");
-}
-
-
-/*
-** Function to be called at a C signal. Because a C signal cannot
-** just change a Lua state (as there is no proper synchronization),
-** this function only sets a hook that, when called, will stop the
-** interpreter.
-*/
-static void laction (int i) {
-  int flag = LUA_MASKCALL | LUA_MASKRET | LUA_MASKLINE | LUA_MASKCOUNT;
-  signal(i, SIG_DFL); /* if another SIGINT happens, terminate process */
-  lua_sethook(globalL, lstop, flag, 1);
-}
-
-
-
-/*
-** Prints an error message, adding the program name in front of it
-** (if present)
-*/
-static void l_message (const char *pname, const char *msg) {
-  if (pname) lua_writestringerror("%s: ", pname);
-  lua_writestringerror("%s\n", msg);
-}
-
-
-/*
-** Check whether 'status' is not OK and, if so, prints the error
-** message on the top of the stack. It assumes that the error object
-** is a string, as it was either generated by Lua or by 'msghandler'.
-*/
-static int report (lua_State *L, int status) {
-  if (status != LUA_OK) {
-    const char *msg = lua_tostring(L, -1);
-    l_message(progname, msg);
-    lua_pop(L, 1);  /* remove message */
-  }
-  return status;
-}
-
-/*
-** Message handler used to run all chunks
-*/
-static int msghandler (lua_State *L) {
-  const char *msg = lua_tostring(L, 1);
-  if (msg == NULL) {  /* is error object not a string? */
-    if (luaL_callmeta(L, 1, "__tostring") &&  /* does it have a metamethod */
-        lua_type(L, -1) == LUA_TSTRING)  /* that produces a string? */
-      return 1;  /* that is the message */
-    else
-      msg = lua_pushfstring(L, "(error object is a %s value)",
-                               luaL_typename(L, 1));
-  }
-  luaL_traceback(L, L, msg, 1);  /* append a standard traceback */
-  return 1;  /* return the traceback */
-}
-
-
-/*
-** Interface to 'lua_pcall', which sets appropriate message function
-** and C-signal handler. Used to run all chunks.
-*/
-static int docall (lua_State *L, int narg, int nres) {
-  int status;
-  int base = lua_gettop(L) - narg;  /* function index */
-  lua_pushcfunction(L, msghandler);  /* push message handler */
-  lua_insert(L, base);  /* put it under function and args */
-  globalL = L;  /* to be available to 'laction' */
-  signal(SIGINT, laction);  /* set C-signal handler */
-  status = lua_pcall(L, narg, nres, base);
-  signal(SIGINT, SIG_DFL); /* reset C-signal handler */
-  lua_remove(L, base);  /* remove message handler from the stack */
-  return status;
-}
-
-
-static int dochunk (lua_State *L, int status) {
-  if (status == LUA_OK) status = docall(L, 0, 0);
-  return report(L, status);
-}
-
-
-/* mark in error messages for incomplete statements */
-#define EOFMARK         "<eof>"
-#define marklen         (sizeof(EOFMARK)/sizeof(char) - 1)
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    lua_State *L = luaL_newstate();
-    if (L == NULL) {
-        return 0;
-    }
-    dochunk(L, luaL_loadbufferx(L, data, size, "test", "t"));
-
-    lua_close(L);
-    return 0;
-}
diff --git a/projects/lua/project.yaml b/projects/lua/project.yaml
deleted file mode 100644
index 9a4b0dd..0000000
--- a/projects/lua/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://github.com/lua/lua"
-language: c
-primary_contact: "roberto@inf.puc-rio.br"
-auto_ccs:
-  - "fuzz@lua.org"
-  - "david@adalogics.com"
-main_repo: 'https://github.com/lua/lua'
diff --git a/projects/lwan/Dockerfile b/projects/lwan/Dockerfile
index 6499373..a342314 100644
--- a/projects/lwan/Dockerfile
+++ b/projects/lwan/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER leandro.pereira@gmail.com
 RUN apt-get update
 RUN apt-get install -y build-essential cmake git ninja-build zlib1g-dev
 
diff --git a/projects/lwan/project.yaml b/projects/lwan/project.yaml
index 224f6b5..4342d99 100644
--- a/projects/lwan/project.yaml
+++ b/projects/lwan/project.yaml
@@ -1,6 +1,4 @@
 homepage: "https://github.com/lpereira/lwan"
-language: c++
 primary_contact: "leandro.pereira@gmail.com"
 sanitizers:
   - address
-main_repo: 'git://github.com/lpereira/lwan'
diff --git a/projects/lxc/Dockerfile b/projects/lxc/Dockerfile
deleted file mode 100644
index 375c224..0000000
--- a/projects/lxc/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y pkgconf make libtool automake autoconf
-RUN git clone --depth 1 https://github.com/lxc/lxc
-WORKDIR lxc
-COPY build.sh $SRC/
diff --git a/projects/lxc/build.sh b/projects/lxc/build.sh
deleted file mode 100755
index 1f18a7e..0000000
--- a/projects/lxc/build.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash -e
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-src/tests/oss-fuzz.sh
diff --git a/projects/lxc/project.yaml b/projects/lxc/project.yaml
deleted file mode 100644
index f19d356..0000000
--- a/projects/lxc/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/lxc/lxc"
-language: c
-primary_contact: "christian@brauner.io"
-builds_per_day: 4
-sanitizers:
-  - address
-  - undefined
-  - memory
-auto_ccs:
-  - stgraber@stgraber.org
-  - evverx@gmail.com
-main_repo: "https://github.com/lxc/lxc"
diff --git a/projects/lz4/Dockerfile b/projects/lz4/Dockerfile
index 2f9f429..93da98d 100644
--- a/projects/lz4/Dockerfile
+++ b/projects/lz4/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cmeister2@gmail.com
 
 RUN git clone --depth 1 https://github.com/lz4/lz4.git /src/lz4
 
diff --git a/projects/lz4/project.yaml b/projects/lz4/project.yaml
index 8aa5314..7b008f0 100644
--- a/projects/lz4/project.yaml
+++ b/projects/lz4/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/lz4/lz4"
-language: c++
 primary_contact: "Yann.collet.73@gmail.com"
 auto_ccs:
   - "NickRTerrell@gmail.com"
@@ -9,16 +8,10 @@
   - "bimbashrestha@fb.com"
   - "mhl@fb.com"
   - "reed@fb.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
   - memory
   - undefined
-  - dataflow
 architectures:
   - x86_64
-main_repo: 'https://github.com/lz4/lz4.git'
+  - i386
diff --git a/projects/lzma/Dockerfile b/projects/lzma/Dockerfile
index 38e5dfe..36e9306 100644
--- a/projects/lzma/Dockerfile
+++ b/projects/lzma/Dockerfile
@@ -16,6 +16,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 
+MAINTAINER mail@joachim-bauch.de
 
 RUN apt-get update && apt-get install -y \
 	autoconf \
diff --git a/projects/lzma/project.yaml b/projects/lzma/project.yaml
index 45f9fb8..e555832 100644
--- a/projects/lzma/project.yaml
+++ b/projects/lzma/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.7-zip.org/sdk.html"
-language: c++
 primary_contact: "ipavlov@users.sourceforge.net"
 auto_ccs:
   - "mail@joachim-bauch.de"
diff --git a/projects/lzo/Dockerfile b/projects/lzo/Dockerfile
index 32127b1..e309f62 100644
--- a/projects/lzo/Dockerfile
+++ b/projects/lzo/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER info@oberhumer.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool wget
 RUN wget -O lzo.tar.gz \
     http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
diff --git a/projects/lzo/project.yaml b/projects/lzo/project.yaml
index 5713379..7bf5d10 100644
--- a/projects/lzo/project.yaml
+++ b/projects/lzo/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.oberhumer.com"
-language: c++
 primary_contact: "info@oberhumer.com"
 auto_ccs:
   - "bshas3@gmail.com"
diff --git a/projects/matio/Dockerfile b/projects/matio/Dockerfile
index d69281c..42c0dd4 100644
--- a/projects/matio/Dockerfile
+++ b/projects/matio/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/madler/zlib
+MAINTAINER t-beu@users.sourceforge.net
+RUN apt-get update && apt-get install -y make autoconf automake libhdf5-dev libtool zlib1g-dev
+ENV HDF5_DIR /usr/lib/x86_64-linux-gnu/hdf5/serial
 RUN git clone --depth 1 git://git.code.sf.net/p/matio/matio matio
-ADD https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.gz hdf5-1.12.0.tar.gz
 WORKDIR matio
+ADD https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz szip.tar.gz
 COPY build.sh $SRC/
diff --git a/projects/matio/project.yaml b/projects/matio/project.yaml
index 3b3596b..054efbe 100644
--- a/projects/matio/project.yaml
+++ b/projects/matio/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/tbeu/matio"
-language: c++
 primary_contact: "t-beu@users.sourceforge.net"
 sanitizers:
   - address
@@ -7,4 +6,3 @@
   - undefined
 architectures:
   - x86_64
-main_repo: 'git://git.code.sf.net/p/matio/matio'
diff --git a/projects/mbedtls/Dockerfile b/projects/mbedtls/Dockerfile
index 3a8908f..9c49e60 100644
--- a/projects/mbedtls/Dockerfile
+++ b/projects/mbedtls/Dockerfile
@@ -16,6 +16,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 #TODO change
+MAINTAINER support-mbedtls@arm.com
 RUN apt-get update && apt-get install -y make cmake
 RUN git clone --recursive --depth 1 https://github.com/ARMmbed/mbedtls.git mbedtls
 RUN git clone --depth 1 https://github.com/google/boringssl.git boringssl
diff --git a/projects/mbedtls/project.yaml b/projects/mbedtls/project.yaml
index e76f41a..ac93b7e 100644
--- a/projects/mbedtls/project.yaml
+++ b/projects/mbedtls/project.yaml
@@ -1,6 +1,3 @@
-homepage: "https://developer.trustedfirmware.org/w/mbed-tls/"
-language: c++
-primary_contact: "mbed-tls-security@lists.trustedfirmware.org"
-auto_ccs :
-  - "p.antoine@catenacyber.fr"
-main_repo: 'https://github.com/ARMmbed/mbedtls.git'
+homepage: "https://tls.mbed.org"
+primary_contact: "support-mbedtls@arm.com"
+auto_ccs : "p.antoine@catenacyber.fr"
diff --git a/projects/md4c/Dockerfile b/projects/md4c/Dockerfile
deleted file mode 100755
index 65ebbff..0000000
--- a/projects/md4c/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake
-RUN git clone https://github.com/mity/md4c
-
-WORKDIR $SRC/md4c
-COPY build.sh $SRC/
diff --git a/projects/md4c/build.sh b/projects/md4c/build.sh
deleted file mode 100755
index 51d8a80..0000000
--- a/projects/md4c/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mkdir build && cd build
-cmake ../ -DBUILD_SHARED_LIBS=OFF
-make
-$CC $CFLAGS $LIB_FUZZING_ENGINE ../test/fuzzers/fuzz-mdhtml.c -o $OUT/fuzz-mdhtml \
-    -I../src ./src/libmd4c-html.a ./src/libmd4c.a
diff --git a/projects/md4c/project.yaml b/projects/md4c/project.yaml
deleted file mode 100755
index 33e881e..0000000
--- a/projects/md4c/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/mity/md4c"
-main_repo: "https://github.com/mity/md4c"
-primary_contact: "mity@morous.org"
-language: c
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/mdbtools/Dockerfile b/projects/mdbtools/Dockerfile
deleted file mode 100644
index 37b2668..0000000
--- a/projects/mdbtools/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf autoconf-archive automake gettext libtool pkg-config
-
-RUN git clone --depth 1 --branch master https://github.com/mdbtools/mdbtools mdbtools
-RUN git clone --depth 1 https://github.com/mdbtools/mdbtestdata mdbtestdata
-WORKDIR mdbtools
-COPY build.sh $SRC/
diff --git a/projects/mdbtools/build.sh b/projects/mdbtools/build.sh
deleted file mode 100644
index d3269bc..0000000
--- a/projects/mdbtools/build.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash -eu
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-autoreconf -f -i
-./configure --enable-static --disable-man --disable-glib
-make clean
-
-make
-
-zip -j $OUT/fuzz_mdb_seed_corpus.zip ../mdbtestdata/data/*.mdb ../mdbtestdata/data/*.accdb
-
-cd src/fuzz
-make fuzz_mdb
-cp fuzz_mdb $OUT/fuzz_mdb
diff --git a/projects/mdbtools/project.yaml b/projects/mdbtools/project.yaml
deleted file mode 100644
index 86b0d4f..0000000
--- a/projects/mdbtools/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "https://github.com/mdbtools/mdbtools"
-language: c
-primary_contact: "emmiller@gmail.com"
-main_repo: "https://github.com/mdbtools/mdbtools"
diff --git a/projects/mercurial/Dockerfile b/projects/mercurial/Dockerfile
index 334d95d..09b5220 100644
--- a/projects/mercurial/Dockerfile
+++ b/projects/mercurial/Dockerfile
@@ -15,28 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y \
-  autoconf \
-  automake \
-  build-essential \
-  curl \
-  libbz2-dev \
-  libncurses5-dev \
-  libncursesw5-dev \
-  libreadline-dev \
-  libsqlite3-dev \
-  libssl-dev \
-  libtool \
-  llvm \
-  lzma-dev \
-  make \
-  python3-dev \
-  tk-dev \
-  wget \
-  xz-utils \
-  zlib1g-dev \
-  mercurial
-RUN cd $SRC && curl https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz | tar xzf -
+MAINTAINER security@mercurial-scm.org
+RUN apt-get update && apt-get install -y make autoconf automake libtool \
+  python-dev mercurial curl
+RUN cd $SRC && curl https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz | tar xzf -
 RUN hg clone https://www.mercurial-scm.org/repo/hg mercurial
 WORKDIR mercurial
 COPY build.sh $SRC/
diff --git a/projects/mercurial/build.sh b/projects/mercurial/build.sh
index abb6ba6..30ee281 100755
--- a/projects/mercurial/build.sh
+++ b/projects/mercurial/build.sh
@@ -15,43 +15,49 @@
 #
 ################################################################################
 
-# Ignore memory leaks from python scripts invoked in the build
-export ASAN_OPTIONS="detect_leaks=0"
-export MSAN_OPTIONS="halt_on_error=0:exitcode=0:report_umrs=0"
+pushd $SRC/Python-2.7.15/
+patch -p1 <<'EOF'
+Index: v2_7_unstable/Python/pymath.c
+===================================================================
+--- v2_7_unstable.orig/Python/pymath.c
++++ v2_7_unstable/Python/pymath.c
+@@ -18,6 +18,7 @@ double _Py_force_double(double x)
+ /* inline assembly for getting and setting the 387 FPU control word on
+    gcc/x86 */
 
-# Remove -pthread from CFLAGS, this trips up ./configure
-# which thinks pthreads are available without any CLI flags
-CFLAGS=${CFLAGS//"-pthread"/}
++__attribute__((no_sanitize_memory))
+ unsigned short _Py_get_387controlword(void) {
+     unsigned short cw;
+     __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
+Index: v2_7_unstable/Modules/_ctypes/callproc.c
+===================================================================
+--- v2_7_unstable.orig/Modules/_ctypes/callproc.c
++++ v2_7_unstable/Modules/_ctypes/callproc.c
+@@ -1166,6 +1166,10 @@ PyObject *_ctypes_callproc(PPROC pProc,
 
-FLAGS=()
-case $SANITIZER in
-  address)
-    FLAGS+=("--with-address-sanitizer")
-    ;;
-  memory)
-    FLAGS+=("--with-memory-sanitizer")
-    # installing ensurepip takes a while with MSAN instrumentation, so
-    # we disable it here
-    FLAGS+=("--without-ensurepip")
-    ;;
-  undefined)
-    FLAGS+=("--with-undefined-behavior-sanitizer")
-    ;;
-esac
+     rtype = _ctypes_get_ffi_type(restype);
+     resbuf = alloca(max(rtype->size, sizeof(ffi_arg)));
++    /* ffi_call actually initializes resbuf, but from asm, which
++     * MemorySanitizer can't detect. Avoid false positives from MSan. */
++    if (resbuf != NULL)
++        memset(resbuf, 0, max(rtype->size, sizeof(ffi_arg)));
 
-pushd $SRC/Python-3.8.3/
+     avalues = (void **)alloca(sizeof(void *) * argcount);
+     atypes = (ffi_type **)alloca(sizeof(ffi_type *) * argcount);
+EOF
+
 if [ -e $OUT/sanpy/cflags -a "$(cat $OUT/sanpy/cflags)" = "${CFLAGS}" ] ; then
     echo 'Python cflags unchanged, no need to rebuild'
 else
     rm -rf $OUT/sanpy
-    ./configure "${FLAGS[@]:-}" \
+    ASAN_OPTIONS=detect_leaks=0 ./configure --without-pymalloc \
                 --prefix=$OUT/sanpy CFLAGS="${CFLAGS}" LINKCC="${CXX}" \
                 LDFLAGS="${CXXFLAGS}"
     grep -v HAVE_GETC_UNLOCKED < pyconfig.h > tmp && mv tmp pyconfig.h
-    make && make install
+    ASAN_OPTIONS=detect_leaks=0 make && make install
     echo "${CFLAGS}" > $OUT/sanpy/cflags
 fi
 popd
 
 cd contrib/fuzz
-make clean oss-fuzz PYTHON_CONFIG=$OUT/sanpy/bin/python3.8-config PYTHON_CONFIG_FLAGS="--ldflags --embed"
+make clean oss-fuzz
diff --git a/projects/mercurial/project.yaml b/projects/mercurial/project.yaml
index 2908b04..e000719 100644
--- a/projects/mercurial/project.yaml
+++ b/projects/mercurial/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.mercurial-scm.org/"
-language: c++
 primary_contact: "durin42@gmail.com"
 auto_ccs:
   - "gregory.szorc@gmail.com"
@@ -10,4 +9,3 @@
   - address
   - undefined
   - memory
-coverage_extra_args: -ignore-filename-regex=.*/sanpy/.*
diff --git a/projects/meshoptimizer/Dockerfile b/projects/meshoptimizer/Dockerfile
deleted file mode 100644
index 0522ab8..0000000
--- a/projects/meshoptimizer/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-  pkg-config cmake libcurlpp-dev libcurl4-openssl-dev
-RUN git clone https://github.com/zeux/meshoptimizer
-WORKDIR meshoptimizer
-COPY build.sh $SRC/
diff --git a/projects/meshoptimizer/build.sh b/projects/meshoptimizer/build.sh
deleted file mode 100755
index 8012b52..0000000
--- a/projects/meshoptimizer/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mkdir build && cd build
-cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ..
-make -j$(nproc)
-
-cd ..
-find . -name "*.o" -exec ar rcs fuzz_lib.a {} \;
-$CXX $CXXFLAGS tools/codecfuzz.cpp -o $OUT/codecfuzzer $LIB_FUZZING_ENGINE fuzz_lib.a
diff --git a/projects/meshoptimizer/project.yaml b/projects/meshoptimizer/project.yaml
deleted file mode 100644
index bc4b3cf..0000000
--- a/projects/meshoptimizer/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/zeux/meshoptimizer"
-main_repo: "https://github.com/zeux/meshoptimizer"
-language: c++
-primary_contact: "arseny.kapoulkine@gmail.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
diff --git a/projects/minify/Dockerfile b/projects/minify/Dockerfile
deleted file mode 100644
index 3f3516a..0000000
--- a/projects/minify/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/tdewolff/minify
-RUN git clone --depth 1 https://github.com/tdewolff/parse
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/minify/build.sh b/projects/minify/build.sh
deleted file mode 100755
index 1c03167..0000000
--- a/projects/minify/build.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-./minify/tests/oss-fuzz-build.sh
diff --git a/projects/minify/project.yaml b/projects/minify/project.yaml
deleted file mode 100644
index 3854a49..0000000
--- a/projects/minify/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/tdewolff/minify"
-primary_contact: "tacodewolff@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/tdewolff/minify'
diff --git a/projects/miniz/Dockerfile b/projects/miniz/Dockerfile
deleted file mode 100644
index 5658ff3..0000000
--- a/projects/miniz/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && \
-    apt-get install -y cmake
-
-RUN git clone --depth 1 https://github.com/richgel999/miniz.git
-
-WORKDIR miniz
-COPY build.sh $SRC/
diff --git a/projects/miniz/build.sh b/projects/miniz/build.sh
deleted file mode 100755
index e116a39..0000000
--- a/projects/miniz/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Run the OSS-Fuzz script in the project
-$SRC/miniz/tests/ossfuzz.sh
-
diff --git a/projects/miniz/project.yaml b/projects/miniz/project.yaml
deleted file mode 100644
index 928f7c6..0000000
--- a/projects/miniz/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://github.com/richgel999/miniz"
-language: c
-primary_contact: "martin@urbackup.org"
-auto_ccs:
-  - "randy440088@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-main_repo: 'https://github.com/richgel999/miniz.git'
diff --git a/projects/minizinc/Dockerfile b/projects/minizinc/Dockerfile
new file mode 100644
index 0000000..70a58ea
--- /dev/null
+++ b/projects/minizinc/Dockerfile
@@ -0,0 +1,24 @@
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER Harsil S. Patel <harsil.patel@monash.edu>
+RUN apt-get update && apt-get install -y make autoconf automake libtool cmake git build-essential curl
+RUN curl -L https://gitlab.com/minizinc/minizinc-afl-seed-corpus/-/archive/master/minizinc-afl-seed-corpus-master.zip -o $SRC/minizinc_fuzzer_seed_corpus.zip
+RUN git clone --depth 1 --branch develop https://github.com/MiniZinc/libminizinc.git minizinc
+COPY minizinc_fuzzer.cpp minizinc/
+WORKDIR minizinc
+COPY build.sh minizinc_fuzzer.dict minizinc_fuzzer.options $SRC/
\ No newline at end of file
diff --git a/projects/minizinc/build.sh b/projects/minizinc/build.sh
new file mode 100755
index 0000000..9cd1c08
--- /dev/null
+++ b/projects/minizinc/build.sh
@@ -0,0 +1,32 @@
+#!/bin/bash -eu
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+build_dir=$WORK/build
+
+mkdir -p $build_dir
+pushd $build_dir
+cmake $SRC/minizinc -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=$WORK/install
+cmake --build . --target install -- -j$(nproc)
+popd
+
+$CXX $CXXFLAGS -std=c++11 -I$WORK/install/include $SRC/minizinc/minizinc_fuzzer.cpp -o $OUT/minizinc_fuzzer $LIB_FUZZING_ENGINE $WORK/install/lib/libmzn.a
+
+rm -rf $OUT/share
+mv $WORK/install/share $OUT
+mv $SRC/minizinc_fuzzer_seed_corpus.zip $OUT/minizinc_fuzzer_seed_corpus.zip
+mv $SRC/minizinc_fuzzer.dict $OUT/minizinc_fuzzer.dict
+mv $SRC/minizinc_fuzzer.options $OUT/minizinc_fuzzer.options
\ No newline at end of file
diff --git a/projects/minizinc/minizinc_fuzzer.cpp b/projects/minizinc/minizinc_fuzzer.cpp
new file mode 100644
index 0000000..f4bbc28
--- /dev/null
+++ b/projects/minizinc/minizinc_fuzzer.cpp
@@ -0,0 +1,66 @@
+/*
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+*/
+
+#include <minizinc/solver.hh>
+
+using namespace std;
+using namespace MiniZinc;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+
+    Timer starttime;
+    bool fSuccess = false;
+    try {
+      MznSolver slv(std::cout,std::cerr);
+      try {
+        std::string model = std::string(reinterpret_cast<const char*>(Data), Size);
+        std::vector<std::string> args({"-c","--solver","org.minizinc.mzn-fzn"});
+        fSuccess = (slv.run(args, model, "minizinc", "model.mzn") != SolverInstance::ERROR);
+      } catch (const LocationException& e) {
+        if (slv.get_flag_verbose())
+          std::cerr << std::endl;
+        std::cerr << e.loc() << ":" << std::endl;
+        std::cerr << e.what() << ": " << e.msg() << std::endl;
+      } catch (const Exception& e) {
+        if (slv.get_flag_verbose())
+          std::cerr << std::endl;
+        std::string what = e.what();
+        std::cerr << what << (what.empty() ? "" : ": ") << e.msg() << std::endl;
+      }
+      catch (const exception& e) {
+        if (slv.get_flag_verbose())
+          std::cerr << std::endl;
+        std::cerr << e.what() << std::endl;
+      }
+      catch (...) {
+        if (slv.get_flag_verbose())
+          std::cerr << std::endl;
+        std::cerr << "  UNKNOWN EXCEPTION." << std::endl;
+      }
+
+      if (slv.get_flag_verbose()) {
+        std::cerr << "   Done (";
+        cerr << "overall time " << starttime.stoptime() << ")." << std::endl;
+      }
+    } catch (const Exception& e) {
+      std::string what = e.what();
+      std::cerr << what << (what.empty() ? "" : ": ") << e.msg() << std::endl;
+    }
+
+  return 0;  // Non-zero return values are reserved for future use.
+}
diff --git a/projects/minizinc/minizinc_fuzzer.dict b/projects/minizinc/minizinc_fuzzer.dict
new file mode 100644
index 0000000..79db04d
--- /dev/null
+++ b/projects/minizinc/minizinc_fuzzer.dict
@@ -0,0 +1,50 @@
+reserved_keyword_0="ann"
+reserved_keyword_1="annotation"
+reserved_keyword_2="any"
+reserved_keyword_3="array"
+reserved_keyword_4="bool"
+reserved_keyword_5="case"
+reserved_keyword_6="constraint"
+reserved_keyword_7="diff"
+reserved_keyword_8="div"
+reserved_keyword_9="else"
+reserved_keyword_10="elseif"
+reserved_keyword_11="endif"
+reserved_keyword_12="enum"
+reserved_keyword_13="false"
+reserved_keyword_14="float"
+reserved_keyword_15="function"
+reserved_keyword_16="if"
+reserved_keyword_17="in"
+reserved_keyword_18="include"
+reserved_keyword_19="int"
+reserved_keyword_20="intersect"
+reserved_keyword_21="let"
+reserved_keyword_22="list"
+reserved_keyword_23="maximize"
+reserved_keyword_24="minimize"
+reserved_keyword_25="mod"
+reserved_keyword_26="not"
+reserved_keyword_27="of"
+reserved_keyword_28="op"
+reserved_keyword_29="opt"
+reserved_keyword_30="output"
+reserved_keyword_31="par"
+reserved_keyword_32="predicate"
+reserved_keyword_33="record"
+reserved_keyword_34="satisfy"
+reserved_keyword_35="set"
+reserved_keyword_36="solve"
+reserved_keyword_37="string"
+reserved_keyword_38="subset"
+reserved_keyword_39="superset"
+reserved_keyword_40="symdiff"
+reserved_keyword_41="test"
+reserved_keyword_42="then"
+reserved_keyword_43="true"
+reserved_keyword_44="tuple"
+reserved_keyword_45="type"
+reserved_keyword_46="union"
+reserved_keyword_47="var"
+reserved_keyword_48="where"
+reserved_keyword_49="xor"
\ No newline at end of file
diff --git a/projects/minizinc/minizinc_fuzzer.options b/projects/minizinc/minizinc_fuzzer.options
new file mode 100644
index 0000000..6819d2e
--- /dev/null
+++ b/projects/minizinc/minizinc_fuzzer.options
@@ -0,0 +1,3 @@
+[libfuzzer]
+only_ascii = 1
+detect_leaks = 0
\ No newline at end of file
diff --git a/projects/minizinc/project.yaml b/projects/minizinc/project.yaml
new file mode 100644
index 0000000..bc42b9a
--- /dev/null
+++ b/projects/minizinc/project.yaml
@@ -0,0 +1,8 @@
+homepage: "http://www.minizinc.org/"
+primary_contact: "jip.dekker@monash.edu"
+auto_ccs:
+  - "jip.dekker@monash.edu"
+  - "guido.tack@monash.edu"
+sanitizers:
+  - address
+  - memory
diff --git a/projects/minizip/Dockerfile b/projects/minizip/Dockerfile
index 3d14fba..c9eb382 100644
--- a/projects/minizip/Dockerfile
+++ b/projects/minizip/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER nathan.moinvaziri@gmail.com
 RUN apt-get update && apt-get install -y make cmake pkg-config
 
 RUN git clone -b dev https://github.com/nmoinvaz/minizip
diff --git a/projects/minizip/project.yaml b/projects/minizip/project.yaml
index 453540a..75283a1 100644
--- a/projects/minizip/project.yaml
+++ b/projects/minizip/project.yaml
@@ -1,5 +1,20 @@
+# Copyright 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
 homepage: "https://github.com/nmoinvaz/minizip"
-language: c++
 primary_contact: "nathan.moinvaziri@gmail.com"
 sanitizers:
   - address
@@ -7,5 +22,4 @@
   - undefined
 architectures:
   - x86_64
-  - i386
-main_repo: 'https://github.com/nmoinvaz/minizip'
+  - i386
\ No newline at end of file
diff --git a/projects/monero/Dockerfile b/projects/monero/Dockerfile
deleted file mode 100644
index fe2dbbe..0000000
--- a/projects/monero/Dockerfile
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2020 The Monero Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Multistage docker build, requires docker 17.05
-
-# builder stage
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN set -ex && \
-    apt-get update && \
-    apt-get --no-install-recommends --yes install \
-        ca-certificates \
-        cmake \
-        g++ \
-        make \
-        pkg-config \
-        graphviz \
-        doxygen \
-        git \
-        curl \
-        libtool-bin \
-        autoconf \
-        automake \
-        bzip2 \
-        xsltproc \
-        gperf \
-        unzip \
-        cmake \
-        ccache \
-        libsodium-dev \
-        libreadline-dev \
-        libudev-dev \
-        libprotobuf-dev \
-        protobuf-compiler
-
-WORKDIR monero
-
-ENV CFLAGS="${CFLAGS} -fPIC -pthread"
-ENV CXXFLAGS="${CXXFLAGS} -fPIC -pthread"
-
-## Boost
-ARG BOOST_VERSION=1_70_0
-ARG BOOST_VERSION_DOT=1.70.0
-ARG BOOST_HASH=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
-RUN set -ex \
-    && curl -s -L -o  boost_${BOOST_VERSION}.tar.bz2 https://downloads.getmonero.org/libs/boost_${BOOST_VERSION}.tar.bz2 \
-    && echo "${BOOST_HASH}  boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
-    && tar -xjf boost_${BOOST_VERSION}.tar.bz2 \
-    && cd boost_${BOOST_VERSION} \
-    && sed -i -e 's/use(* m_instance)/if (m_instance) use(* m_instance)/' boost/serialization/singleton.hpp \
-    && ./bootstrap.sh --with-toolset=clang \
-    && ./b2 --build-type=minimal link=static runtime-link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread --with-locale threading=multi threadapi=pthread cflags="$CFLAGS" cxxflags="$CXXFLAGS" stage
-ENV BOOST_ROOT /usr/local/boost_${BOOST_VERSION}
-
-# OpenSSL
-ARG OPENSSL_VERSION=1.1.1g
-ARG OPENSSL_HASH=ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
-RUN set -ex \
-    && curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
-    && echo "${OPENSSL_HASH}  openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
-    && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
-    && cd openssl-${OPENSSL_VERSION} \
-    && ./Configure linux-x86_64 no-shared --static "$CFLAGS" \
-    && make build_generated \
-    && make libcrypto.a \
-    && make install
-ENV OPENSSL_ROOT_DIR=/usr/local/openssl-${OPENSSL_VERSION}
-
-# ZMQ
-ARG ZMQ_VERSION=v4.3.2
-ARG ZMQ_HASH=a84ffa12b2eb3569ced199660bac5ad128bff1f0
-RUN set -ex \
-    && git clone --depth=1 https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
-    && cd libzmq \
-    && test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \
-    && sed -i -e 's/::~generic_mtrie_t /::~generic_mtrie_t<T> /' src/generic_mtrie_impl.hpp \
-    && ./autogen.sh \
-    && ./configure --enable-static --disable-shared --with-libsodium \
-    && make \
-    && make install \
-    && ldconfig
-
-# Libusb
-ARG USB_VERSION=v1.0.22
-ARG USB_HASH=0034b2afdcdb1614e78edaa2a9e22d5936aeae5d
-RUN set -ex \
-    && git clone --depth=1 https://github.com/libusb/libusb.git -b ${USB_VERSION} \
-    && cd libusb \
-    && test `git rev-parse HEAD` = ${USB_HASH} || exit 1 \
-    && ./autogen.sh \
-    && ./configure --disable-shared \
-    && make \
-    && make install
-
-# Hidapi
-ARG HIDAPI_VERSION=hidapi-0.8.0-rc1
-ARG HIDAPI_HASH=40cf516139b5b61e30d9403a48db23d8f915f52c
-RUN set -ex \
-    && git clone --depth=1 https://github.com/signal11/hidapi -b ${HIDAPI_VERSION} \
-    && cd hidapi \
-    && test `git rev-parse HEAD` = ${HIDAPI_HASH} || exit 1 \
-    && ./bootstrap \
-    && ./configure --enable-static --disable-shared \
-    && make \
-    && make install
-
-RUN git clone --depth 1 https://github.com/monero-project/monero.git monero
-COPY build.sh $SRC/
diff --git a/projects/monero/build.sh b/projects/monero/build.sh
deleted file mode 100755
index ff3001b..0000000
--- a/projects/monero/build.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 The Monero Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export BOOST_ROOT=/src/monero/boost_1_70_0
-export OPENSSL_ROOT_DIR=/src/monero/openssl-1.1.1g
-
-cd monero
-sed -i -e 's/include(FindCcache)/# include(FindCcache)/' CMakeLists.txt
-git submodule init
-git submodule update
-mkdir -p build
-cd build
-export CXXFLAGS="$CXXFLAGS -fPIC"
-cmake -D OSSFUZZ=ON -D STATIC=ON -D BUILD_TESTS=ON -D USE_LTO=OFF -D ARCH="default" ..
-
-TESTS="\
-  base58_fuzz_tests \
-  block_fuzz_tests \
-  transaction_fuzz_tests \
-  load-from-binary_fuzz_tests \
-  load-from-json_fuzz_tests \
-  parse-url_fuzz_tests \
-  http-client_fuzz_tests \
-  levin_fuzz_tests \
-  bulletproof_fuzz_tests \
-  tx-extra_fuzz_tests \
-"
-
-# only libfuzzer can run the slow to start ones
-if test "x$FUZZING_ENGINE" == 'xlibfuzzer'
-then
-  TESTS="$TESTS \
-    signature_fuzz_tests \
-    cold-outputs_fuzz_tests \
-    cold-transaction_fuzz_tests \
-  "
-fi
-
-make -C tests/fuzz $TESTS
-
-cd /src/monero/monero/build/tests/fuzz
-for fuzzer in *_fuzz_tests
-do
-  cp "$fuzzer" "$OUT"
-  base=$(echo $fuzzer | sed -e s/_fuzz_tests//)
-  cd "/src/monero/monero/tests/data/fuzz/$base"
-  rm -f "${OUT}/${fuzzer}_seed_corpus.zip"
-  for f in *
-  do
-    h=$(sha1sum "$f" | awk '{print $1}')
-    cp "$f" "$h"
-    zip "${OUT}/${fuzzer}_seed_corpus.zip" "$h"
-    rm -f "$h"
-  done
-  cd -
-done
diff --git a/projects/monero/project.yaml b/projects/monero/project.yaml
deleted file mode 100644
index 6329a7b..0000000
--- a/projects/monero/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://getmonero.org/"
-language: c++
-primary_contact: "binaryfate01@gmail.com"
-auto_ccs:
-  - luigi1111w@gmail.com
-  - ric@ts.org
-  - moneromooo@protonmail.com
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-architectures:
-  - x86_64
-main_repo: 'https://github.com/monero-project/monero.git'
diff --git a/projects/mongoose/Dockerfile b/projects/mongoose/Dockerfile
deleted file mode 100644
index 15f4a4f..0000000
--- a/projects/mongoose/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update 
-RUN git clone https://github.com/cesanta/mongoose
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/mongoose/build.sh b/projects/mongoose/build.sh
deleted file mode 100755
index 20b7be9..0000000
--- a/projects/mongoose/build.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-cd $SRC/mongoose
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE -DMG_ENABLE_LINES -DMG_ENABLE_LOG=0 mongoose.c -I. test/fuzz.c -o $OUT/fuzz
diff --git a/projects/mongoose/project.yaml b/projects/mongoose/project.yaml
deleted file mode 100644
index 94fc077..0000000
--- a/projects/mongoose/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/cesanta/mongoose"
-language: c++
-primary_contact: "info@cesanta.com"
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/cesanta/mongoose'
diff --git a/projects/mp4parse-rust/Dockerfile b/projects/mp4parse-rust/Dockerfile
deleted file mode 100644
index 990fbba..0000000
--- a/projects/mp4parse-rust/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang
-
-RUN git clone --depth 1 --recursive https://github.com/mozilla/mp4parse-rust mp4parse-rust
-WORKDIR mp4parse-rust
-
-COPY build.sh default.options $SRC/
diff --git a/projects/mp4parse-rust/build.sh b/projects/mp4parse-rust/build.sh
deleted file mode 100755
index 8998c93..0000000
--- a/projects/mp4parse-rust/build.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Note: This project creates Rust fuzz targets exclusively
-PROJECT_DIR=$SRC/mp4parse-rust
-cd $PROJECT_DIR/mp4parse_capi/fuzz && cargo fuzz build -O --debug-assertions
-
-# collect avif files
-mkdir $PROJECT_DIR/avif_corpus
-find $PROJECT_DIR/mp4parse -type f -name '*.avif' -exec cp '{}' $PROJECT_DIR/avif_corpus \;
-
-# collect mp4 files
-mkdir $PROJECT_DIR/mp4_corpus
-find $PROJECT_DIR/mp4parse/tests -type f -name '*.mp4' -exec cp '{}' $PROJECT_DIR/mp4_corpus \;
-find $PROJECT_DIR/mp4parse_capi/tests/ -type f -name '*.mp4' -exec cp '{}' $PROJECT_DIR/mp4_corpus \;
-
-FUZZ_TARGET_OUTPUT_DIR=$PROJECT_DIR/mp4parse_capi/fuzz/target/x86_64-unknown-linux-gnu/release
-for f in $SRC/mp4parse-rust/mp4parse_capi/fuzz/fuzz_targets/*.rs
-do
-    FUZZ_TARGET_NAME=$(basename ${f%.*})
-    cp $FUZZ_TARGET_OUTPUT_DIR/$FUZZ_TARGET_NAME $OUT/
-    cp $PROJECT_DIR/mp4parse_capi/fuzz/mp4.dict $OUT/$FUZZ_TARGET_NAME.dict
-    cp $SRC/default.options $OUT/$FUZZ_TARGET_NAME.options
-    zip -jr $OUT/${FUZZ_TARGET_NAME}_seed_corpus.zip $PROJECT_DIR/${FUZZ_TARGET_NAME}_corpus/
-done
diff --git a/projects/mp4parse-rust/default.options b/projects/mp4parse-rust/default.options
deleted file mode 100644
index 84c33f6..0000000
--- a/projects/mp4parse-rust/default.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[asan]
-max_allocation_size_mb=512
diff --git a/projects/mp4parse-rust/project.yaml b/projects/mp4parse-rust/project.yaml
deleted file mode 100644
index eee731e..0000000
--- a/projects/mp4parse-rust/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/mozilla/mp4parse-rust"
-primary_contact: "mgregan@mozilla.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-vendor_ccs:
-- "bvandyk@mozilla.com"
-- "jbauman@mozilla.com"
-- "twsmith@mozilla.com"
-main_repo: 'https://github.com/mozilla/mp4parse-rust'
diff --git a/projects/mpg123/project.yaml b/projects/mpg123/project.yaml
index 951e45a..e6ace86 100644
--- a/projects/mpg123/project.yaml
+++ b/projects/mpg123/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.mpg123.de"
-language: c++
 primary_contact: "maintainer@mpg123.org"
 
 sanitizers:
diff --git a/projects/mruby/Dockerfile b/projects/mruby/Dockerfile
index 36aa167..6183b72 100644
--- a/projects/mruby/Dockerfile
+++ b/projects/mruby/Dockerfile
@@ -16,7 +16,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 RUN apt-get update && apt-get install -y build-essential ruby bison ninja-build \
-    cmake zlib1g-dev libbz2-dev liblzma-dev
+    cmake zlib1g-dev libbz2-dev
 RUN git clone --depth 1 https://github.com/mruby/mruby mruby
 RUN git clone --depth 1 https://github.com/bshastry/mruby_seeds.git mruby_seeds
 RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
diff --git a/projects/mruby/build.sh b/projects/mruby/build.sh
index 999f21a..e251db9 100755
--- a/projects/mruby/build.sh
+++ b/projects/mruby/build.sh
@@ -18,9 +18,9 @@
 # Instrument mruby
 (
 cd $SRC/mruby
-export LD=$CC
+export LD=clang
 export LDFLAGS="$CFLAGS"
-rake -m
+./minirake clean && ./minirake -j$(nproc) all
 
 # build fuzzers
 FUZZ_TARGET=$SRC/mruby/oss-fuzz/mruby_fuzzer.c
@@ -36,18 +36,17 @@
 if [[ $CFLAGS != *sanitize=memory* ]]; then
     PROTO_FUZZ_TARGET=$SRC/mruby/oss-fuzz/mruby_proto_fuzzer.cpp
     PROTO_CONVERTER=$SRC/mruby/oss-fuzz/proto_to_ruby.cpp
-    rm -rf $SRC/mruby/genfiles
-    mkdir $SRC/mruby/genfiles
-    $SRC/LPM/external.protobuf/bin/protoc --proto_path=$SRC/mruby/oss-fuzz ruby.proto --cpp_out=$SRC/mruby/genfiles
-    $CXX -c $CXXFLAGS $SRC/mruby/genfiles/ruby.pb.cc -o $SRC/mruby/genfiles/ruby.pb.o -I $SRC/LPM/external.protobuf/include
-    $CXX -I $SRC/mruby/include -I $SRC/LPM/external.protobuf/include $CXXFLAGS $PROTO_FUZZ_TARGET $SRC/mruby/genfiles/ruby.pb.o $PROTO_CONVERTER \
-      -I $SRC/mruby/genfiles \
-      -I $SRC/libprotobuf-mutator \
-      -I $SRC/mruby/include -lz -lm \
-      $SRC/LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
-      $SRC/LPM/src/libprotobuf-mutator.a \
-      $SRC/LPM/external.protobuf/lib/libprotobuf.a \
-      $SRC/mruby/build/host/lib/libmruby.a \
+    rm -rf genfiles
+    mkdir genfiles
+    LPM/external.protobuf/bin/protoc --proto_path=mruby/oss-fuzz ruby.proto --cpp_out=genfiles
+    $CXX $CXXFLAGS $PROTO_FUZZ_TARGET genfiles/ruby.pb.cc $PROTO_CONVERTER \
+      -I genfiles -I mruby/oss-fuzz  -I libprotobuf-mutator/ -I .  \
+      -I LPM/external.protobuf/include \
+      -I mruby/include -lz -lm \
+      LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
+      LPM/src/libprotobuf-mutator.a \
+      LPM/external.protobuf/lib/libprotobuf.a \
+      mruby/build/host/lib/libmruby.a \
       $LIB_FUZZING_ENGINE \
       -o $OUT/mruby_proto_fuzzer
 
diff --git a/projects/mruby/project.yaml b/projects/mruby/project.yaml
index 3500439..3a8c3d3 100644
--- a/projects/mruby/project.yaml
+++ b/projects/mruby/project.yaml
@@ -1,5 +1,4 @@
 homepage: https://www.mruby.org/
-language: c++
 primary_contact: "yukihiro@gmail.com"
 auto_ccs:
   - "bshas3@gmail.com"
@@ -7,4 +6,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/mruby/mruby'
diff --git a/projects/msgpack-c/Dockerfile b/projects/msgpack-c/Dockerfile
index 87efd76..4dea0b3 100644
--- a/projects/msgpack-c/Dockerfile
+++ b/projects/msgpack-c/Dockerfile
@@ -15,14 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake wget bzip2
-RUN git clone --depth 1 --single-branch --branch cpp_master https://github.com/msgpack/msgpack-c.git msgpack-c
-
-RUN wget https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.bz2 && \
-    tar xf boost_1_70_0.tar.bz2 && \
-    cd boost_1_70_0 && \
-    ./bootstrap.sh --with-toolset=clang --prefix=/usr && \
-    ./b2 -j$(nproc) toolset=clang --with-chrono --with-context --with-filesystem --with-system --with-timer address-model=64 cflags="$CFLAGS" cxxflags="$CXXFLAGS"  link=static variant=release runtime-link=static threading=multi install
-
+MAINTAINER chriswwolfe@gmail.com
+RUN apt-get update && apt-get install -y cmake
+RUN git clone --depth 1 https://github.com/msgpack/msgpack-c.git msgpack-c
 WORKDIR msgpack-c
 COPY build.sh $SRC/
diff --git a/projects/msgpack-c/build.sh b/projects/msgpack-c/build.sh
index 9a065ff..21faacf 100755
--- a/projects/msgpack-c/build.sh
+++ b/projects/msgpack-c/build.sh
@@ -15,6 +15,11 @@
 #
 ################################################################################
 
+cmake -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" \
+      -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+      -DMSGPACK_CXX11=ON .
+make -j$(nproc) all
+
 for f in $SRC/msgpack-c/fuzz/*_fuzzer.cpp; do
     # NOTE(derwolfe): the naming scheme for fuzzers and seed corpora is
     # fuzzer = something_something_fuzzer.cpp
@@ -22,7 +27,7 @@
     fuzzer=$(basename "$f" .cpp)
     $CXX $CXXFLAGS -std=c++11 -Iinclude -I"$SRC/msgpack-c/include" \
          "$f" -o "$OUT/${fuzzer}" \
-         $LIB_FUZZING_ENGINE
+         $LIB_FUZZING_ENGINE "$SRC/msgpack-c/libmsgpackc.a"
 
     if [ -d "$SRC/msgpack-c/fuzz/${fuzzer}_seed_corpus" ]; then
         zip -rj "$OUT/${fuzzer}_seed_corpus.zip" "$SRC/msgpack-c/fuzz/${fuzzer}_seed_corpus/"
diff --git a/projects/msgpack-c/project.yaml b/projects/msgpack-c/project.yaml
index 3b36793..2e30007 100644
--- a/projects/msgpack-c/project.yaml
+++ b/projects/msgpack-c/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://msgpack.org/"
-language: c++
 primary_contact: "redboltz@gmail.com"
 auto_ccs:
   - nobu.k.jp@gmail.com
@@ -8,4 +7,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/msgpack/msgpack-c.git'
diff --git a/projects/mtail/Dockerfile b/projects/mtail/Dockerfile
index 7861cbc..42b94f5 100644
--- a/projects/mtail/Dockerfile
+++ b/projects/mtail/Dockerfile
@@ -15,6 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/google/mtail $GOPATH/src/github.com/google/mtail
-WORKDIR $GOPATH/src/github.com/google/mtail
+MAINTAINER jaq@spacepants.org
+RUN mkdir -p github.com/google
+RUN git clone --depth 1 https://github.com/google/mtail github.com/google/mtail
+WORKDIR github.com/google/mtail
 COPY build.sh $SRC/
diff --git a/projects/mtail/build.sh b/projects/mtail/build.sh
index 2c769ad..58c6cf7 100755
--- a/projects/mtail/build.sh
+++ b/projects/mtail/build.sh
@@ -15,6 +15,12 @@
 #
 ################################################################################
 
-compile_go_fuzzer github.com/google/mtail/internal/vm Fuzz vm-fuzzer
-# Make the dictionary and seed corpus.
-make --debug $OUT/vm-fuzzer.dict $OUT/vm-fuzzer_seed_corpus.zip
+# We've used git checkout, not go get to fetch the source so set up the GOPATH to find our source.
+export GOPATH=$GOPATH:/
+
+# go-fuzz-build doesn't like modules until https://github.com/dvyukov/go-fuzz/issues/195 is fixed
+# fetch and vendor all the dependencies so go-fuzz-build can find them
+make GO111MODULE=off --debug install_deps
+go mod vendor
+
+make GO111MODULE=off --debug $OUT/vm-fuzzer.dict $OUT/vm-fuzzer_seed_corpus.zip $OUT/vm-fuzzer
diff --git a/projects/mtail/project.yaml b/projects/mtail/project.yaml
index fd95d2f..af7d2d4 100644
--- a/projects/mtail/project.yaml
+++ b/projects/mtail/project.yaml
@@ -5,4 +5,3 @@
 sanitizers:
   - address
 language: go
-main_repo: 'https://github.com/google/mtail'
diff --git a/projects/muparser/Dockerfile b/projects/muparser/Dockerfile
deleted file mode 100644
index 2cf1db8..0000000
--- a/projects/muparser/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN apt-get install -y build-essential cmake pkg-config
-RUN git clone --depth 1 https://github.com/beltoforion/muparser.git muparser
-WORKDIR muparser
-COPY build.sh set_eval_fuzzer.cc $SRC/
diff --git a/projects/muparser/build.sh b/projects/muparser/build.sh
deleted file mode 100755
index c42359d..0000000
--- a/projects/muparser/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-CFLAGS="${CFLAGS} -fno-sanitize=integer-divide-by-zero,float-divide-by-zero"
-CXXFLAGS="${CXXFLAGS} -fno-sanitize=integer-divide-by-zero,float-divide-by-zero"
-
-# build project
-cmake . -DBUILD_SHARED_LIBS=OFF  -DENABLE_OPENMP=OFF
-make -j$(nproc)
-
-# install
-make install
-ldconfig
-
-# build fuzzers
-MU_CXXFLAGS=$(pkg-config muparser --cflags)
-MU_LIBS=$(pkg-config muparser --libs)
-
-$CXX -std=c++11 $CXXFLAGS -I. \
-     $MU_CXXFLAGS $MU_LIBS \
-     $SRC/set_eval_fuzzer.cc -o $OUT/set_eval_fuzzer \
-     $LIB_FUZZING_ENGINE libmuparser.a
diff --git a/projects/muparser/project.yaml b/projects/muparser/project.yaml
deleted file mode 100644
index e6be1c1..0000000
--- a/projects/muparser/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://beltoforion.de/article.php?a=muparser"
-language: c++
-primary_contact: "equinox.ib@googlemail.com"
-auto_ccs:
-    - "zhichengcai@google.com"
-sanitizers:
-    - address
-    - undefined
-main_repo: 'https://github.com/beltoforion/muparser.git'
diff --git a/projects/muparser/set_eval_fuzzer.cc b/projects/muparser/set_eval_fuzzer.cc
deleted file mode 100644
index b04b2ff..0000000
--- a/projects/muparser/set_eval_fuzzer.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdint.h>
-#include <stdio.h>
-#include <iostream>
-#include <string>
-
-#include "muParser.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  std::string line_string((char *)data, size);
-  try {
-    mu::Parser parser;
-    parser.SetExpr(line_string);
-    parser.Eval();
-  } catch (mu::Parser::exception_type &e) {
-     // Skip logging errors to avoid log spam.
-     // std::cout << e.GetMsg() << std::endl;
-  }
-  return 0;
-}
diff --git a/projects/mupdf/Dockerfile b/projects/mupdf/Dockerfile
index 160ce0e..0b0b760 100644
--- a/projects/mupdf/Dockerfile
+++ b/projects/mupdf/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan@titanous.com
 RUN apt-get update && apt-get install -y make libtool pkg-config
 RUN git clone --recursive --depth 1 git://git.ghostscript.com/mupdf.git mupdf
 RUN git clone --depth 1 https://github.com/mozilla/pdf.js pdf.js && \
diff --git a/projects/mupdf/pdf_fuzzer.cc b/projects/mupdf/pdf_fuzzer.cc
index 3e3f1fb..fd8ad7f 100644
--- a/projects/mupdf/pdf_fuzzer.cc
+++ b/projects/mupdf/pdf_fuzzer.cc
@@ -23,115 +23,96 @@
 
 #include <mupdf/fitz.h>
 
-#define ALIGNMENT ((size_t) 16)
-#define KBYTE ((size_t) 1024)
-#define MBYTE (1024 * KBYTE)
-#define GBYTE (1024 * MBYTE)
-#define MAX_ALLOCATION (1 * GBYTE)
+#define ALIGNMENT 16
+#define MAX_ALLOCATION (1024 * 1024 * 1024)
 
-static size_t used;
+static uint64_t total = 0;
 
-static void *fz_limit_reached_ossfuzz(size_t oldsize, size_t size)
+static void *
+fz_malloc_ossfuzz(void *opaque, size_t size)
 {
-  if (oldsize == 0)
-    fprintf(stderr, "limit: %zu Mbyte used: %zu Mbyte allocation: %zu: limit reached\n", MAX_ALLOCATION / MBYTE, used / MBYTE, size);
-  else
-    fprintf(stderr, "limit: %zu Mbyte used: %zu Mbyte reallocation: %zu -> %zu: limit reached\n", MAX_ALLOCATION / MBYTE, used / MBYTE, oldsize, size);
-  fflush(0);
-  return NULL;
+	char *ptr = NULL;
+
+	if (size == 0)
+		return NULL;
+	if (size > SIZE_MAX - ALIGNMENT)
+		return NULL;
+
+	if (size > MAX_ALLOCATION - ALIGNMENT - total)
+		return NULL;
+
+	ptr = (char *) malloc(size + ALIGNMENT);
+	if (ptr == NULL)
+		return NULL;
+
+	memcpy(ptr, &size, sizeof(size));
+	total += size + ALIGNMENT;
+
+	return ptr + ALIGNMENT;
 }
 
-static void *fz_malloc_ossfuzz(void *opaque, size_t size)
+static void
+fz_free_ossfuzz(void *opaque, void *ptr)
 {
-  char *ptr = NULL;
+	size_t size;
 
-  if (size == 0)
-    return NULL;
-  if (size > SIZE_MAX - ALIGNMENT)
-    return NULL;
-  if (size + ALIGNMENT > MAX_ALLOCATION - used)
-    return fz_limit_reached_ossfuzz(0, size + ALIGNMENT);
+	if (ptr == NULL)
+		return;
 
-  ptr = (char *) malloc(size + ALIGNMENT);
-  if (ptr == NULL)
-    return NULL;
+	ptr = ((char *) ptr) - ALIGNMENT;
 
-  memcpy(ptr, &size, sizeof(size));
-  used += size + ALIGNMENT;
-
-  return ptr + ALIGNMENT;
+	memcpy(&size, ptr, sizeof(size));
+	total -= size - ALIGNMENT;
+	free(ptr);
 }
 
-static void fz_free_ossfuzz(void *opaque, void *ptr)
+static void *
+fz_realloc_ossfuzz(void *opaque, void *old, size_t size)
 {
-  size_t size;
+	size_t oldsize;
+	char *ptr;
 
-  if (ptr == NULL)
-    return;
-  if (ptr < (void *) ALIGNMENT)
-    return;
+	if (old == NULL)
+		return fz_malloc_ossfuzz(opaque, size);
+	if (size == 0)
+	{
+		fz_free_ossfuzz(opaque, old);
+		return NULL;
+	}
+	if (size > SIZE_MAX - ALIGNMENT)
+		return NULL;
 
-  ptr = (char *) ptr - ALIGNMENT;
-  memcpy(&size, ptr, sizeof(size));
+	old = ((char *) old) - ALIGNMENT;
+	memcpy(&oldsize, old, sizeof(oldsize));
 
-  used -= size + ALIGNMENT;
-  free(ptr);
-}
+	if (size > MAX_ALLOCATION - total + oldsize)
+		return NULL;
 
-static void *fz_realloc_ossfuzz(void *opaque, void *old, size_t size)
-{
-  size_t oldsize;
-  char *ptr;
+	ptr = (char *) realloc(old, size + ALIGNMENT);
+	if (ptr == NULL)
+		return NULL;
 
-  if (old == NULL)
-    return fz_malloc_ossfuzz(opaque, size);
-  if (old < (void *) ALIGNMENT)
-    return NULL;
+	total -= oldsize + ALIGNMENT;
+	memcpy(ptr, &size, sizeof(size));
+	total += size + ALIGNMENT;
 
-  if (size == 0) {
-    fz_free_ossfuzz(opaque, old);
-    return NULL;
-  }
-  if (size > SIZE_MAX - ALIGNMENT)
-    return NULL;
-
-  old = (char *) old - ALIGNMENT;
-  memcpy(&oldsize, old, sizeof(oldsize));
-
-  if (size + ALIGNMENT > MAX_ALLOCATION - used + oldsize + ALIGNMENT)
-    return fz_limit_reached_ossfuzz(oldsize + ALIGNMENT, size + ALIGNMENT);
-
-  ptr = (char *) realloc(old, size + ALIGNMENT);
-  if (ptr == NULL)
-    return NULL;
-
-  used -= oldsize + ALIGNMENT;
-  memcpy(ptr, &size, sizeof(size));
-  used += size + ALIGNMENT;
-
-  return ptr + ALIGNMENT;
+	return ptr + ALIGNMENT;
 }
 
 static fz_alloc_context fz_alloc_ossfuzz =
 {
-  NULL,
-  fz_malloc_ossfuzz,
-  fz_realloc_ossfuzz,
-  fz_free_ossfuzz
+	NULL,
+	fz_malloc_ossfuzz,
+	fz_realloc_ossfuzz,
+	fz_free_ossfuzz
 };
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  fz_context *ctx;
-  fz_stream *stream;
-  fz_document *doc;
-  fz_pixmap *pix;
+  fz_context *ctx = fz_new_context(&fz_alloc_ossfuzz, nullptr, FZ_STORE_DEFAULT);
 
-  used = 0;
-
-  ctx = fz_new_context(&fz_alloc_ossfuzz, nullptr, FZ_STORE_DEFAULT);
-  stream = NULL;
-  doc = NULL;
-  pix = NULL;
+  fz_stream *stream = NULL;
+  fz_document *doc = NULL;
+  fz_pixmap *pix = NULL;
 
   fz_var(stream);
   fz_var(doc);
diff --git a/projects/mupdf/project.yaml b/projects/mupdf/project.yaml
index 49b7105..a68aec1 100644
--- a/projects/mupdf/project.yaml
+++ b/projects/mupdf/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.mupdf.com"
-language: c++
 primary_contact: tor.andersson@artifex.com
 fuzzing_engines:
   - libfuzzer
@@ -13,4 +12,3 @@
 auto_ccs:
   - jonathan@titanous.com
   - sebastian.rasmussen@artifex.com
-  - julians.artifex@gmail.com
diff --git a/projects/myanmar-tools/Dockerfile b/projects/myanmar-tools/Dockerfile
index 62ed215..90f94c6 100644
--- a/projects/myanmar-tools/Dockerfile
+++ b/projects/myanmar-tools/Dockerfile
@@ -13,11 +13,12 @@
 # limitations under the License.
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER sffc@google.com
 
 RUN apt-get update && apt-get -y install \
     build-essential \
     cmake \
     libunwind-dev
 RUN git clone https://github.com/google/myanmar-tools.git
-WORKDIR $SRC/myanmar-tools
+WORKDIR $SRC/myanmar-tools/clients/cpp/
 COPY build.sh $SRC/
diff --git a/projects/myanmar-tools/project.yaml b/projects/myanmar-tools/project.yaml
index d2c7f32..293ce9c 100644
--- a/projects/myanmar-tools/project.yaml
+++ b/projects/myanmar-tools/project.yaml
@@ -1,5 +1,18 @@
+# Copyright 2019 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 homepage: "https://github.com/googlei18n/myanmar-tools/"
-language: c++
 primary_contact: "sffc@google.com"
 auto_ccs:
   - "ccornelius@google.com"
@@ -7,4 +20,3 @@
   - address
   - memory
 coverage_extra_args: -ignore-filename-regex=.*/\.hunter/.*
-main_repo: 'https://github.com/google/myanmar-tools.git'
diff --git a/projects/mysql-server/Dockerfile b/projects/mysql-server/Dockerfile
index fddad91..d2ee3fb 100644
--- a/projects/mysql-server/Dockerfile
+++ b/projects/mysql-server/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER secalert_us@oracle.com
 RUN apt-get update
 RUN apt-get install -y build-essential libssl-dev libncurses5-dev libncursesw5-dev make cmake perl bison pkg-config
 RUN git clone --depth 1 https://github.com/mysql/mysql-server
diff --git a/projects/mysql-server/build.sh b/projects/mysql-server/build.sh
index 6ea7b27..9f9afe6 100644
--- a/projects/mysql-server/build.sh
+++ b/projects/mysql-server/build.sh
@@ -26,7 +26,7 @@
     cmake .. -Dprotobuf_BUILD_SHARED_LIBS=OFF -DDOWNLOAD_BOOST=1 -DWITH_BOOST=. -DWITH_SSL=system -DFUZZING=1 -DCMAKE_INSTALL_PREFIX=$OUT/mysql
 fi
 make install
-mv $OUT/mysql/bin/fuzz* $OUT/
+cp $OUT/mysql/bin/fuzz* $OUT/
 cp ../fuzz/fuzz*.options $OUT/
 cp ../fuzz/fuzz*.dict $OUT/
 cp ../fuzz/init*.sql $OUT/
diff --git a/projects/mysql-server/fix.diff b/projects/mysql-server/fix.diff
index cec23c2..7e3e171 100644
--- a/projects/mysql-server/fix.diff
+++ b/projects/mysql-server/fix.diff
@@ -1,16 +1,16 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3667900243c..337344e124d 100644
+index ce1d1bb05b5..d1d0b04f202 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -597,6 +597,7 @@ IF(WITH_JEMALLOC AND (WITH_TCMALLOC OR WITH_TCMALLOC_DEBUG))
-   MESSAGE(FATAL_ERROR "Specify only *one* of WITH_TCMALLOC and WITH_JEMALLOC")
+@@ -528,6 +528,7 @@ IF(WITH_JEMALLOC)
+   STRING_APPEND(CMAKE_CXX_FLAGS " -fno-builtin-realloc -fno-builtin-free")
  ENDIF()
  
 +OPTION(FUZZING "Fuzzing" OFF)
  OPTION(ENABLED_PROFILING "Enable profiling" ON)
  OPTION(WITHOUT_SERVER OFF)
- 
-@@ -1587,6 +1588,10 @@ IF(NOT WITHOUT_SERVER AND WITH_UNIT_TESTS)
+ IF(UNIX)
+@@ -1348,6 +1349,10 @@ IF(NOT WITHOUT_SERVER AND WITH_UNIT_TESTS)
    TARGET_LINK_LIBRARIES(server_unittest_library ${ICU_LIBRARIES})
  ENDIF()
  
@@ -22,10 +22,10 @@
  # It is referenced by some of the directories below, so we insert it here.
  ADD_SUBDIRECTORY(scripts)
 diff --git a/include/mysql.h b/include/mysql.h
-index b805bffdf88..23d2311299e 100644
+index 1f499e9d9e5..a85c181ae78 100644
 --- a/include/mysql.h
 +++ b/include/mysql.h
-@@ -262,7 +262,8 @@ enum mysql_protocol_type {
+@@ -261,7 +261,8 @@ enum mysql_protocol_type {
    MYSQL_PROTOCOL_TCP,
    MYSQL_PROTOCOL_SOCKET,
    MYSQL_PROTOCOL_PIPE,
@@ -35,22 +35,8 @@
  };
  
  enum mysql_ssl_mode {
-diff --git a/include/mysql.h.pp b/include/mysql.h.pp
-index ce785802ad9..4f048082335 100644
---- a/include/mysql.h.pp
-+++ b/include/mysql.h.pp
-@@ -485,7 +485,8 @@ enum mysql_protocol_type {
-   MYSQL_PROTOCOL_TCP,
-   MYSQL_PROTOCOL_SOCKET,
-   MYSQL_PROTOCOL_PIPE,
--  MYSQL_PROTOCOL_MEMORY
-+  MYSQL_PROTOCOL_MEMORY,
-+  MYSQL_PROTOCOL_FUZZ
- };
- enum mysql_ssl_mode {
-   SSL_MODE_DISABLED = 1,
 diff --git a/include/violite.h b/include/violite.h
-index c04e82505a7..2498ba0053c 100644
+index 76f2ed2017a..56900e11349 100644
 --- a/include/violite.h
 +++ b/include/violite.h
 @@ -108,12 +108,14 @@ enum enum_vio_type : int {
@@ -69,9 +55,9 @@
  };
  
  /**
-@@ -444,4 +446,20 @@ struct Vio {
- 
- #define SSL_handle SSL *
+@@ -450,4 +452,20 @@ struct Vio {
+ #define SSL_handle void *
+ #endif
  
 +
 +//Vio fuzzing
@@ -91,40 +77,23 @@
 +
  #endif /* vio_violite_h_ */
 diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
-index 4956a0dc2d8..bab0aa3b504 100644
+index 0979a2b7b8c..0c896297a9f 100644
 --- a/libmysql/CMakeLists.txt
 +++ b/libmysql/CMakeLists.txt
-@@ -353,11 +353,11 @@ IF(UNIX)
- 
+@@ -324,7 +324,7 @@ IF(UNIX)
    ADD_INSTALL_RPATH_FOR_OPENSSL(libmysql)
  
--  IF(LINK_FLAG_Z_DEFS)
-+  IF(LINK_FLAG_Z_DEFS AND NOT FUZZING)
-     MY_TARGET_LINK_OPTIONS(libmysql "LINKER:${LINK_FLAG_Z_DEFS}")
-   ENDIF()
- 
--  IF(LINUX)
-+  IF(LINUX AND NOT FUZZING)
-     MY_TARGET_LINK_OPTIONS(libmysql
-       "LINKER:--version-script=${CMAKE_CURRENT_BINARY_DIR}/libmysql.ver")
-   ENDIF() 
-diff --git a/mysys/mf_tempfile.cc b/mysys/mf_tempfile.cc
-index f4f5dffba9a..26ab2ce0917 100644
---- a/mysys/mf_tempfile.cc
-+++ b/mysys/mf_tempfile.cc
-@@ -320,6 +320,7 @@ File create_temp_file(char *to, const char *dir, const char *prefix,
-       set_my_errno(ENAMETOOLONG);
-       return file;
-     }
-+    sprintf(prefix_buff, "%sXXXXXX", prefix ? prefix : "tmp.");
-     my_stpcpy(convert_dirname(to, dir, NullS), prefix_buff);
-     file = mkstemp(to);
-     file_info::RegisterFilename(file, to, file_info::OpenType::FILE_BY_MKSTEMP);
+   GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
+-  IF(LINK_FLAG_NO_UNDEFINED)
++  IF(LINK_FLAG_NO_UNDEFINED AND NOT FUZZING)
+     STRING_APPEND(libmysql_link_flags
+       " ${LINK_FLAG_NO_UNDEFINED}")
+     STRING_APPEND(libmysql_link_flags
 diff --git a/mysys/my_rnd.cc b/mysys/my_rnd.cc
-index 8253e3967d4..034c71de600 100644
+index fa96e35eb02..e03ee47c220 100644
 --- a/mysys/my_rnd.cc
 +++ b/mysys/my_rnd.cc
-@@ -48,6 +48,9 @@
+@@ -51,6 +51,9 @@
  */
  
  double my_rnd(struct rand_struct *rand_st) {
@@ -134,7 +103,7 @@
    rand_st->seed1 = (rand_st->seed1 * 3 + rand_st->seed2) % rand_st->max_value;
    rand_st->seed2 = (rand_st->seed1 + rand_st->seed2 + 33) % rand_st->max_value;
    return (((double)rand_st->seed1) / rand_st->max_value_dbl);
-@@ -64,6 +67,12 @@ Fill a buffer with random bytes using the SSL library routines
+@@ -67,6 +70,12 @@ Fill a buffer with random bytes using the SSL library routines
  */
  int my_rand_buffer(unsigned char *buffer, size_t buffer_size) {
    int rc;
@@ -147,7 +116,7 @@
    rc = RAND_bytes(buffer, (int)buffer_size);
  
    if (!rc) {
-@@ -85,6 +94,9 @@ int my_rand_buffer(unsigned char *buffer, size_t buffer_size) {
+@@ -88,6 +97,9 @@ int my_rand_buffer(unsigned char *buffer, size_t buffer_size) {
  double my_rnd_ssl(bool *failed) {
    unsigned int res;
  
@@ -158,10 +127,10 @@
      *failed = true;
      return 0;
 diff --git a/sql-common/client.cc b/sql-common/client.cc
-index 61404be555b..721802cb60c 100644
+index fd36e9950cf..c8cae8c3cbf 100644
 --- a/sql-common/client.cc
 +++ b/sql-common/client.cc
-@@ -5774,6 +5774,12 @@ static mysql_state_machine_status csm_begin_connect(mysql_async_connect *ctx) {
+@@ -5852,6 +5852,12 @@ static mysql_state_machine_status csm_begin_connect(mysql_async_connect *ctx) {
      }
    }
  #endif /* _WIN32 */
@@ -175,10 +144,10 @@
    if (!net->vio &&
        (!mysql->options.protocol ||
 diff --git a/sql/mysqld.cc b/sql/mysqld.cc
-index 519926135ed..db75dc7f5e5 100644
+index c30315d4702..4413d95915d 100644
 --- a/sql/mysqld.cc
 +++ b/sql/mysqld.cc
-@@ -6862,7 +6862,9 @@ int mysqld_main(int argc, char **argv)
+@@ -6395,7 +6395,9 @@ int mysqld_main(int argc, char **argv)
      unireg_abort(MYSQLD_ABORT_EXIT);  // Will do exit
    }
  
@@ -188,7 +157,7 @@
  
    size_t guardize = 0;
  #ifndef _WIN32
-@@ -7347,8 +7349,10 @@ int mysqld_main(int argc, char **argv)
+@@ -6879,8 +6881,10 @@ int mysqld_main(int argc, char **argv)
      unireg_abort(MYSQLD_ABORT_EXIT);
  
  #ifndef _WIN32
@@ -199,7 +168,7 @@
  #endif
  
    /* set all persistent options */
-@@ -7393,8 +7397,9 @@ int mysqld_main(int argc, char **argv)
+@@ -7022,8 +7026,9 @@ int mysqld_main(int argc, char **argv)
    }
  
    start_handle_manager();
@@ -210,18 +179,18 @@
  
    LogEvent()
        .type(LOG_TYPE_ERROR)
-@@ -7441,6 +7446,10 @@ int mysqld_main(int argc, char **argv)
+@@ -7070,6 +7075,10 @@ int mysqld_main(int argc, char **argv)
  
-   (void)RUN_HOOK(server_state, before_handle_connection, (nullptr));
+   (void)RUN_HOOK(server_state, before_handle_connection, (NULL));
  
 +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 +  return 0;
 +#endif
 +
  #if defined(_WIN32)
-   if (mysqld_socket_acceptor != nullptr)
-     mysqld_socket_acceptor->check_and_spawn_admin_connection_handler_thread();
-@@ -10281,6 +10290,9 @@ static int get_options(int *argc_ptr, char ***argv_ptr) {
+   setup_conn_event_handler_threads();
+ #else
+@@ -9895,6 +9904,9 @@ static int get_options(int *argc_ptr, char ***argv_ptr) {
  
    if (opt_short_log_format) opt_specialflag |= SPECIAL_SHORT_LOG_FORMAT;
  
@@ -232,10 +201,10 @@
      LogErr(ERROR_LEVEL, ER_CONNECTION_HANDLING_OOM);
      return 1;
 diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc
-index fba0684f322..8352dacbc03 100644
+index 983603eb58c..d577c6fcc05 100644
 --- a/storage/innobase/buf/buf0buf.cc
 +++ b/storage/innobase/buf/buf0buf.cc
-@@ -1487,18 +1487,14 @@ dberr_t buf_pool_init(ulint total_size, ulint n_instances) {
+@@ -1484,18 +1484,14 @@ dberr_t buf_pool_init(ulint total_size, ulint n_instances) {
        n = n_instances;
      }
  
@@ -269,37 +238,38 @@
  
  IF(WIN32)
 diff --git a/vio/vio.cc b/vio/vio.cc
-index 38e3d90f20e..abbc9a52478 100644
+index f2007bbc928..3b2ca196ec5 100644
 --- a/vio/vio.cc
 +++ b/vio/vio.cc
-@@ -284,6 +284,26 @@ static bool vio_init(Vio *vio, enum enum_vio_type type, my_socket sd,
-       vio->is_blocking_flag = true;
-       break;
- 
-+    case VIO_TYPE_FUZZ:
-+      vio->viodelete = vio_delete;
-+      vio->vioerrno = vio_errno;
-+      vio->read = vio_read_buff_fuzz;
-+      vio->write = vio_write_buff_fuzz;
-+      vio->fastsend = vio_fastsend_fuzz;
-+      vio->viokeepalive = vio_keepalive_fuzz;
-+      vio->should_retry = vio_should_retry_fuzz;
-+      vio->was_timeout = vio_was_timeout_fuzz;
-+      vio->vioshutdown = vio_shutdown_fuzz;
-+      vio->peer_addr = vio_peer_addr;
-+      vio->timeout = vio_socket_timeout_fuzz;
-+      vio->io_wait = vio_io_wait_fuzz;
-+      vio->is_connected = vio_is_connected_fuzz;
-+      vio->has_data = vio->read_buffer ? vio_buff_has_data : has_no_data;
-+      vio->is_blocking = vio_is_blocking;
-+      vio->set_blocking = vio_set_blocking;
-+      vio->set_blocking_flag = vio_set_blocking_flag;
-+      vio->is_blocking_flag = false;
-+
-     default:
-       vio->viodelete = vio_delete;
-       vio->vioerrno = vio_errno;
-@@ -568,7 +588,8 @@ static const vio_string vio_type_names[] = {{"", 0},
+@@ -301,6 +301,27 @@ static bool vio_init(Vio *vio, enum enum_vio_type type, my_socket sd,
+     return false;
+   }
+ #endif /* HAVE_OPENSSL */
++  if (type == VIO_TYPE_FUZZ) {
++    vio->viodelete = vio_delete;
++    vio->vioerrno = vio_errno;
++    vio->read = vio_read_buff_fuzz;
++    vio->write = vio_write_buff_fuzz;
++    vio->fastsend = vio_fastsend_fuzz;
++    vio->viokeepalive = vio_keepalive_fuzz;
++    vio->should_retry = vio_should_retry_fuzz;
++    vio->was_timeout = vio_was_timeout_fuzz;
++    vio->vioshutdown = vio_shutdown_fuzz;
++    vio->peer_addr = vio_peer_addr;
++    vio->timeout = vio_socket_timeout_fuzz;
++    vio->io_wait = vio_io_wait_fuzz;
++    vio->is_connected = vio_is_connected_fuzz;
++    vio->has_data = vio->read_buffer ? vio_buff_has_data : has_no_data;
++    vio->is_blocking = vio_is_blocking;
++    vio->set_blocking = vio_set_blocking;
++    vio->set_blocking_flag = vio_set_blocking_flag;
++    vio->is_blocking_flag = false;
++    return false;
++  }
+   vio->viodelete = vio_delete;
+   vio->vioerrno = vio_errno;
+   vio->read = vio->read_buffer ? vio_read_buff : vio_read;
+@@ -576,7 +597,8 @@ static const vio_string vio_type_names[] = {{"", 0},
                                              {STRING_WITH_LEN("SSL/TLS")},
                                              {STRING_WITH_LEN("Shared Memory")},
                                              {STRING_WITH_LEN("Internal")},
diff --git a/projects/mysql-server/project.yaml b/projects/mysql-server/project.yaml
index 68f04d2..7c38e2d 100644
--- a/projects/mysql-server/project.yaml
+++ b/projects/mysql-server/project.yaml
@@ -1,16 +1,14 @@
 homepage: "https://www.mysql.com"
-language: c++
 primary_contact: "secalert_us@oracle.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-  - "christopher.alves@telecomnancy.net"
-  - "zouhair.janati-idrissi@telecomnancy.net"
-  - "julien.zhan@telecomnancy.net"
+auto_ccs :
+- "p.antoine@catenacyber.fr"
+- "christopher.alves@telecomnancy.net"
+- "zouhair.janati-idrissi@telecomnancy.net"
+- "julien.zhan@telecomnancy.net"
 
 fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
+- libfuzzer
 sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/mysql/mysql-server'
+- address
+  # - memory
+- undefined
diff --git a/projects/mysql-server/targets/CMakeLists.txt b/projects/mysql-server/targets/CMakeLists.txt
index 4cf3671..507ba36 100644
--- a/projects/mysql-server/targets/CMakeLists.txt
+++ b/projects/mysql-server/targets/CMakeLists.txt
@@ -6,10 +6,14 @@
   TARGET_LINK_LIBRARIES(fuzz_stmt_fetch mysqlclient)
 
   MYSQL_ADD_EXECUTABLE(fuzz_mysqld fuzz_mysqld.cc util_fuzz.cc onefile.cc)
-  TARGET_LINK_LIBRARIES(fuzz_mysqld sql_main sql_gis binlog rpl master slave sql_dd mysys minchassis binlogevents_static ${ICU_LIBRARIES})
+  TARGET_LINK_LIBRARIES(fuzz_mysqld sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
+
+  MYSQL_ADD_EXECUTABLE(fuzz_docommand fuzz_docommand.cc util_fuzz.cc onefile.cc)
+  TARGET_LINK_LIBRARIES(fuzz_docommand sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
+
 
   MYSQL_ADD_EXECUTABLE(fuzz_initfile fuzz_initfile.cc util_fuzz.cc onefile.cc)
-  TARGET_LINK_LIBRARIES(fuzz_initfile sql_main sql_gis binlog rpl master slave sql_dd mysys minchassis binlogevents_static ${ICU_LIBRARIES})
+  TARGET_LINK_LIBRARIES(fuzz_initfile sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
 else()
   MYSQL_ADD_EXECUTABLE(fuzz_real_query fuzz_real_query.cc)
   TARGET_LINK_LIBRARIES(fuzz_real_query mysqlclient)
@@ -20,10 +24,14 @@
   TARGET_LINK_LIBRARIES(fuzz_stmt_fetch $ENV{LIB_FUZZING_ENGINE})
 
   MYSQL_ADD_EXECUTABLE(fuzz_mysqld fuzz_mysqld.cc util_fuzz.cc)
-  TARGET_LINK_LIBRARIES(fuzz_mysqld sql_main sql_gis binlog rpl master slave sql_dd mysys minchassis binlogevents_static ${ICU_LIBRARIES})
+  TARGET_LINK_LIBRARIES(fuzz_mysqld sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
   TARGET_LINK_LIBRARIES(fuzz_mysqld $ENV{LIB_FUZZING_ENGINE})
 
+  MYSQL_ADD_EXECUTABLE(fuzz_docommand fuzz_docommand.cc util_fuzz.cc)
+  TARGET_LINK_LIBRARIES(fuzz_docommand sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
+  TARGET_LINK_LIBRARIES(fuzz_docommand $ENV{LIB_FUZZING_ENGINE})
+
   MYSQL_ADD_EXECUTABLE(fuzz_initfile fuzz_initfile.cc util_fuzz.cc)
-  TARGET_LINK_LIBRARIES(fuzz_initfile sql_main sql_gis binlog rpl master slave sql_dd mysys minchassis binlogevents_static ${ICU_LIBRARIES})
+  TARGET_LINK_LIBRARIES(fuzz_initfile sql_main sql_gis binlog rpl master slave sql_dd sql_gis mysys binlogevents_static ${ICU_LIBRARIES})
   TARGET_LINK_LIBRARIES(fuzz_initfile $ENV{LIB_FUZZING_ENGINE})
 endif()
diff --git a/projects/mysql-server/targets/fuzz_docommand.cc b/projects/mysql-server/targets/fuzz_docommand.cc
index f77ec4f..238618b 100644
--- a/projects/mysql-server/targets/fuzz_docommand.cc
+++ b/projects/mysql-server/targets/fuzz_docommand.cc
@@ -1,18 +1,3 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
 //#include <stdint.h>
 //#include <stdlib.h>
 //#include <stdio.h>
@@ -55,7 +40,6 @@
 }
 
 
-// FIXME: Fix this buffer with succesful authenticated connection for mysql 8.21.
 const uint8_t startConn[] =
 "\xa6\x00\x00\x01\x85\xa6\xff\x01\x00\x00\x00\x01\x2d\x00\x00\x00" \
 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
diff --git a/projects/nanopb/Dockerfile b/projects/nanopb/Dockerfile
index 25637f7..5ddb2ff 100644
--- a/projects/nanopb/Dockerfile
+++ b/projects/nanopb/Dockerfile
@@ -15,10 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y python3-pip git wget
-RUN python3 -m pip install --upgrade pip
-RUN pip3 install protobuf grpcio-tools scons
-RUN update-alternatives --install /usr/bin/python python $(which python3) 100
+MAINTAINER jpa@npb.mail.kapsi.fi
+RUN apt-get update && apt-get install -y python-pip git scons
+RUN pip install protobuf grpcio-tools
 RUN git clone --depth 1 https://github.com/nanopb/nanopb $SRC/nanopb
 COPY build.sh $SRC/
 
diff --git a/projects/nanopb/build.sh b/projects/nanopb/build.sh
index 4a45cf0..f9fc81c 100755
--- a/projects/nanopb/build.sh
+++ b/projects/nanopb/build.sh
@@ -15,6 +15,32 @@
 #
 ################################################################################
 
-# Build script is integrated to nanopb repository.
-source $SRC/nanopb/tests/fuzztest/ossfuzz.sh
+cd $SRC/nanopb/tests
+
+# Build seed corpus.
+# Generating it here ensures it will contain all of the fields in the AllTypes
+# test case. The generators are built without fuzzing instrumentation.
+rm -rf build
+scons build/alltypes/encode_alltypes build/fuzztest/generate_message
+mkdir fuzztest_seed_corpus
+build/alltypes/encode_alltypes 0 > fuzztest_seed_corpus/alltypes0
+build/alltypes/encode_alltypes 1 > fuzztest_seed_corpus/alltypes1
+build/alltypes/encode_alltypes 2 > fuzztest_seed_corpus/alltypes2
+build/fuzztest/generate_message $(date +%s) > fuzztest_seed_corpus/rndmsg 2>/dev/null
+for f in fuzztest_seed_corpus/*; do
+    mv $f fuzztest_seed_corpus/$(sha1sum $f | cut -f 1 -d ' ')
+done
+zip -r "$OUT/fuzztest_seed_corpus.zip" fuzztest_seed_corpus
+
+# Build the fuzz testing stub with instrumentation
+rm -rf build
+scons CC="$CC" CXX="$CXX" LINK="$CXX" \
+      CCFLAGS="-Wall -Wextra -g -DLLVMFUZZER $CFLAGS" \
+      CXXFLAGS="-Wall -Wextra -g -DLLVMFUZZER $CXXFLAGS" \
+      NODEFARGS="1" \
+      LINKFLAGS="-std=c++11 $CXXFLAGS" \
+      LINKLIBS="$LIB_FUZZING_ENGINE" build/fuzztest/fuzztest
+
+cp build/fuzztest/fuzztest "$OUT/fuzztest"
+
 
diff --git a/projects/nanopb/project.yaml b/projects/nanopb/project.yaml
index 95366ed..53aab2e 100644
--- a/projects/nanopb/project.yaml
+++ b/projects/nanopb/project.yaml
@@ -1,14 +1,7 @@
 homepage: "https://jpa.kapsi.fi/nanopb/"
-language: c++
 primary_contact: "jpa@npb.mail.kapsi.fi"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://github.com/nanopb/nanopb'
+  - undefined
+
diff --git a/projects/nats/Dockerfile b/projects/nats/Dockerfile
deleted file mode 100644
index a9dbcf4..0000000
--- a/projects/nats/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/nats-io/nats-server
-COPY build.sh $SRC/
-WORKDIR $SRC/nats-server
diff --git a/projects/nats/build.sh b/projects/nats/build.sh
deleted file mode 100755
index 2235a6e..0000000
--- a/projects/nats/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-
-compile_go_fuzzer ./conf Fuzz fuzz_conf
-compile_go_fuzzer ./server FuzzClient fuzz_client
-
diff --git a/projects/nats/project.yaml b/projects/nats/project.yaml
deleted file mode 100644
index 529e144..0000000
--- a/projects/nats/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/nats-io/nats-server"
-primary_contact: "security@nats.io"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "mh@synadia.com"
-  - "wally@synadia.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/nats-io/nats-server'
diff --git a/projects/ndpi/Dockerfile b/projects/ndpi/Dockerfile
index fafb081..7004308 100644
--- a/projects/ndpi/Dockerfile
+++ b/projects/ndpi/Dockerfile
@@ -15,8 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake autogen pkg-config libtool flex bison cmake
-RUN git clone --depth 1 https://github.com/json-c/json-c.git json-c
+MAINTAINER deri@ntop.org
+RUN apt-get update && apt-get install -y make autoconf automake autogen pkg-config libtool flex bison
 RUN git clone --depth 1 https://github.com/ntop/nDPI.git ndpi
 ADD https://www.tcpdump.org/release/libpcap-1.9.1.tar.gz libpcap-1.9.1.tar.gz
 COPY build.sh $SRC/
diff --git a/projects/ndpi/build.sh b/projects/ndpi/build.sh
index cf844d1..53ef132 100755
--- a/projects/ndpi/build.sh
+++ b/projects/ndpi/build.sh
@@ -23,16 +23,9 @@
 make install
 cd ..
 
-cd json-c
-mkdir build
-cd build
-cmake -DBUILD_SHARED_LIBS=OFF ..
-make install
-cd ../..
-
 # build project
 cd ndpi
 sh autogen.sh
 ./configure --enable-fuzztargets
 make
-ls fuzz/fuzz* | grep -v "\." | grep -v "with_main" | while read i; do cp $i $OUT/; done
+ls fuzz/fuzz* | grep -v "\." | while read i; do cp $i $OUT/; done
diff --git a/projects/ndpi/project.yaml b/projects/ndpi/project.yaml
index 3f917fa..21c6d4f 100644
--- a/projects/ndpi/project.yaml
+++ b/projects/ndpi/project.yaml
@@ -1,14 +1,4 @@
 homepage: "https://www.ntop.org/products/deep-packet-inspection/ndpi/"
-language: c++
 primary_contact: "luca.deri@gmail.com"
 auto_ccs :
   - "p.antoine@catenacyber.fr"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-sanitizers:
-  - address
-  - undefined
-  - memory
-main_repo: 'https://github.com/ntop/nDPI.git'
diff --git a/projects/neomutt/Dockerfile b/projects/neomutt/Dockerfile
index 920e71d..ed2800b 100644
--- a/projects/neomutt/Dockerfile
+++ b/projects/neomutt/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER joseph.bisch@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool xsltproc libncursesw5-dev libtinfo5 libxml2-dev libxml2-utils libidn11-dev
 RUN git clone https://github.com/neomutt/neomutt neomutt
 WORKDIR neomutt
diff --git a/projects/neomutt/project.yaml b/projects/neomutt/project.yaml
index 7924a79..b4dc390 100644
--- a/projects/neomutt/project.yaml
+++ b/projects/neomutt/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://neomutt.org"
-language: c++
 primary_contact: "joseph.bisch@gmail.com"
 auto_ccs:
   - "richard.russon@gmail.com"
   - "pietro.cerutti@gmail.com"
-main_repo: 'https://github.com/neomutt/neomutt'
diff --git a/projects/nestegg/Dockerfile b/projects/nestegg/Dockerfile
index 5afe078..633edb6 100644
--- a/projects/nestegg/Dockerfile
+++ b/projects/nestegg/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kinetik@flim.org
 RUN apt-get update && apt-get install -y subversion wget
 RUN git clone https://github.com/kinetiknz/nestegg.git
 
diff --git a/projects/nestegg/project.yaml b/projects/nestegg/project.yaml
index 93165f3..0b58467 100644
--- a/projects/nestegg/project.yaml
+++ b/projects/nestegg/project.yaml
@@ -1,16 +1,9 @@
 homepage: "https://github.com/kinetiknz/nestegg"
-language: c++
 primary_contact: "mgregan@mozilla.com"
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
-  - dataflow
 sanitizers:
-  - address
-  - memory
-  - undefined
-  - dataflow
+- address
+- memory
+- undefined
 vendor_ccs:
-  - "twsmith@mozilla.com"
-main_repo: 'https://github.com/kinetiknz/nestegg.git'
+- "twsmith@mozilla.com"
+- "cdiehl@mozilla.com"
diff --git a/projects/net-snmp/Dockerfile b/projects/net-snmp/Dockerfile
index c9e6a79..a5114b4 100644
--- a/projects/net-snmp/Dockerfile
+++ b/projects/net-snmp/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER fenner@gmail.com
 RUN apt-get update && apt-get install -y make autoconf libtool libssl-dev
 RUN git clone --depth 1 git://git.code.sf.net/p/net-snmp/code net-snmp
 WORKDIR net-snmp
diff --git a/projects/net-snmp/project.yaml b/projects/net-snmp/project.yaml
index 3392038..53055d7 100644
--- a/projects/net-snmp/project.yaml
+++ b/projects/net-snmp/project.yaml
@@ -1,9 +1,7 @@
 homepage: "http://www.net-snmp.org/"
-language: c++
 primary_contact: "hardaker@users.sourceforge.net"
 auto_ccs:
    - "rstory@freesnmp.com"
    - "fenner@gmail.com"
    - "bvanassche@acm.org"
    - "magfr@lysator.liu.se"
-main_repo: 'git://git.code.sf.net/p/net-snmp/code'
diff --git a/projects/nettle/Dockerfile b/projects/nettle/Dockerfile
deleted file mode 100644
index 5367c20..0000000
--- a/projects/nettle/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get install -y software-properties-common python-software-properties make autoconf build-essential wget lzip libtool
-RUN git clone --depth 1 https://git.lysator.liu.se/nettle/nettle
-RUN git clone --depth 1 https://github.com/randombit/botan.git
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz-corpora
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
-RUN wget https://gmplib.org/download/gmp/gmp-6.2.0.tar.lz
-COPY build.sh $SRC/
diff --git a/projects/nettle/build.sh b/projects/nettle/build.sh
deleted file mode 100755
index 0101831..0000000
--- a/projects/nettle/build.sh
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export LINK_FLAGS=""
-
-# Not using OpenSSL
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL"
-
-# Install Boost headers
-    cd $SRC/
-    tar jxf boost_1_74_0.tar.bz2
-    cd boost_1_74_0/
-    CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-    CFLAGS="" CXXFLAGS="" ./b2 headers
-    cp -R boost/ /usr/include/
-
-
-# Generate lookup tables. This only needs to be done once.
-    cd $SRC/cryptofuzz
-    python gen_repository.py
-
-if [[ $CFLAGS != *sanitize=memory* ]]
-then
-    # Compile libgmp
-        cd $SRC/
-        lzip -d gmp-6.2.0.tar.lz
-        tar xf gmp-6.2.0.tar
-
-        cd gmp-6.2.0/
-        autoreconf -ivf
-        if [[ $CFLAGS != *-m32* ]]
-        then
-            ./configure --enable-maintainer-mode
-        else
-            setarch i386 ./configure --enable-maintainer-mode
-        fi
-        make -j$(nproc)
-        make install
-
-    # Compile Nettle (with libgmp)
-        mkdir $SRC/nettle-with-libgmp-install/
-        cp -R $SRC/nettle $SRC/nettle-with-libgmp/
-        cd $SRC/nettle-with-libgmp/
-        bash .bootstrap
-        if [[ $CFLAGS != *sanitize=memory* ]]
-        then
-            ./configure --disable-documentation --disable-openssl --prefix=`realpath ../nettle-with-libgmp-install`
-        else
-            ./configure --disable-documentation --disable-openssl --disable-assembler --prefix=`realpath ../nettle-with-libgmp-install`
-        fi
-        make -j$(nproc)
-        make install
-
-        if [[ $CFLAGS != *-m32* ]]
-        then
-        export LIBNETTLE_A_PATH=`realpath ../nettle-with-libgmp-install/lib/libnettle.a`
-        export LIBHOGWEED_A_PATH=`realpath ../nettle-with-libgmp-install/lib/libhogweed.a`
-        ls -l $LIBHOGWEED_A_PATH
-        else
-        export LIBNETTLE_A_PATH=`realpath ../nettle-with-libgmp-install/lib32/libnettle.a`
-        export LIBHOGWEED_A_PATH=`realpath ../nettle-with-libgmp-install/lib32/libhogweed.a`
-        fi
-        export NETTLE_INCLUDE_PATH=`realpath ../nettle-with-libgmp-install/include`
-        export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NETTLE"
-        export LINK_FLAGS="$LINK_FLAGS /usr/local/lib/libgmp.a"
-
-        # Compile Cryptofuzz Nettle module
-        cd $SRC/cryptofuzz/modules/nettle
-        make -f Makefile-hogweed -B
-
-    ##############################################################################
-    # Compile Botan
-        cd $SRC/botan
-        if [[ $CFLAGS != *-m32* ]]
-        then
-            ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-        else
-            ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-        fi
-        make -j$(nproc)
-
-        export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BOTAN"
-        export LIBBOTAN_A_PATH="$SRC/botan/libbotan-3.a"
-        export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"
-
-        # Compile Cryptofuzz Botan module
-        cd $SRC/cryptofuzz/modules/botan
-        make -B
-
-    # Compile Cryptofuzz
-        cd $SRC/cryptofuzz
-        LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc) >/dev/null
-
-        # Generate dictionary
-        ./generate_dict
-
-        # Copy fuzzer
-        cp $SRC/cryptofuzz/cryptofuzz $OUT/cryptofuzz-nettle-with-libgmp
-        # Copy dictionary
-        cp $SRC/cryptofuzz/cryptofuzz-dict.txt $OUT/cryptofuzz-nettle-with-libgmp.dict
-        # Copy seed corpus
-        cp $SRC/cryptofuzz-corpora/libressl_latest.zip $OUT/cryptofuzz-nettle-with-libgmp_seed_corpus.zip
-fi
-
-# Compile Nettle (with mini gmp)
-    mkdir $SRC/nettle-with-mini-gmp-install/
-    cp -R $SRC/nettle $SRC/nettle-with-mini-gmp/
-    cd $SRC/nettle-with-mini-gmp/
-    bash .bootstrap
-    if [[ $CFLAGS != *sanitize=memory* ]]
-    then
-        ./configure --enable-mini-gmp --disable-documentation --disable-openssl --prefix=`realpath ../nettle-with-mini-gmp-install`
-    else
-        ./configure --enable-mini-gmp --disable-documentation --disable-openssl --disable-assembler --prefix=`realpath ../nettle-with-mini-gmp-install`
-    fi
-    make -j$(nproc)
-    make install
-
-    if [[ $CFLAGS != *-m32* ]]
-    then
-    export LIBNETTLE_A_PATH=`realpath ../nettle-with-mini-gmp-install/lib/libnettle.a`
-    export LIBHOGWEED_A_PATH=`realpath ../nettle-with-mini-gmp-install/lib/libhogweed.a`
-    ls -l $LIBHOGWEED_A_PATH
-    else
-    export LIBNETTLE_A_PATH=`realpath ../nettle-with-mini-gmp-install/lib32/libnettle.a`
-    export LIBHOGWEED_A_PATH=`realpath ../nettle-with-mini-gmp-install/lib32/libhogweed.a`
-    fi
-    export NETTLE_INCLUDE_PATH=`realpath ../nettle-with-mini-gmp-install/include`
-    export LINK_FLAGS=""
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NETTLE"
-
-    # Compile Cryptofuzz Nettle module
-    cd $SRC/cryptofuzz/modules/nettle
-    make -f Makefile-hogweed -B
-
-# Compile Cryptofuzz
-    cd $SRC/cryptofuzz
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc) >/dev/null
-
-    # Generate dictionary
-    ./generate_dict
-
-    # Copy fuzzer
-    cp $SRC/cryptofuzz/cryptofuzz $OUT/cryptofuzz-nettle-with-mini-gmp
-    # Copy dictionary
-    cp $SRC/cryptofuzz/cryptofuzz-dict.txt $OUT/cryptofuzz-nettle-with-mini-gmp.dict
-    # Copy seed corpus
-    cp $SRC/cryptofuzz-corpora/libressl_latest.zip $OUT/cryptofuzz-nettle-with-mini-gmp_seed_corpus.zip
diff --git a/projects/nettle/project.yaml b/projects/nettle/project.yaml
deleted file mode 100644
index 77b348c..0000000
--- a/projects/nettle/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://www.lysator.liu.se/~nisse/nettle/"
-language: c++
-primary_contact: guidovranken@gmail.com
-auto_ccs:
-    - "nisse@google.com"
-sanitizers:
- - address
- - undefined
- - memory
-architectures:
- - x86_64
- - i386
diff --git a/projects/nghttp2/Dockerfile b/projects/nghttp2/Dockerfile
index 58a0309..ff5cb94 100644
--- a/projects/nghttp2/Dockerfile
+++ b/projects/nghttp2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tatsuhiro.t@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
 RUN git clone --depth 1 https://github.com/nghttp2/nghttp2.git
 WORKDIR nghttp2
diff --git a/projects/nghttp2/project.yaml b/projects/nghttp2/project.yaml
index 2c3df5f..a12853d 100644
--- a/projects/nghttp2/project.yaml
+++ b/projects/nghttp2/project.yaml
@@ -1,14 +1,6 @@
 homepage: "https://nghttp2.org/"
-language: c++
 primary_contact: "tatsuhiro.t@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://github.com/nghttp2/nghttp2.git'
+  - undefined
diff --git a/projects/nginx/Dockerfile b/projects/nginx/Dockerfile
deleted file mode 100644
index d567f2f..0000000
--- a/projects/nginx/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y libpcre3-dev zlib1g-dev mercurial ninja-build cmake liblzma-dev libz-dev binutils libtool
-RUN hg clone http://hg.nginx.org/nginx/
-RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
-RUN git clone --depth 1 https://github.com/google/fuzzer-test-suite
-RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
-
-WORKDIR nginx
-COPY fuzz $SRC/fuzz
-COPY build.sh add_fuzzers.diff make_fuzzers  $SRC/
diff --git a/projects/nginx/add_fuzzers.diff b/projects/nginx/add_fuzzers.diff
deleted file mode 100644
index 28b41af..0000000
--- a/projects/nginx/add_fuzzers.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/auto/configure b/auto/configure
-index 7e6e33a7..bb368cfb 100755
---- a/auto/configure
-+++ b/auto/configure
-@@ -100,6 +100,7 @@ have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\""
- . auto/define
- 
- . auto/make
-+. auto/make_fuzzers
- . auto/lib/make
- . auto/install
- 
diff --git a/projects/nginx/build.sh b/projects/nginx/build.sh
deleted file mode 100644
index fcfb70b..0000000
--- a/projects/nginx/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-hg import $SRC/add_fuzzers.diff --no-commit
-
-cp -r $SRC/fuzz src/
-cp $SRC/make_fuzzers auto/make_fuzzers
-
-cd src/fuzz
-rm -rf genfiles && mkdir genfiles && $SRC/LPM/external.protobuf/bin/protoc http_request_proto.proto --cpp_out=genfiles
-cd ../..
-
-auto/configure \
-    --with-ld-opt="-Wl,--wrap=listen -Wl,--wrap=setsockopt -Wl,--wrap=bind -Wl,--wrap=shutdown -Wl,--wrap=connect -Wl,--wrap=getpwnam -Wl,--wrap=getgrnam -Wl,--wrap=chmod -Wl,--wrap=chown" \
-    --with-http_v2_module
-make -f objs/Makefile fuzzers
-
-cp objs/*_fuzzer $OUT/
-cp $SRC/fuzz/*.dict $OUT/
diff --git a/projects/nginx/fuzz/http_request_fuzzer.cc b/projects/nginx/fuzz/http_request_fuzzer.cc
deleted file mode 100644
index 8d69e82..0000000
--- a/projects/nginx/fuzz/http_request_fuzzer.cc
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-extern "C" {
-#include <ngx_config.h>
-#include <ngx_core.h>
-#include <ngx_event.h>
-#include <ngx_http.h>
-}
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <time.h>
-#include <unistd.h>
-
-#include "http_request_proto.pb.h"
-#include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
-
-static char configuration[] =
-"error_log stderr emerg;\n"
-"events {\n"
-"    use epoll;\n"
-"    worker_connections 2;\n"
-"    multi_accept off;\n"
-"    accept_mutex off;\n"
-"}\n"
-"http {\n"
-"    server_tokens off;\n"
-"    default_type application/octet-stream;\n"
-"    map $http_upgrade $connection_upgrade {\n"
-"      default upgrade;\n"
-"      '' close;\n"
-"    }\n"
-"    error_log stderr emerg;\n"
-"    access_log off;\n"
-"    map $subdomain $nss {\n"
-"      default local_upstream;\n"
-"    }\n"
-"    upstream local_upstream {\n"
-"      server 127.0.0.1:1010 max_fails=0;\n"
-"      server 127.0.0.1:1011 max_fails=0;\n"
-"      server 127.0.0.1:1012 max_fails=0;\n"
-"      server 127.0.0.1:1013 max_fails=0;\n"
-"      server 127.0.0.1:1014 max_fails=0;\n"
-"      server 127.0.0.1:1015 max_fails=0;\n"
-"      server 127.0.0.1:1016 max_fails=0;\n"
-"      server 127.0.0.1:1017 max_fails=0;\n"
-"      server 127.0.0.1:1018 max_fails=0;\n"
-"      server 127.0.0.1:1019 max_fails=0;\n"
-"    }\n"
-"    client_max_body_size 256M;\n"
-"    client_body_temp_path /tmp/;\n"
-"    proxy_temp_path /tmp/;\n"
-"    proxy_buffer_size 24K;\n"
-"    proxy_max_temp_file_size 0;\n"
-"    proxy_buffers 8 4K;\n"
-"    proxy_busy_buffers_size 28K;\n"
-"    proxy_buffering off;\n"
-"    server {\n"
-"      listen unix:nginx.sock;\n"
-"      server_name ~^(?<subdomain>.+)\\.url.com$;\n"
-"      proxy_next_upstream off;\n"
-"      proxy_read_timeout 5m;\n"
-"      proxy_http_version 1.1;\n"
-"      proxy_set_header Host $http_host;\n"
-"      proxy_set_header X-Real-IP $remote_addr;\n"
-"      proxy_set_header X-Real-Port $remote_port;\n"
-"      location / {\n"
-"        proxy_pass http://$nss;\n"
-"        proxy_set_header Host $http_host;\n"
-"        proxy_set_header X-Real-IP $remote_addr;\n"
-"        proxy_set_header X-Real-Port $remote_port;\n"
-"        proxy_set_header Connection '';\n"
-"        chunked_transfer_encoding off;\n"
-"        proxy_buffering off;\n"
-"        proxy_cache off;\n"
-"      }\n"
-"    }\n"
-"}\n"
-"\n";
-
-
-static ngx_cycle_t *cycle;
-static ngx_log_t ngx_log;
-static ngx_open_file_t ngx_log_file;
-static char *my_argv[2];
-static char arg1[] = {0, 0xA, 0};
-
-extern char **environ;
-
-static const char *config_file = "/tmp/http_config.conf";
-
-struct fuzzing_data {
-  const uint8_t *data;
-  size_t data_len;
-};
-
-static struct fuzzing_data request;
-static struct fuzzing_data reply;
-
-static ngx_http_upstream_t *upstream;
-static ngx_http_request_t *req_reply;
-static ngx_http_cleanup_t cln_new = {};
-static int cln_added;
-
-// Called when finalizing the request to upstream
-// Do not need to clean the request pool
-static void cleanup_reply(void *data) { req_reply = NULL; }
-
-// Called by the http parser to read the buffer
-static ssize_t request_recv_handler(ngx_connection_t *c, u_char *buf,
-                                    size_t size) {
-  if (request.data_len < size)
-    size = request.data_len;
-  memcpy(buf, request.data, size);
-  request.data += size;
-  request.data_len -= size;
-  return size;
-}
-
-// Feed fuzzing input for the reply from upstream
-static ssize_t reply_recv_handler(ngx_connection_t *c, u_char *buf,
-                                  size_t size) {
-  req_reply = (ngx_http_request_t *)(c->data);
-  if (!cln_added) { // add cleanup so that we know whether everything is cleanup
-                    // correctly
-    cln_added = 1;
-    cln_new.handler = cleanup_reply;
-    cln_new.next = req_reply->cleanup;
-    cln_new.data = NULL;
-    req_reply->cleanup = &cln_new;
-  }
-  upstream = req_reply->upstream;
-
-  if (reply.data_len < size)
-    size = reply.data_len;
-  memcpy(buf, reply.data, size);
-  reply.data += size;
-  reply.data_len -= size;
-  if (size == 0)
-    c->read->ready = 0;
-  return size;
-}
-
-static ngx_int_t add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags) {
-  return NGX_OK;
-}
-
-static ngx_int_t init_event(ngx_cycle_t *cycle, ngx_msec_t timer) {
-  return NGX_OK;
-}
-
-// Used when sending data, do nothing
-static ngx_chain_t *send_chain(ngx_connection_t *c, ngx_chain_t *in,
-                               off_t limit) {
-  c->read->ready = 1;
-  c->recv = reply_recv_handler;
-  return in->next;
-}
-
-// Create a base state for Nginx without starting the server
-extern "C" int InitializeNginx(void) {
-  ngx_log_t *log;
-  ngx_cycle_t init_cycle;
-
-  if (access("nginx.sock", F_OK) != -1) {
-    remove("nginx.sock");
-  }
-
-  ngx_debug_init();
-  ngx_strerror_init();
-  ngx_time_init();
-  ngx_regex_init();
-
-  // Just output logs to stderr
-  ngx_log.file = &ngx_log_file;
-  ngx_log.log_level = NGX_LOG_EMERG;
-  ngx_log_file.fd = ngx_stderr;
-  log = &ngx_log;
-
-  ngx_memzero(&init_cycle, sizeof(ngx_cycle_t));
-  init_cycle.log = log;
-  ngx_cycle = &init_cycle;
-
-  init_cycle.pool = ngx_create_pool(1024, log);
-
-  // Set custom argv/argc
-  my_argv[0] = arg1;
-  my_argv[1] = NULL;
-  ngx_argv = ngx_os_argv = my_argv;
-  ngx_argc = 0;
-
-  // Weird trick to free a leaking buffer always caught by ASAN
-  // We basically let ngx overwrite the environment variable, free the leak and
-  // restore the environment as before.
-  char *env_before = environ[0];
-  environ[0] = my_argv[0] + 1;
-  ngx_os_init(log);
-  free(environ[0]);
-  environ[0] = env_before;
-
-  ngx_crc32_table_init();
-  ngx_preinit_modules();
-
-  FILE *fptr = fopen(config_file, "w");
-  fprintf(fptr, "%s", configuration);
-  fclose(fptr);
-  init_cycle.conf_file.len = strlen(config_file);
-  init_cycle.conf_file.data = (unsigned char *) config_file;
-
-  cycle = ngx_init_cycle(&init_cycle);
-
-  ngx_os_status(cycle->log);
-  ngx_cycle = cycle;
-
-  ngx_event_actions.add = add_event;
-  ngx_event_actions.init = init_event;
-  ngx_io.send_chain = send_chain;
-  ngx_event_flags = 1;
-  ngx_event_timer_init(cycle->log);
-  return 0;
-}
-
-extern "C" long int invalid_call(ngx_connection_s *a, ngx_chain_s *b,
-                                 long int c) {
-  return 0;
-}
-
-DEFINE_PROTO_FUZZER(const HttpProto &input) {
-  static int init = InitializeNginx();
-  assert(init == 0);
-
-  // have two free connections, one for client, one for upstream
-  ngx_event_t read_event1 = {};
-  ngx_event_t write_event1 = {};
-  ngx_connection_t local1 = {};
-  ngx_event_t read_event2 = {};
-  ngx_event_t write_event2 = {};
-  ngx_connection_t local2 = {};
-  ngx_connection_t *c;
-  ngx_listening_t *ls;
-
-  req_reply = NULL;
-  upstream = NULL;
-  cln_added = 0;
-
-  const char *req_string = input.request().c_str();
-  size_t req_len = strlen(req_string);
-  const char *rep_string = input.reply().c_str();
-  size_t rep_len = strlen(rep_string);
-  request.data = (const uint8_t *)req_string;
-  request.data_len = req_len;
-  reply.data = (const uint8_t *)rep_string;
-  reply.data_len = rep_len;
-
-  // Use listening entry created from configuration
-  ls = (ngx_listening_t *)ngx_cycle->listening.elts;
-
-  // Fake event ready for dispatch on read
-  local1.read = &read_event1;
-  local1.write = &write_event1;
-  local2.read = &read_event2;
-  local2.write = &write_event2;
-  local2.send_chain = send_chain;
-
-  // Create fake free connection to feed the http handler
-  ngx_cycle->free_connections = &local1;
-  local1.data = &local2;
-  ngx_cycle->free_connection_n = 2;
-
-  // Initialize connection
-  c = ngx_get_connection(
-      255, &ngx_log); // 255 - (hopefully unused) socket descriptor
-
-  c->shared = 1;
-  c->type = SOCK_STREAM;
-  c->pool = ngx_create_pool(256, ngx_cycle->log);
-  c->sockaddr = ls->sockaddr;
-  c->listening = ls;
-  c->recv = request_recv_handler; // Where the input will be read
-  c->send_chain = send_chain;
-  c->send = (ngx_send_pt)invalid_call;
-  c->recv_chain = (ngx_recv_chain_pt)invalid_call;
-  c->log = &ngx_log;
-  c->pool->log = &ngx_log;
-  c->read->log = &ngx_log;
-  c->write->log = &ngx_log;
-  c->socklen = ls->socklen;
-  c->local_sockaddr = ls->sockaddr;
-  c->local_socklen = ls->socklen;
-
-  read_event1.ready = 1;
-  write_event1.ready = write_event1.delayed = 1;
-
-  // Will redirect to http parser
-  ngx_http_init_connection(c);
-}
diff --git a/projects/nginx/fuzz/http_request_fuzzer.dict b/projects/nginx/fuzz/http_request_fuzzer.dict
deleted file mode 100644
index 6a21c63..0000000
--- a/projects/nginx/fuzz/http_request_fuzzer.dict
+++ /dev/null
@@ -1,152 +0,0 @@
-# Sources: https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
-
-# misc
-"HTTP/1.1"
-
-# verbs
-"CONNECT"
-"DELETE"
-"GET"
-"HEAD"
-"OPTIONS"
-"PATCH"
-"POST"
-"PUT"
-"TRACE"
-
-
-# Webdav/caldav verbs
-"ACL"
-"BASELINE-CONTROL"
-"BIND"
-"CHECKIN"
-"CHECKOUT"
-"COPY"
-"LABEL"
-"LINK"
-"LOCK"
-"MERGE"
-"MKACTIVITY"
-"MKCALENDAR"
-"MKCOL"
-"MKREDIRECTREF"
-"MKWORKSPACE"
-"MOVE"
-"ORDERPATCH"
-"PRI"
-"PROPFIND"
-"PROPPATCH"
-"REBIND"
-"REPORT"
-"SEARCH"
-"UNBIND"
-"UNCHECKOUT"
-"UNLINK"
-"UNLOCK"
-"UPDATE"
-"UPDATEREDIRECTREF"
-"VERSION-CONTROL"
-
-
-# Fields
-"A-IM"
-"Accept"
-"Accept-Charset"
-"Accept-Datetime"
-"Accept-Encoding"
-"Accept-Language"
-"Accept-Patch"
-"Accept-Ranges"
-"Access-Control-Allow-Credentials"
-"Access-Control-Allow-Headers"
-"Access-Control-Allow-Methods"
-"Access-Control-Allow-Origin"
-"Access-Control-Expose-Headers"
-"Access-Control-Max-Age"
-"Access-Control-Request-Headers"
-"Access-Control-Request-Method"
-"Age"
-"Allow"
-"Alt-Svc"
-"Authorization"
-"Cache-Control"
-"Connection"
-"Connection:"
-"Content-Disposition"
-"Content-Encoding"
-"Content-Language"
-"Content-Length"
-"Content-Location"
-"Content-MD5"
-"Content-Range"
-"Content-Security-Policy"
-"Content-Type"
-"Cookie"
-"DNT"
-"Date"
-"Delta-Base"
-"ETag"
-"Expect"
-"Expires"
-"Forwarded"
-"From"
-"Front-End-Https"
-"HTTP2-Settings"
-"Host"
-"IM"
-"If-Match"
-"If-Modified-Since"
-"If-None-Match"
-"If-Range"
-"If-Unmodified-Since"
-"Last-Modified"
-"Link"
-"Location"
-"Max-Forwards"
-"Origin"
-"P3P"
-"Pragma"
-"Proxy-Authenticate"
-"Proxy-Authorization"
-"Proxy-Connection"
-"Public-Key-Pins"
-"Range"
-"Referer"
-"Refresh"
-"Retry-After"
-"Save-Data"
-"Server"
-"Set-Cookie"
-"Status"
-"Strict-Transport-Security"
-"TE"
-"Timing-Allow-Origin"
-"Tk"
-"Trailer"
-"Transfer-Encoding"
-"Upgrade"
-"Upgrade-Insecure-Requests"
-"User-Agent"
-"Vary"
-"Via"
-"WWW-Authenticate"
-"Warning"
-"X-ATT-DeviceId"
-"X-Content-Duration"
-"X-Content-Security-Policy"
-"X-Content-Type-Options"
-"X-Correlation-ID"
-"X-Csrf-Token"
-"X-Forwarded-For"
-"X-Forwarded-Host"
-"X-Forwarded-Proto"
-"X-Frame-Options"
-"X-Http-Method-Override"
-"X-Powered-By"
-"X-Request-ID"
-"X-Requested-With"
-"X-UA-Compatible"
-"X-UIDH"
-"X-Wap-Profile"
-"X-WebKit-CSP"
-"X-XSS-Protection"
diff --git a/projects/nginx/fuzz/http_request_proto.proto b/projects/nginx/fuzz/http_request_proto.proto
deleted file mode 100644
index 22a53af..0000000
--- a/projects/nginx/fuzz/http_request_proto.proto
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-syntax = "proto2";
-// Proto description of the http request fuzzer input format
-
-message HttpProto{
-	required string request = 1;
-	required string reply = 2;
-}
diff --git a/projects/nginx/fuzz/wrappers.c b/projects/nginx/fuzz/wrappers.c
deleted file mode 100644
index cb29872..0000000
--- a/projects/nginx/fuzz/wrappers.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <grp.h>
-#include <pwd.h>
-
-int __wrap_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
-  return 0;
-}
-
-int __wrap_bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
-  return 0;
-}
-
-int __wrap_shutdown(int socket, int how) { return 0; }
-
-ssize_t __wrap_listen(int fd, void *buf, size_t bytes) { return 0; }
-
-int __wrap_setsockopt(int fd, int level, int optname, const void *optval,
-                      socklen_t optlen) {
-  return 0;
-}
-
-int __wrap_chmod(const char *pathname, mode_t mode){
-  return 0;
-}
-
-int __wrap_chown(const char *pathname, uid_t owner, gid_t group){
-  return 0;
-}
-
-struct passwd pwd;
-struct group grp;
-
-struct passwd *__wrap_getpwnam(const char *name){
-  pwd.pw_uid = 1;
-  return &pwd;
-}
-
-struct group *__wrap_getgrnam(const char *name){
-  grp.gr_gid = 1;
-  return &grp;
-}
diff --git a/projects/nginx/make_fuzzers b/projects/nginx/make_fuzzers
deleted file mode 100644
index a62d4d6..0000000
--- a/projects/nginx/make_fuzzers
+++ /dev/null
@@ -1,39 +0,0 @@
-sed -i 's/main(/fuzz_without_main(/g' src/core/nginx.c
-
-mkdir -p $NGX_OBJS/src/fuzz
-
-ngx_all_objs_fuzz=`echo src/fuzz/wrappers.c $ngx_all_srcs \
-    | sed -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \
-          -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g"`
-
-ngx_deps_fuzz=`echo $ngx_all_objs_fuzz $ngx_modules_obj $ngx_res $LINK_DEPS \
-    | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
-          -e "s/\//$ngx_regex_dirsep/g"`
-
-ngx_objs=`echo objs/src/fuzz/wrappers.o $ngx_all_objs $ngx_modules_obj \
-    | sed -e "s/  *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
-          -e "s/\//$ngx_regex_dirsep/g"`
-
-cat << END                                                    >> $NGX_MAKEFILE
-
-fuzzers: objs/http_request_fuzzer
-
-objs/src/fuzz/wrappers.o:
-	\$(CC) $ngx_compile_opt \$(CFLAGS) -o objs/src/fuzz/wrappers.o src/fuzz/wrappers.c
-
-objs/http_request_fuzzer: $ngx_deps_fuzz
-	 \$(CXX) \$(CXXFLAGS) src/fuzz/http_request_fuzzer.cc \
-	 src/fuzz/genfiles/http_request_proto.pb.cc \
-	 -o objs/http_request_fuzzer \
-	 \$(CORE_INCS) \$(HTTP_INCS) \
-	 -I src/fuzz/genfiles/ -I \$(SRC)/ \
-	 -I \$(SRC)/libprotobuf-mutator/ \
-	 -I \$(SRC)/LPM/external.protobuf/include \
-	 \$(SRC)/LPM/src/libfuzzer/libprotobuf-mutator-libfuzzer.a \
-  	 \$(SRC)/LPM/src/libprotobuf-mutator.a \
-  	 \$(SRC)/LPM/external.protobuf/lib/libprotobuf.a \
-	 $ngx_binexit$ngx_long_cont$ngx_objs \
-   	 \$(LIB_FUZZING_ENGINE) $ngx_libs$ngx_link$ngx_main_link -lcrypt
-$ngx_long_end					    
-
-END
diff --git a/projects/nginx/project.yaml b/projects/nginx/project.yaml
index 0aa9020..9b23bbe 100644
--- a/projects/nginx/project.yaml
+++ b/projects/nginx/project.yaml
@@ -1,8 +1,2 @@
 homepage: "http://nginx.org"
-language: c
 primary_contact: "xim.andrew@gmail.com"
-auto_ccs:
-  - ouyangyunshu@google.com
-  - mmoroz@google.com
-sanitizers:
-  - address
diff --git a/projects/ninja/Dockerfile b/projects/ninja/Dockerfile
deleted file mode 100644
index 7d9d5e2..0000000
--- a/projects/ninja/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake
-
-RUN git clone --depth 1 https://github.com/ninja-build/ninja
-WORKDIR ninja
-RUN mv $SRC/ninja/misc/oss-fuzz/build.sh $SRC/
-RUN mv $SRC/ninja/misc/oss-fuzz/sample_ninja_build $SRC/
diff --git a/projects/ninja/project.yaml b/projects/ninja/project.yaml
deleted file mode 100644
index d35fdc4..0000000
--- a/projects/ninja/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/ninja-build/ninja"
-language: c++
-primary_contact: "jhasse@gmail.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
-main_repo: "https://github.com/ninja-build/ninja"
diff --git a/projects/njs/Dockerfile b/projects/njs/Dockerfile
index 0066c4a..05bf5dd 100644
--- a/projects/njs/Dockerfile
+++ b/projects/njs/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool \
     mercurial libpcre3-dev subversion
 RUN hg clone http://hg.nginx.org/njs
diff --git a/projects/njs/project.yaml b/projects/njs/project.yaml
index bd92434..c307952 100644
--- a/projects/njs/project.yaml
+++ b/projects/njs/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://nginx.org/en/docs/njs/"
-language: c++
 primary_contact: "xeioex@nginx.com"
 auto_ccs:
  - "alexander.borisov@nginx.com"
diff --git a/projects/nodejs/Dockerfile b/projects/nodejs/Dockerfile
deleted file mode 100644
index f2805ab..0000000
--- a/projects/nodejs/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-RUN apt-get install -y flex bison build-essential
-RUN git clone --recursive --depth 1 https://github.com/nodejs/node
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/nodejs/build.sh b/projects/nodejs/build.sh
deleted file mode 100755
index 713d9f1..0000000
--- a/projects/nodejs/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd $SRC/node
-
-# Build node
-export LDFLAGS="$CXXFLAGS"
-export LD="$CXX"
-./configure --with-ossfuzz
-make -j$(nproc)
-
-# Copy all fuzzers to OUT folder 
-cp out/Release/fuzz_* ${OUT}/
diff --git a/projects/nodejs/fuzz_url.cc b/projects/nodejs/fuzz_url.cc
deleted file mode 100644
index 1c07fac..0000000
--- a/projects/nodejs/fuzz_url.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-#include <stdlib.h>
-
-#include "node.h"
-#include "node_internals.h"
-#include "node_url.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-    node::url::URL url2((char*)data, size);
-
-    return 0;
-} 
diff --git a/projects/nodejs/project.yaml b/projects/nodejs/project.yaml
index 4161f63..80ca11e 100644
--- a/projects/nodejs/project.yaml
+++ b/projects/nodejs/project.yaml
@@ -1,10 +1,2 @@
 homepage: "https://nodejs.org"
 primary_contact: "security@nodejs.org"
-language: c++
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/nodejs/node'
diff --git a/projects/nom/Dockerfile b/projects/nom/Dockerfile
deleted file mode 100644
index 167550e..0000000
--- a/projects/nom/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/Geal/nom/
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/nom/build.sh b/projects/nom/build.sh
deleted file mode 100755
index 8567ddc..0000000
--- a/projects/nom/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/nom
-cargo fuzz build -O 
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_arithmetic $OUT/
diff --git a/projects/nom/project.yaml b/projects/nom/project.yaml
deleted file mode 100644
index 9c2f7d8..0000000
--- a/projects/nom/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/Geal/nom"
-main_repo: "https://github.com/Geal/nom"
-primary_contact: "geo.couprie@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/nss/Dockerfile b/projects/nss/Dockerfile
index 5ad8b5e..0a4df4f 100644
--- a/projects/nss/Dockerfile
+++ b/projects/nss/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make mercurial zlib1g-dev gyp ninja-build libssl-dev
 
 RUN hg clone https://hg.mozilla.org/projects/nspr nspr
diff --git a/projects/nss/project.yaml b/projects/nss/project.yaml
index 3cf3dc0..f3daae3 100644
--- a/projects/nss/project.yaml
+++ b/projects/nss/project.yaml
@@ -1,8 +1,10 @@
 homepage: "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS"
-language: c++
-primary_contact: "jjones@mozilla.com"
+primary_contact: "fkiefer@mozilla.com"
 auto_ccs:
-  - "bbeurdouche@mozilla.com"
-  - "tvandermerwe@mozilla.com"
+  - "jjones@mozilla.com"
+  - "cdiehl@mozilla.com"
   - "sledru@mozilla.com"
   - "kjacobs@mozilla.com"
+fuzzing_engines:
+  - libfuzzer
+  - afl
diff --git a/projects/ntp/Dockerfile b/projects/ntp/Dockerfile
index 40de20c..d942c8c 100644
--- a/projects/ntp/Dockerfile
+++ b/projects/ntp/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER security@ntp.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool bison flex rsync lynx
 ADD https://www.bitkeeper.org/downloads/7.3.3/bk-7.3.3-x86_64-glibc213-linux.bin bk-7.3.3-x86_64-glibc213-linux.bin
 RUN chmod +x bk-7.3.3-x86_64-glibc213-linux.bin
diff --git a/projects/ntp/project.yaml b/projects/ntp/project.yaml
index c3b8b2d..df48cec 100644
--- a/projects/ntp/project.yaml
+++ b/projects/ntp/project.yaml
@@ -1,15 +1,8 @@
 homepage: "http://www.ntp.org"
-language: c++
 primary_contact: "security@ntp.org"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-fuzzing_engines:
-  - afl
-  - libfuzzer
-  - honggfuzz
-  - dataflow
+auto_ccs : "p.antoine@catenacyber.fr"
+
 sanitizers:
-  - address
-  - memory
-  - undefined
-  - dataflow
+- address
+- memory
+- undefined
diff --git a/projects/oak/Dockerfile b/projects/oak/Dockerfile
index e6f44f3..9d74398 100644
--- a/projects/oak/Dockerfile
+++ b/projects/oak/Dockerfile
@@ -17,6 +17,7 @@
 # TODO(https://github.com/google/oss-fuzz/issues/3093): Stop specifying the
 # image SHA once the bug is fixed.
 FROM gcr.io/oss-fuzz-base/base-builder@sha256:276813aef0ce5972db43c0230f96162003994fa742fb1b2f4e66c67498575c65
+MAINTAINER tzn@google.com
 
 # Use a fixed Bazel version.
 # https://github.com/google/asylo/blob/088ea3490dd4579655bd5b65b0e31fe18de7f6dd/asylo/distrib/toolchain/Dockerfile#L48-L71
diff --git a/projects/oak/build.sh b/projects/oak/build.sh
index 2e46c77..3ade813 100755
--- a/projects/oak/build.sh
+++ b/projects/oak/build.sh
@@ -42,35 +42,34 @@
 # Temporary hack, see https://github.com/google/oss-fuzz/issues/383
 readonly NO_VPTR='--copt=-fno-sanitize=vptr --linkopt=-fno-sanitize=vptr'
 
-readonly FUZZER_TARGETS=()
-readonly ENABLED=false
+readonly FUZZER_TARGETS=(
+  'oak/server:wasm_node_fuzz'
+)
 
-if [ "$ENABLED" = true ]; then
-  bazel build \
-    --client_env=CC=${CC} \
-    --client_env=CXX=${CXX} \
-    --dynamic_mode=off \
-    --spawn_strategy=standalone \
-    --genrule_strategy=standalone \
-    ${NO_VPTR} \
-    --strip=never \
-    --linkopt=-lc++ \
-    --linkopt=-pthread \
-    --cxxopt=-std=c++11 \
-    --copt=${LIB_FUZZING_ENGINE} \
-    --linkopt=${LIB_FUZZING_ENGINE} \
-    --remote_cache=https://storage.googleapis.com/oak-bazel-cache \
-    --remote_upload_local_results=false \
-    ${EXTRA_BAZEL_FLAGS} \
-    ${FUZZER_TARGETS[@]}
+bazel build \
+  --client_env=CC=${CC} \
+  --client_env=CXX=${CXX} \
+  --dynamic_mode=off \
+  --spawn_strategy=standalone \
+  --genrule_strategy=standalone \
+  ${NO_VPTR} \
+  --strip=never \
+  --linkopt=-lc++ \
+  --linkopt=-pthread \
+  --cxxopt=-std=c++11 \
+  --copt=${LIB_FUZZING_ENGINE} \
+  --linkopt=${LIB_FUZZING_ENGINE} \
+  --remote_cache=https://storage.googleapis.com/oak-bazel-cache \
+  --remote_upload_local_results=false \
+  ${EXTRA_BAZEL_FLAGS} \
+  ${FUZZER_TARGETS[@]}
 
-  for target in ${FUZZER_TARGETS}; do
-    # Replace : with /.
-    fuzzer_name="${target/:/\/}"
-    cp "./bazel-bin/${fuzzer_name}" "${OUT}/"
-  done
+for target in ${FUZZER_TARGETS}; do
+  # Replace : with /.
+  fuzzer_name="${target/:/\/}"
+  cp "./bazel-bin/${fuzzer_name}" "${OUT}/"
+done
 
-  # Cleanup bazel- symlinks to avoid oss-fuzz trying to copy out of the build
-  # cache.
-  rm -f ./bazel-*
-fi
+# Cleanup bazel- symlinks to avoid oss-fuzz trying to copy out of the build
+# cache.
+rm -f ./bazel-*
diff --git a/projects/oak/project.yaml b/projects/oak/project.yaml
index 3f79c7f..b336dcc 100644
--- a/projects/oak/project.yaml
+++ b/projects/oak/project.yaml
@@ -1,6 +1,4 @@
-disabled: True
 homepage: "https://github.com/project-oak/oak"
-language: c++
 primary_contact: "tzn@google.com"
 auto_ccs:
   - "project-oak-team@google.com"
@@ -12,4 +10,3 @@
   - "mks@google.com"
 fuzzing_engines:
   - libfuzzer
-main_repo: 'https://github.com/project-oak/oak'
diff --git a/projects/oniguruma/.gitignore b/projects/oniguruma/.gitignore
deleted file mode 100644
index f181609..0000000
--- a/projects/oniguruma/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/oniguruma
-/fuzzer.options.*
diff --git a/projects/oniguruma/Dockerfile b/projects/oniguruma/Dockerfile
deleted file mode 100644
index 9334f9d..0000000
--- a/projects/oniguruma/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/kkos/oniguruma.git oniguruma
-
-WORKDIR oniguruma
-COPY build.sh $SRC/
-COPY fuzzer.options $SRC/oniguruma/harnesses
diff --git a/projects/oniguruma/build.sh b/projects/oniguruma/build.sh
deleted file mode 100755
index 4ebd5c1..0000000
--- a/projects/oniguruma/build.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-./autogen.sh
-./configure
-make clean
-make -j$(nproc)
-
-FUZZ_SRCDIR=harnesses
-FUZZ_TARGET=fuzzer
-
-# build fuzzer
-$CC $CFLAGS -o $FUZZ_SRCDIR/fuzzer_syntax.o -I src -c -DSYNTAX_TEST $FUZZ_SRCDIR/base.c
-$CXX $CXXFLAGS -o $OUT/$FUZZ_TARGET $FUZZ_SRCDIR/fuzzer_syntax.o $LIB_FUZZING_ENGINE src/.libs/libonig.a
-
-# setup files
-cp $FUZZ_SRCDIR/$FUZZ_TARGET.options $OUT/
-cp $FUZZ_SRCDIR/ascii_compatible.dict $OUT/$FUZZ_TARGET.dict
diff --git a/projects/oniguruma/fuzzer.options b/projects/oniguruma/fuzzer.options
deleted file mode 100644
index e69de29..0000000
--- a/projects/oniguruma/fuzzer.options
+++ /dev/null
diff --git a/projects/oniguruma/project.yaml b/projects/oniguruma/project.yaml
deleted file mode 100644
index 835d372..0000000
--- a/projects/oniguruma/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://github.com/kkos/oniguruma"
-language: c
-primary_contact: "kkosako0@gmail.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
-main_repo: 'https://github.com/kkos/oniguruma.git'
diff --git a/projects/open62541/Dockerfile b/projects/open62541/Dockerfile
index 12c1e1f..5704524 100644
--- a/projects/open62541/Dockerfile
+++ b/projects/open62541/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER git@s.profanter.me
 RUN apt-get update && apt-get install -y make cmake python-six wget
 # We need libmbedtls > 2.5.1 otherwise it does not include the lib for static linking
 RUN wget https://open62541.org/libmbedtls/libmbedtls-dev_2.6.0-1_amd64.deb && \
diff --git a/projects/open62541/project.yaml b/projects/open62541/project.yaml
index 7f0447c..9039fda 100644
--- a/projects/open62541/project.yaml
+++ b/projects/open62541/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://open62541.org/"
-language: c++
 primary_contact: "Stefan.Profanter@gmail.com"
 auto_ccs:
  - "julius.pfrommer@gmail.com"
@@ -9,4 +8,3 @@
 - address
 - undefined
 - memory
-main_repo: 'https://github.com/open62541/open62541.git'
diff --git a/projects/openbabel/Dockerfile b/projects/openbabel/Dockerfile
deleted file mode 100644
index 766293a..0000000
--- a/projects/openbabel/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt install -y cmake
-RUN git clone --depth 1 https://github.com/openbabel/openbabel.git
-COPY build.sh $SRC
-WORKDIR $SRC/openbabel
diff --git a/projects/openbabel/build.sh b/projects/openbabel/build.sh
deleted file mode 100755
index 5a1b547..0000000
--- a/projects/openbabel/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-# build project
-mkdir build && cd build
-cmake .. -DBUILD_SHARED=OFF -DBUILD_MIXED=ON
-make -j $(nproc)
-cp bin/fuzz* $OUT/
diff --git a/projects/openbabel/project.yaml b/projects/openbabel/project.yaml
deleted file mode 100644
index e7437df..0000000
--- a/projects/openbabel/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://openbabel.org"
-language: c++
-primary_contact: "geoff.hutchison@gmail.com"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-
-sanitizers:
-- address
-- undefined
-main_repo: 'https://github.com/openbabel/openbabel.git'
diff --git a/projects/opencv/build.sh b/projects/opencv/build.sh
index 5336f1b..a3fb653 100755
--- a/projects/opencv/build.sh
+++ b/projects/opencv/build.sh
@@ -30,10 +30,7 @@
 popd
 
 pushd $SRC
-for fuzzer in core_fuzzer filestorage_read_file_fuzzer \
-   filestorage_read_filename_fuzzer filestorage_read_string_fuzzer \
-   generateusergallerycollage_fuzzer imdecode_fuzzer imencode_fuzzer \
-   imread_fuzzer; do
+for fuzzer in imdecode_fuzzer imread_fuzzer; do
 $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.cc -std=c++11 \
 -I$install_dir/include/opencv4 -L$install_dir/lib \
 -L$install_dir/lib/opencv4/3rdparty \
@@ -41,7 +38,7 @@
 -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d \
 -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc \
 -lopencv_flann -lopencv_core -llibjpeg-turbo -llibwebp -llibpng -llibtiff \
--llibopenjp2 -lIlmImf -llibprotobuf -lquirc -lzlib -littnotify -lippiw \
+-llibjasper -lIlmImf -llibprotobuf -lquirc -lzlib -littnotify -lippiw \
 -lippicv -lade -ldl -lm -lpthread -lrt \
 -o $OUT/$fuzzer
 done
diff --git a/projects/opencv/core_fuzzer.cc b/projects/opencv/core_fuzzer.cc
deleted file mode 100644
index 089b6d7..0000000
--- a/projects/opencv/core_fuzzer.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-
-#include <opencv2/opencv.hpp>
-#include <fuzzer/FuzzedDataProvider.h>
-
-namespace {
-
-bool GetCVImage(const std::string& image_string, const int max_pixels,
-                cv::Mat* original_image) {
-  if (image_string.empty()) return false;
-  std::vector<uchar> raw_data(image_string.size());
-  const char* ptr = image_string.data();
-  std::copy(ptr, ptr + image_string.size(), raw_data.data());
-  try {
-    *original_image = cv::imdecode(raw_data, cv::IMREAD_UNCHANGED);
-  } catch (cv::Exception e) {}
-  return !original_image->empty();
-}
-
-void TestExternalMethods(const cv::Mat& mat) {
-  try{
-    cv::sum(mat);
-  } catch (cv::Exception e) {}
-  try {
-    cv::mean(mat);
-  } catch (cv::Exception e) {}
-  try {
-    cv::trace(mat);
-  } catch (cv::Exception e) {}
-}
-
-void TestInternalMethods(const cv::Mat& mat) {
-  try {
-    mat.t();
-  } catch (cv::Exception e) {}
-  try {
-    mat.inv();
-  } catch (cv::Exception e) {}
-  try {
-    mat.diag();
-  } catch (cv::Exception e) {}
-}
-
-void TestSplitAndMerge(const cv::Mat& image) {
-  std::vector<cv::Mat> split_image(image.channels());
-  cv::split(image, split_image);
-  if (!split_image.empty()) {
-    cv::Mat new_image;
-    cv::merge(split_image, new_image);
-  }
-}
-
-}  // namespace
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // Prepares a backup image we will use if we cannot successfully get an image
-  // by decoding the string.
-  std::vector<uint8_t> image_data = {data, data + size};
-  cv::Mat backup_image =
-      cv::Mat(1, image_data.size(), CV_8UC1, image_data.data());
-
-  FuzzedDataProvider fuzzed_data_provider(data, size);
-  const int max_pixels = fuzzed_data_provider.ConsumeIntegral<int>();
-  const std::string image_string =
-      fuzzed_data_provider.ConsumeRemainingBytesAsString();
-  cv::Mat original_image;
-  // Tests the clone method.
-  cv::Mat cloned_image = GetCVImage(image_string, max_pixels, &original_image)
-                             ? original_image.clone()
-                             : backup_image.clone();
-
-  // TODO: enabling the following crashes right away.
-  // TestExternalMethods(cloned_image);
-  TestInternalMethods(cloned_image);
-  TestSplitAndMerge(cloned_image);
-  return 0;
-}
diff --git a/projects/opencv/filestorage_read_file_fuzzer.cc b/projects/opencv/filestorage_read_file_fuzzer.cc
deleted file mode 100644
index 03e06e6..0000000
--- a/projects/opencv/filestorage_read_file_fuzzer.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-
-#include <opencv2/opencv.hpp>
-#include "fuzzer_temp_file.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // Tests reading from a file using cv::FileStorage, which attempts to parse
-  // JSON, XML, and YAML, using the first few bytes of a file to determine which
-  // type to parse it as.
-  const FuzzerTemporaryFile temp_file(data, size);
-  cv::FileStorage storage;
-  try {
-    // TODO: enabling the following crashes right away.
-//    storage.open(temp_file.filename(), cv::FileStorage::READ);
-  } catch (cv::Exception e) {
-    // Do nothing.
-  }
-  return 0;
-}
diff --git a/projects/opencv/filestorage_read_filename_fuzzer.cc b/projects/opencv/filestorage_read_filename_fuzzer.cc
deleted file mode 100644
index 122f1db..0000000
--- a/projects/opencv/filestorage_read_filename_fuzzer.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-
-#include <opencv2/opencv.hpp>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // Tests filename parsing when opening cv::FileStorage for reading. The file
-  // doesn't actually exist, so any logic prediated on successfully opening the
-  // file will not be tested.
-  //
-  // Note that this may actually generate filenames that do exist. If so, this
-  // could result in some bugs being difficult to reproduce. If a case doesn't
-  // reproduce and looks like a real filename, this may be the cause.
-  cv::FileStorage storage;
-  try {
-    storage.open(std::string(reinterpret_cast<const char*>(data), size),
-                 cv::FileStorage::READ);
-  } catch (cv::Exception e) {
-    // Do nothing.
-  }
-  return 0;
-}
diff --git a/projects/opencv/filestorage_read_string_fuzzer.cc b/projects/opencv/filestorage_read_string_fuzzer.cc
deleted file mode 100644
index d9db91e..0000000
--- a/projects/opencv/filestorage_read_string_fuzzer.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-
-#include <opencv2/opencv.hpp>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // Tests reading from a string (instead of a file) using cv::FileStorage,
-  // which attempts to parse JSON, XML, and YAML, using the first few bytes of a
-  // string to determine which type to parse it as.
-  cv::FileStorage storage;
-  try {
-    storage.open(std::string(reinterpret_cast<const char*>(data), size),
-                 cv::FileStorage::READ);
-  } catch (cv::Exception e) {
-    // Do nothing.
-  }
-  return 0;
-}
diff --git a/projects/opencv/generateusergallerycollage_fuzzer.cc b/projects/opencv/generateusergallerycollage_fuzzer.cc
deleted file mode 100644
index 4d8432f..0000000
--- a/projects/opencv/generateusergallerycollage_fuzzer.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-#include <iosfwd>
-
-#include <opencv2/opencv.hpp>
-#include <fuzzer/FuzzedDataProvider.h>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  const int kMaxXResolution = 6000;
-  const int kMaxYResolution = 6000;
-  const int kMaxLineThickness = 10;
-  const double kMaxFontScale = 10.0;
-
-  FuzzedDataProvider fuzz_provider(data, size);
-
-  int fuzz_font_face = fuzz_provider.PickValueInArray(
-      {cv::FONT_HERSHEY_SIMPLEX, cv::FONT_HERSHEY_PLAIN,
-       cv::FONT_HERSHEY_DUPLEX, cv::FONT_HERSHEY_COMPLEX,
-       cv::FONT_HERSHEY_TRIPLEX, cv::FONT_HERSHEY_COMPLEX_SMALL,
-       cv::FONT_HERSHEY_SCRIPT_SIMPLEX, cv::FONT_HERSHEY_SCRIPT_COMPLEX});
-
-  int fuzz_linetype = fuzz_provider.PickValueInArray({
-      cv::LINE_8,     // 8-connected line
-      cv::LINE_4,     // 4-connected line
-      cv::LINE_AA     // anti-aliased line
-  });
-
-  double fuzz_font_scale =
-      fuzz_provider.ConsumeFloatingPointInRange(0.0, kMaxFontScale);
-  int fuzz_width =
-      fuzz_provider.ConsumeIntegralInRange<int>(0, kMaxXResolution);
-  int fuzz_height =
-      fuzz_provider.ConsumeIntegralInRange<int>(0, kMaxYResolution);
-  int fuzz_x_pos =
-      fuzz_provider.ConsumeIntegralInRange<int>(0, kMaxXResolution);
-  int fuzz_y_pos =
-      fuzz_provider.ConsumeIntegralInRange<int>(0, kMaxYResolution);
-  int fuzz_thickness =
-      fuzz_provider.ConsumeIntegralInRange<int>(0, kMaxLineThickness);
-
-  std::vector<uint8_t> color_scalar_vals;
-  std::vector<uint8_t> canvas_fill_scalar_vals;
-
-  // Ensure that all 3D vectors are fully populated,
-  // even if fuzz_provider is exhausted.
-  for (int i = 0; i < 3; i++) {
-    color_scalar_vals.insert(color_scalar_vals.begin(),
-                             fuzz_provider.ConsumeIntegralInRange(0, 255));
-    canvas_fill_scalar_vals.insert(
-        canvas_fill_scalar_vals.begin(),
-        fuzz_provider.ConsumeIntegralInRange(0, 255));
-  }
-
-  cv::Scalar fuzz_color(color_scalar_vals[0], color_scalar_vals[1],
-                        color_scalar_vals[2]);
-  cv::Scalar fuzz_canvas_fill(canvas_fill_scalar_vals[0],
-                              canvas_fill_scalar_vals[1],
-                              canvas_fill_scalar_vals[2]);
-
-  cv::Point fuzz_text_pos(fuzz_x_pos, fuzz_y_pos);
-  cv::Mat fuzz_canvas(fuzz_height, fuzz_width, CV_8UC3, fuzz_canvas_fill);
-
-  std::basic_string<char> fuzz_annotation =
-      fuzz_provider.ConsumeRemainingBytesAsString();
-
-  cv::putText(fuzz_canvas, fuzz_annotation, fuzz_text_pos, fuzz_font_face,
-              fuzz_font_scale, fuzz_color, fuzz_thickness, fuzz_linetype);
-  return 0;
-}
diff --git a/projects/opencv/imencode_fuzzer.cc b/projects/opencv/imencode_fuzzer.cc
deleted file mode 100644
index 735fcd7..0000000
--- a/projects/opencv/imencode_fuzzer.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2020 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-
-#include <opencv2/opencv.hpp>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  std::vector<uint8_t> image_data = {data, data + size};
-  cv::Mat data_matrix =
-      cv::Mat(1, image_data.size(), CV_8UC1, image_data.data());
-  try {
-    std::vector<uchar> buffer;
-    cv::imencode(".tiff", data_matrix, buffer);
-  } catch (cv::Exception e) {
-    // Do nothing.
-  }
-  return 0;
-}
diff --git a/projects/opencv/project.yaml b/projects/opencv/project.yaml
index e6b085c..38a24bc 100644
--- a/projects/opencv/project.yaml
+++ b/projects/opencv/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://opencv.org/"
-language: c++
 primary_contact: "garybradski@gmail.com"
 
 auto_ccs:
@@ -19,4 +18,3 @@
     - sundew
   imread_fuzzer:
     - sundew
-main_repo: 'https://github.com/opencv/opencv.git'
diff --git a/projects/opendnp3/Dockerfile b/projects/opendnp3/Dockerfile
index e602568..c619c9c 100644
--- a/projects/opendnp3/Dockerfile
+++ b/projects/opendnp3/Dockerfile
@@ -15,8 +15,16 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER info@automatak.com
 RUN apt-get update && apt-get install -y make wget tshark
-
+# The CMake version that is available on Ubuntu 16.04 is 3.5.1. OpenDNP3
+# needs CMake 3.8 or higher, because of the C# bindings. Therefore, we
+# manually install a modern CMake until the OSS Fuzz environment updates
+# to a more recent Ubuntu.
+# This section was taken from JSC Dockerfile
+RUN wget -q -O - https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.sh > /tmp/install_cmake.sh && \
+    cd /usr && bash /tmp/install_cmake.sh -- --skip-license && \
+    rm /tmp/install_cmake.sh
 RUN git clone --recursive -b release-2.x --depth 1 https://github.com/dnp3/opendnp3.git opendnp3
 WORKDIR opendnp3
 COPY build.sh $SRC/
diff --git a/projects/opendnp3/project.yaml b/projects/opendnp3/project.yaml
index 47c72b6..18f47f6 100644
--- a/projects/opendnp3/project.yaml
+++ b/projects/opendnp3/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.automatak.com/opendnp3/"
-language: c++
 primary_contact: "info@automatak.com"
 auto_ccs :
   - "p.antoine@catenacyber.fr"
@@ -9,4 +8,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/dnp3/opendnp3.git'
diff --git a/projects/openexr/Dockerfile b/projects/openexr/Dockerfile
deleted file mode 100644
index 2cc4945..0000000
--- a/projects/openexr/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool zlib1g-dev
-RUN git clone --depth 1 https://github.com/AcademySoftwareFoundation/openexr openexr
-WORKDIR openexr
-COPY build.sh $SRC/
diff --git a/projects/openexr/build.sh b/projects/openexr/build.sh
deleted file mode 100755
index 80a2e49..0000000
--- a/projects/openexr/build.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $WORK/
-
-CMAKE_SETTINGS=(
-  "-D BUILD_SHARED_LIBS=OFF"         # Build static libraries only
-  "-D PYILMBASE_ENABLE=OFF"          # Don't build Python support
-  "-D BUILD_TESTING=OFF"             # Or tests
-  "-D INSTALL_OPENEXR_EXAMPLES=OFF"  # Or examples
-  "-D OPENEXR_LIB_SUFFIX="           # Don't append the version number to library files
-  "-D ILMBASE_LIB_SUFFIX="
-)
-cmake $SRC/openexr ${CMAKE_SETTINGS[@]}
-make -j$(nproc)
-
-INCLUDES=(
-  "-I $SRC"
-  "-I $SRC/openexr/src/lib/OpenEXR"
-  "-I $SRC/openexr/src/lib/OpenEXRUtil"
-  "-I $WORK/cmake"
-)
-
-LIBS=(
-  "$WORK/src/lib/OpenEXRUtil/libOpenEXRUtil.a"
-  "$WORK/src/lib/OpenEXR/libOpenEXR.a"
-  "$WORK/src/lib/IlmThread/libIlmThread.a"
-  "$WORK/src/lib/Iex/libIex.a"
-  "$WORK/_deps/imath-build/src/Imath/libImath*.a"
-)
-
-for fuzzer in $SRC/openexr/src/test/OpenEXRFuzzTest/oss-fuzz/*_fuzzer.cc; do
-  fuzzer_basename=$(basename -s .cc $fuzzer)
-  $CXX $CXXFLAGS -std=c++11 -pthread ${INCLUDES[@]} $fuzzer $LIB_FUZZING_ENGINE ${LIBS[@]} -lz \
-    -o $OUT/$fuzzer_basename
-done
diff --git a/projects/openexr/project.yaml b/projects/openexr/project.yaml
deleted file mode 100644
index 521e767..0000000
--- a/projects/openexr/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://openexr.com"
-language: c++
-primary_contact: "twodeecoda@gmail.com"
-auto_ccs:
-  - "cbpilm@gmail.com"
-  - "security@openexr.org"
-main_repo: 'https://github.com/AcademySoftwareFoundation/openexr'
diff --git a/projects/openh264/Dockerfile b/projects/openh264/Dockerfile
index f7cc712..bb34782 100644
--- a/projects/openh264/Dockerfile
+++ b/projects/openh264/Dockerfile
@@ -15,7 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
+MAINTAINER twsmith@mozilla.com
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
     apt-get install -y libstdc++-5-dev libstdc++-5-dev:i386 nasm subversion
 RUN git clone --depth 1 https://github.com/cisco/openh264.git openh264
 WORKDIR openh264
diff --git a/projects/openh264/project.yaml b/projects/openh264/project.yaml
index 37ee8c9..b963a4b 100644
--- a/projects/openh264/project.yaml
+++ b/projects/openh264/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.openh264.org"
-language: c++
 primary_contact: "huili2@cisco.com"
 auto_ccs:
   - "guangwwa@cisco.com"
@@ -16,4 +15,3 @@
 architectures:
  - i386
  - x86_64
-main_repo: 'https://github.com/cisco/openh264.git'
diff --git a/projects/openjpeg/Dockerfile b/projects/openjpeg/Dockerfile
index 865a7e3..629a5cc 100644
--- a/projects/openjpeg/Dockerfile
+++ b/projects/openjpeg/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER antonin@gmail.com
 RUN apt-get update && apt-get install -y make cmake g++
 RUN git clone --depth 1 https://github.com/uclouvain/openjpeg openjpeg
 # openjpeg-data is used to create a seed corpus
diff --git a/projects/openjpeg/build.sh b/projects/openjpeg/build.sh
index 1bc2da0..cd96cf7 100755
--- a/projects/openjpeg/build.sh
+++ b/projects/openjpeg/build.sh
@@ -17,7 +17,7 @@
 
 mkdir build
 cd build
-cmake -DCMAKE_BUILD_TYPE=Release ..
+cmake ..
 make clean -s
 make -j$(nproc) -s
 cd ..
diff --git a/projects/openjpeg/project.yaml b/projects/openjpeg/project.yaml
index c9d944f..dfd8eb8 100644
--- a/projects/openjpeg/project.yaml
+++ b/projects/openjpeg/project.yaml
@@ -1,16 +1,12 @@
 homepage: "http://www.openjpeg.org/"
-language: c++
 primary_contact: "antonin@gmail.com"
 auto_ccs:
   - "even.rouault@gmail.com"
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
-  - memory
   - dataflow
   - undefined
-main_repo: 'https://github.com/uclouvain/openjpeg'
diff --git a/projects/opensc/Dockerfile b/projects/opensc/Dockerfile
index 4393c71..eb8e30e 100644
--- a/projects/opensc/Dockerfile
+++ b/projects/opensc/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER frankmorgner@gmail.com
 RUN apt-get update && apt-get install -y pcscd libccid libpcsclite-dev libssl-dev libreadline-dev autoconf automake build-essential docbook-xsl xsltproc libtool pkg-config zlib1g-dev
 RUN git clone --depth 1 --single-branch --branch master https://github.com/OpenSC/OpenSC opensc
 WORKDIR opensc
diff --git a/projects/opensc/build.sh b/projects/opensc/build.sh
index 84ab497..212d34a 100755
--- a/projects/opensc/build.sh
+++ b/projects/opensc/build.sh
@@ -17,15 +17,12 @@
 
 ./bootstrap
 # FIXME FUZZING_LIBS="$LIB_FUZZING_ENGINE" fails with some missing C++ library, I don't know how to fix this
-./configure --disable-optimization --disable-shared --disable-pcsc --enable-ctapi --enable-fuzzing FUZZING_LIBS="$LIB_FUZZING_ENGINE"
+./configure --disable-shared --disable-pcsc --enable-ctapi --enable-fuzzing FUZZING_LIBS="$LIB_FUZZING_ENGINE"
 make -j4
 
-fuzzerFiles=$(find $SRC/opensc/src/tests/fuzzing/ -name "fuzz_*.c")
+cp src/tests/fuzzing/fuzz_asn1_print $OUT
+cp src/tests/fuzzing/fuzz_asn1_sig_value $OUT
+cp src/tests/fuzzing/fuzz_pkcs15_decode $OUT
+cp src/tests/fuzzing/fuzz_pkcs15_reader $OUT
 
-for F in $fuzzerFiles; do
-    fuzzerName=$(basename $F .c)
-    cp "$SRC/opensc/src/tests/fuzzing/$fuzzerName" $OUT
-    if [ -d "$SRC/opensc/src/tests/fuzzing/corpus/${fuzzerName}" ]; then
-        zip -j $OUT/${fuzzerName}_seed_corpus.zip $SRC/opensc/src/tests/fuzzing/corpus/${fuzzerName}/*
-    fi
-done
+#cp src/tests/fuzzing/fuzz_pkcs15_reader.options $OUT
diff --git a/projects/opensc/project.yaml b/projects/opensc/project.yaml
index 79d794e..f060500 100644
--- a/projects/opensc/project.yaml
+++ b/projects/opensc/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/OpenSC/OpenSC/"
-language: c++
 primary_contact: "frankmorgner@gmail.com"
 auto_ccs:
   - "martin.paljak@gmail.com"
@@ -8,4 +7,6 @@
   - "andreas.schwier@cardcontact.de"
   - "deengert@gmail.com"
   - "jakuje@gmail.com"
-main_repo: 'https://github.com/OpenSC/OpenSC'
+fuzzing_engines:
+  - libfuzzer
+  - honggfuzz
diff --git a/projects/openssh/Dockerfile b/projects/openssh/Dockerfile
index 929d57c..dad44cd 100644
--- a/projects/openssh/Dockerfile
+++ b/projects/openssh/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER djm@mindrot.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN apt-get install -y libz-dev libssl1.0.0 libssl-dev libedit-dev zip
 RUN git clone --depth 1 https://github.com/openssh/openssh-portable openssh
diff --git a/projects/openssh/build.sh b/projects/openssh/build.sh
index 49d1381..6c7e9e2 100755
--- a/projects/openssh/build.sh
+++ b/projects/openssh/build.sh
@@ -15,12 +15,6 @@
 #
 ################################################################################
 
-# Enable null cipher
-sed -i 's/#define CFLAG_INTERNAL.*/#define CFLAG_INTERNAL 0/' cipher.c
-
-# Turn off agent unlock password failure delays
-sed -i 's|\(usleep.*\)|// \1|' ssh-agent.c
-
 # Build project
 autoreconf
 env
@@ -31,50 +25,34 @@
 make -j$(nproc) all
 
 # Build fuzzers
-EXTRA_CFLAGS="-DCIPHER_NONE_AVAIL=1"
 STATIC_CRYPTO="-Wl,-Bstatic -lcrypto -Wl,-Bdynamic"
 
-SK_NULL=ssh-sk-null.o
-SK_DUMMY=sk-dummy.o
+COMMON=ssh-sk-null.o
 
-$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
-	regress/misc/fuzz-harness/ssh-sk-null.cc -o ssh-sk-null.o
-$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
-	-DSK_DUMMY_INTEGRATE=1 regress/misc/sk-dummy/sk-dummy.c -o sk-dummy.o
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
+	regress/misc/fuzz-harness/ssh-sk-null.cc -c -o ssh-sk-null.o
 
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/pubkey_fuzz.cc -o $OUT/pubkey_fuzz \
-	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/privkey_fuzz.cc -o $OUT/privkey_fuzz \
-	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/sig_fuzz.cc -o $OUT/sig_fuzz \
-	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/authopt_fuzz.cc -o $OUT/authopt_fuzz \
-	auth-options.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
+	auth-options.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
 	$LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/sshsig_fuzz.cc -o $OUT/sshsig_fuzz \
-	sshsig.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
+	sshsig.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
 	$LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
+$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
 	regress/misc/fuzz-harness/sshsigopt_fuzz.cc -o $OUT/sshsigopt_fuzz \
-	sshsig.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
+	sshsig.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
 	$LIB_FUZZING_ENGINE
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
-	regress/misc/fuzz-harness/kex_fuzz.cc -o $OUT/kex_fuzz \
-	-lssh -lopenbsd-compat -lz $SK_NULL $STATIC_CRYPTO \
-	$LIB_FUZZING_ENGINE
-
-$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
-	regress/misc/fuzz-harness/agent_fuzz_helper.c -o agent_fuzz_helper.o
-$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c -DENABLE_SK_INTERNAL=1 ssh-sk.c -o ssh-sk.o
-$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
-	regress/misc/fuzz-harness/agent_fuzz.cc -o $OUT/agent_fuzz \
-	$SK_DUMMY agent_fuzz_helper.o ssh-sk.o -lssh -lopenbsd-compat -lz \
-	$STATIC_CRYPTO $LIB_FUZZING_ENGINE
 
 # Prepare seed corpora
 CASES="$SRC/openssh-fuzz-cases"
@@ -84,5 +62,3 @@
 (set -e ; cd ${CASES}/authopt ; zip -r $OUT/authopt_fuzz_seed_corpus.zip .)
 (set -e ; cd ${CASES}/sshsig ; zip -r $OUT/sshsig_fuzz_seed_corpus.zip .)
 (set -e ; cd ${CASES}/sshsigopt ; zip -r $OUT/sshsigopt_fuzz_seed_corpus.zip .)
-(set -e ; cd ${CASES}/kex ; zip -r $OUT/kex_fuzz_seed_corpus.zip .)
-(set -e ; cd ${CASES}/agent ; zip -r $OUT/agent_fuzz_seed_corpus.zip .)
diff --git a/projects/openssh/project.yaml b/projects/openssh/project.yaml
index 53ac442..814eefb 100644
--- a/projects/openssh/project.yaml
+++ b/projects/openssh/project.yaml
@@ -1,7 +1,5 @@
 homepage: https://www.openssh.com/
-language: c++
 primary_contact: "djm@mindrot.org"
 auto_ccs:
         - "dtucker@dtucker.net.au"
         - "djm@google.com"
-main_repo: 'https://github.com/openssh/openssh-portable'
diff --git a/projects/openssl/Dockerfile b/projects/openssl/Dockerfile
index ae28436..7dd8360 100644
--- a/projects/openssl/Dockerfile
+++ b/projects/openssl/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kurt@roeckx.be
 RUN apt-get update && apt-get install -y make
 RUN git clone --depth 1 https://github.com/openssl/openssl.git
 WORKDIR openssl
diff --git a/projects/openssl/project.yaml b/projects/openssl/project.yaml
index d0b35c6..348bc82 100644
--- a/projects/openssl/project.yaml
+++ b/projects/openssl/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.openssl.org/"
-language: c++
 primary_contact: "kurt@roeckx.be"
 auto_ccs: 
  - "openssl-security@openssl.org"
@@ -11,4 +10,3 @@
  - memory:
     experimental: True
  - undefined
-main_repo: 'https://github.com/openssl/openssl.git'
diff --git a/projects/openthread/Dockerfile b/projects/openthread/Dockerfile
index 4ef0e6e..829cadc 100644
--- a/projects/openthread/Dockerfile
+++ b/projects/openthread/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonhui@nestlabs.com
 
-RUN apt-get update && apt-get install -y cmake ninja-build
+RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/openthread/openthread
 
 WORKDIR openthread
diff --git a/projects/openthread/build.sh b/projects/openthread/build.sh
index 0195084..3cd7851 100755
--- a/projects/openthread/build.sh
+++ b/projects/openthread/build.sh
@@ -15,4 +15,53 @@
 #
 ################################################################################
 
-bash tests/fuzz/oss-fuzz-build
+./bootstrap
+
+export CPPFLAGS="                                     \
+    -DOPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1         \
+    -DOPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1        \
+    -DOPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE=1      \
+    -DOPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE=1      \
+    -DOPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE=1    \
+    -DOPENTHREAD_CONFIG_COAP_API_ENABLE=1             \
+    -DOPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE=1      \
+    -DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1         \
+    -DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1         \
+    -DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1         \
+    -DOPENTHREAD_CONFIG_DIAG_ENABLE=1                 \
+    -DOPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1           \
+    -DOPENTHREAD_CONFIG_ECDSA_ENABLE=1                \
+    -DOPENTHREAD_CONFIG_LEGACY_ENABLE=1               \
+    -DOPENTHREAD_CONFIG_JAM_DETECTION_ENABLE=1        \
+    -DOPENTHREAD_CONFIG_JOINER_ENABLE=1               \
+    -DOPENTHREAD_CONFIG_LINK_RAW_ENABLE=1             \
+    -DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1           \
+    -DOPENTHREAD_CONFIG_NCP_UART_ENABLE=1             \
+    -DOPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE=1     \
+    -DOPENTHREAD_CONFIG_SNTP_CLIENT_ENABLE=1          \
+    -DOPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE=1  \
+    -DOPENTHREAD_CONFIG_TMF_NETWORK_DIAG_MTD_ENABLE=1 \
+    -DOPENTHREAD_CONFIG_UDP_FORWARD_ENABLE=1"
+
+./configure                             \
+    --enable-fuzz-targets               \
+    --enable-cli                        \
+    --enable-ftd                        \
+    --enable-joiner                     \
+    --enable-ncp                        \
+    --disable-docs
+
+make -j$(nproc)
+
+find . -name '*-fuzzer' -exec cp -v '{}' $OUT ';'
+find . -name '*-fuzzer.dict' -exec cp -v '{}' $OUT ';'
+find . -name '*-fuzzer.options' -exec cp -v '{}' $OUT ';'
+
+fuzzers=$(find tests/fuzz -name "*-fuzzer")
+for f in $fuzzers; do
+    fuzzer=$(basename $f -fuzzer)
+
+    if [ -d "tests/fuzz/corpora/${fuzzer}" ]; then
+	zip -j $OUT/$(basename $f)_seed_corpus.zip tests/fuzz/corpora/${fuzzer}/*
+    fi
+done
diff --git a/projects/openthread/project.yaml b/projects/openthread/project.yaml
index c772d3b..5709f4b 100644
--- a/projects/openthread/project.yaml
+++ b/projects/openthread/project.yaml
@@ -1,12 +1,11 @@
 homepage: "https://github.com/openthread/openthread"
-language: c++
 primary_contact: "jonhui@google.com"
 fuzzing_engines:
   - libfuzzer
   - afl
   - honggfuzz
+  - dataflow
 sanitizers:
   - address
   - undefined
   - dataflow
-main_repo: 'https://github.com/openthread/openthread'
diff --git a/projects/openvswitch/Dockerfile b/projects/openvswitch/Dockerfile
index f7c149f..b7da141 100644
--- a/projects/openvswitch/Dockerfile
+++ b/projects/openvswitch/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER blp@ovn.org
 RUN apt-get update && apt-get install -y make autoconf automake \
     libtool python python3-pip \
     libz-dev libssl-dev libssl1.0.0 wget
diff --git a/projects/openvswitch/project.yaml b/projects/openvswitch/project.yaml
index 4ee3e96..9cfd31b 100644
--- a/projects/openvswitch/project.yaml
+++ b/projects/openvswitch/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.openvswitch.org"
-language: c++
 primary_contact: "blp@ovn.org"
 auto_ccs:
   - "jpettit@ovn.org"
@@ -7,10 +6,7 @@
   - "pkusunyifeng@gmail.com"
   - "bshas3@gmail.com"
   - "cpp.code.lv@gmail.com"
-  - "u9012063@gmail.com"
-  - "ilya.maximets@gmail.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/openvswitch/ovs.git'
diff --git a/projects/opus/Dockerfile b/projects/opus/Dockerfile
index 717b882..bba1237 100644
--- a/projects/opus/Dockerfile
+++ b/projects/opus/Dockerfile
@@ -15,10 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER flim@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool wget
 
-RUN git clone https://gitlab.xiph.org/xiph/opus.git
+RUN git clone https://git.xiph.org/opus.git
 RUN wget https://opus-codec.org/static/testvectors/opus_testvectors.tar.gz
 WORKDIR opus
 COPY build.sh $SRC/
-COPY *.c tests/
diff --git a/projects/opus/build.sh b/projects/opus/build.sh
index 8a495f9..ae86054 100644
--- a/projects/opus/build.sh
+++ b/projects/opus/build.sh
@@ -16,15 +16,11 @@
 ##############################################################################
 set -eu
 
-FUZZERS="opus_decode_fuzzer opus_multi_fuzzer"
+FUZZERS="opus_decode_fuzzer"
 BUILDS=(floating fixed)
 
 tar xvf $SRC/opus_testvectors.tar.gz
 
-if [[ $CFLAGS = *sanitize=memory* ]]; then
-  CFLAGS+=" -D_FORTIFY_SOURCE=0"
-fi
-
 ./autogen.sh
 
 for build in "${BUILDS[@]}"; do
@@ -37,8 +33,8 @@
       ;;
   esac
 
-  ./configure $extra_args --enable-static --disable-shared --disable-doc \
-    --enable-assertions
+  ./configure $extra_args --enable-static --disable-shared --disable-doc
+  make clean
   make -j$(nproc)
 
   # Build all fuzzers
@@ -46,7 +42,6 @@
     $CC $CFLAGS -c -Iinclude \
       tests/$fuzzer.c \
       -o $fuzzer.o
-
     $CXX $CXXFLAGS \
       $fuzzer.o \
       -o $OUT/${fuzzer}_${build} \
@@ -54,8 +49,7 @@
 
     # Setup the .options and test corpus zip files using the corresponding
     # fuzzer's name
-    [ -f tests/$fuzzer.options ] \
-        && cp tests/$fuzzer.options $OUT/${fuzzer}_${build}.options
+    cp tests/$fuzzer.options $OUT/${fuzzer}_${build}.options
     zip -r $OUT/${fuzzer}_${build}_seed_corpus.zip opus_testvectors/
   done
 done
diff --git a/projects/opus/opus_multi_fuzzer.c b/projects/opus/opus_multi_fuzzer.c
deleted file mode 100644
index de63bfb..0000000
--- a/projects/opus/opus_multi_fuzzer.c
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdlib.h>
-
-#include "opus.h"
-#include "opus_multistream.h"
-
-struct TocInfo {
-  opus_int32 frequency;  // in [Hz*1000]
-  int channels;          // number of channels; either 1 or 2
-  int frame_len_x2;      // in [ms*2]. x2 is to avoid float value of 2.5 ms
-};
-
-void extractTocInfo(const uint8_t toc, struct TocInfo *const info) {
-  const int frame_lengths_x2[3][4] = {
-    {20, 40, 80, 120},
-    {20, 40, 20, 40},
-    {5, 10, 20, 40}
-  };
-
-  info->channels = toc & 4 ? 2 : 1;
-
-  const uint8_t config = toc >> 3;
-
-  int len_index;
-  if (config < 12) {
-    len_index = 0;
-  } else if (config < 16) {
-    len_index = 1;
-  } else {
-    len_index = 2;
-  }
-  info->frame_len_x2 = frame_lengths_x2[len_index][config & 3];
-
-  switch (config >> 2) {
-    case 0: info->frequency = 8; break;
-    case 1: info->frequency = 12; break;
-    case 2: info->frequency = 16; break;
-    case 3: info->frequency = (config < 14) ? 24 : 48; break;
-    case 4: info->frequency = 8; break;
-    case 5: info->frequency = 16; break;
-    case 6: info->frequency = 24; break;
-    default: info->frequency = 48; break;
-  }
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  if (size < 3 || size > 1000000) return 0;
-
-  // Using last byte as a number of streams (instead of rand_r). Each stream
-  // should be at least 3 bytes long hence divmod.
-  int streams = 1 + data[size - 1] % (size / 3);
-  if (streams > 255) streams = 255;
-  unsigned char *mapping = (unsigned char*) malloc(sizeof(unsigned char)*streams);
-  if (!mapping) return 0;
-
-  for (int i = 0; i < streams; ++i) {
-    mapping[i] = i;
-  }
-
-  struct TocInfo info;
-  extractTocInfo(*data, &info);
-
-  int error = 0;
-  OpusMSDecoder *const decoder = opus_multistream_decoder_create(
-      info.frequency * 1000, streams, streams, 0, mapping, &error);
-
-  if (!decoder || error) return 0;
-
-  const int frame_size = (info.frequency * info.frame_len_x2) / 2;
-  opus_int16 *pcm = (opus_int16*) malloc(sizeof(opus_int16)*frame_size*streams);
-  if (!pcm) goto exit;
-
-  // opus_decode wants us to use its return value, but we don't really care.
-  const int foo =
-      opus_multistream_decode(decoder, data, size, pcm, frame_size, 0);
-  (void)foo;
-
-  opus_multistream_decoder_destroy(decoder);
-
-  free(pcm);
-
-exit:
-  free(mapping);
-  return 0;
-}
diff --git a/projects/opus/project.yaml b/projects/opus/project.yaml
index de5d7e3..bfadfe3 100644
--- a/projects/opus/project.yaml
+++ b/projects/opus/project.yaml
@@ -1,18 +1,10 @@
 homepage: "https://opus-codec.org/"
-language: c++
 primary_contact: "jmvalin@jmvalin.ca"
 auto_ccs:
   - "flim@google.com"
 vendor_ccs:
   - "twsmith@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://gitlab.xiph.org/xiph/opus.git'
+  - undefined
diff --git a/projects/opusfile/Dockerfile b/projects/opusfile/Dockerfile
deleted file mode 100644
index 452f301..0000000
--- a/projects/opusfile/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf automake git libogg0 libogg-dev libopus0 libopus-dev libssl-dev libtool make pkg-config
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/opusfile
-WORKDIR opusfile
-COPY build.sh *.c $SRC/
diff --git a/projects/opusfile/build.sh b/projects/opusfile/build.sh
deleted file mode 100755
index 038372b..0000000
--- a/projects/opusfile/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./autogen.sh
-./configure --enable-static --disable-shared --disable-doc --enable-assertions
-make -j$(nproc)
-ldconfig
-
-for fuzzer in $SRC/*_fuzzer.c; do
-  fuzzer_basename=$(basename -s .c $fuzzer)
-
-  $CC $CFLAGS -c \
-      -I $SRC -I /usr/include/opus -I /usr/include/ogg \
-      $fuzzer -o ${fuzzer_basename}.o
-
-  $CXX $CXXFLAGS \
-      ${fuzzer_basename}.o \
-      -o $OUT/${fuzzer_basename} $LIB_FUZZING_ENGINE \
-      $SRC/opusfile/.libs/libopusfile.a -l:libopus.a -l:libogg.a
-done
diff --git a/projects/opusfile/opusfile_fuzzer.c b/projects/opusfile/opusfile_fuzzer.c
deleted file mode 100644
index db162aa..0000000
--- a/projects/opusfile/opusfile_fuzzer.c
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <errno.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "opusfile/config.h"
-#include "opusfile/include/opusfile.h"
-
-// Opusfile fuzzing wrapper to help with automated fuzz testing. It's based on
-// https://github.com/xiph/opusfile/blob/master/examples/opusfile_example.c
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  int ret, tmp;
-  OggOpusFile *of = op_open_memory(data, size, &ret);
-  if (!of)
-    return 0;
-
-  op_link_count(of);
-
-  int link_index = -1;
-  op_pcm_total(of, link_index);
-  op_raw_total(of, link_index);
-  op_pcm_tell(of);
-  op_raw_tell(of);
-
-  ogg_int64_t total_sample_count = 0;
-  const int pcm_size = 120 * 48 * 2; // 120ms/ch@48kHz is recommended
-  opus_int16 pcm[pcm_size];
-  for (;;) {
-    ret = op_read_stereo(of, pcm, pcm_size);
-    if (ret < 0) {
-      break;
-    }
-
-    if (op_current_link(of) != link_index) {
-      link_index = op_current_link(of);
-      op_pcm_total(of, link_index);
-      op_raw_total(of, link_index);
-      op_pcm_tell(of);
-      op_raw_tell(of);
-      op_bitrate_instant(of);
-      tmp = op_head(of, link_index)->version;
-
-      const OpusTags *tags = op_tags(of, link_index);
-      for (int i = 0; i < tags->comments; ++i) {
-        // Note: The compare also touches memory allocated for user_comments[i].
-        // This is a desired side effect and should be kept even if this
-        // comparison is removed.
-        if (opus_tagncompare("METADATA_BLOCK_PICTURE", 22,
-                             tags->user_comments[i]) == 0) {
-          OpusPictureTag pic;
-          if (opus_picture_tag_parse(&pic, tags->user_comments[i]) >= 0) {
-            opus_picture_tag_clear(&pic);
-          }
-        }
-      }
-
-      if (tags->vendor) {
-        tmp = tags->vendor[0];
-      }
-
-      int binary_suffix_len;
-      opus_tags_get_binary_suffix(tags, &binary_suffix_len);
-    }
-
-    if (ret == 0) {
-      break;
-    }
-
-    total_sample_count += ret;
-  }
-
-  if (total_sample_count > 0) {
-    // Try random-access PCM reads. The number of tests is arbitrary and the
-    // offset is designed to be pseudo-random, but deterministic - this is
-    // implemented using Lehmer RNG with a minor hack that probably breaks some
-    // properties of the RNG (but that is acceptable).
-    ogg_int64_t rng_seed = 1307832949LL;
-    for (int i = 0; i < 32; ++i) {
-      // Derive the next deterministic offset to test and iterate the RNG.
-      rng_seed = (rng_seed * 279470273LL);
-      const ogg_int64_t offset = rng_seed % total_sample_count;
-      rng_seed = rng_seed % 4294967291LL;
-
-      if (op_pcm_seek(of, offset) == 0) {
-        tmp = op_read_stereo(of, pcm, pcm_size);
-      }
-    }
-  }
-
-  op_free(of);
-  return 0;
-}
diff --git a/projects/opusfile/project.yaml b/projects/opusfile/project.yaml
deleted file mode 100644
index 604d127..0000000
--- a/projects/opusfile/project.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-homepage: "https://opus-codec.org/"
-language: c
-primary_contact: "jmvalin@jmvalin.ca"
diff --git a/projects/orbit/Dockerfile b/projects/orbit/Dockerfile
deleted file mode 100644
index e4f01c8..0000000
--- a/projects/orbit/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y m4 libglu1-mesa-dev mesa-common-dev \
-  libxmu-dev libxi-dev pkg-config libxxf86vm-dev patchelf
-
-ADD https://github.com/google/orbit/archive/main.tar.gz $SRC/
-RUN mkdir -p $SRC/orbit && tar -xzf $SRC/main.tar.gz \
-  -C $SRC/orbit/ --strip-components 1; rm -f $SRC/main.tar.gz
-WORKDIR $SRC/orbit
-COPY build.sh $SRC/
-
-# That's a hack. The service needs to have a more recent kernel than what the
-# container provides. But this code is not going to be called from the fuzz-
-# tests, so we should be fine here.
-ADD https://raw.githubusercontent.com/torvalds/linux/v5.7/include/uapi/linux/perf_event.h /usr/include/linux/perf_event.h
diff --git a/projects/orbit/build.sh b/projects/orbit/build.sh
deleted file mode 100755
index a90185f..0000000
--- a/projects/orbit/build.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-#builds project
-export PATH="$HOME/.local/bin:$PATH"
-$SRC/orbit/bootstrap-orbit.sh --force-public-remotes --dont-compile --ignore-system-requirements
-
-conan profile new default --detect
-conan profile update settings.compiler.libcxx=libc++ default
-conan profile update settings.compiler.fpo=False default
-conan profile update settings.compiler.address_sanitizer=True default
-conan profile update settings.compiler.fuzzer_sanitizer=True default
-
-sed -i 's/\[settings\]/include(libfuzzer_base)\n\n[settings]/' ~/.conan/profiles/default
-echo "CFLAGS=\$BASE_CFLAGS" >> ~/.conan/profiles/default
-echo "CXXFLAGS=\$BASE_CXXFLAGS" >> ~/.conan/profiles/default
-echo "LDFLAGS=\$BASE_LDFLAGS" >> ~/.conan/profiles/default
-echo "OrbitProfiler:CFLAGS=\$BASE_CFLAGS $CFLAGS" >> ~/.conan/profiles/default
-echo "OrbitProfiler:CXXFLAGS=\$BASE_CFLAGS $CXXFLAGS" >> ~/.conan/profiles/default
-
-# The following two lines is what should theoretically be correct. The workaround + explanation follows
-# echo "llvm:CFLAGS=\$BASE_CFLAGS $CFLAGS" >> ~/.conan/profiles/default
-# echo "llvm:CXXFLAGS=\$BASE_CXXFLAGS $CXXFLAGS" >> ~/.conan/profiles/default
-
-# The $CFLAGS and $CXXFLAGS contains "-fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link"
-# when this script is called. Since llvm currently cannot be build with address sanitizers, 
-# the flags are set manually here.
-echo "llvm:CFLAGS=\$BASE_CFLAGS -O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" >> ~/.conan/profiles/default
-echo "llvm:CXXFLAGS=\$BASE_CXXFLAGS -O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -stdlib=libc++" >> ~/.conan/profiles/default
-
-$SRC/orbit/build.sh default
-
-function copy_fuzzer {
-  mkdir -p "$OUT/lib"
-  cp -v "$1" "$OUT/"
-  patchelf --set-rpath '$ORIGIN/lib' "$OUT/$(basename "$1")"
-
-  ldd "$1" | grep '=>' | cut -d ' ' -f 3 | while read lib; do
-    if [[ -f $lib ]]; then
-      cp -v "$lib" "$OUT/lib/"
-      patchelf --set-rpath '$ORIGIN' "$OUT/lib/$(basename "$lib")"
-    fi
-  done
-}
-
-find $SRC/orbit/build_default/bin -name \*Fuzzer | while read fuzzer; do
-  copy_fuzzer "$fuzzer"
-done
diff --git a/projects/orbit/project.yaml b/projects/orbit/project.yaml
deleted file mode 100644
index 244b4b4..0000000
--- a/projects/orbit/project.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-homepage: "https://github.com/google/orbit"
-language: c++
-primary_contact: "hebecker@google.com"
-auto_ccs:
-  - "orbitprofiler-eng+fuzztests@google.com"
-  - "antonrohr@google.com"
-  - "dfenner@google.com"
-  - "dimitry@google.com"
-  - "dpallotti@google.com"
-  - "freichl@google.com"
-  - "irinashkviro@google.com"
-  - "karupayun@google.com"
-  - "kuebler@google.com"
-  - "pierric@google.com"
-  - "wotzlaw@google.com"
-
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/osquery/Dockerfile b/projects/osquery/Dockerfile
index c1c8ff5..58e73df 100755
--- a/projects/osquery/Dockerfile
+++ b/projects/osquery/Dockerfile
@@ -15,9 +15,27 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER theopolis@osquery.io
 RUN apt-get update
 RUN apt-get install -y --no-install-recommends python python3 bison flex make wget xz-utils libunwind-dev
 
+# Install specific git version.
+RUN export GIT_VER=2.21.0 \
+ && apt-get install -y libz-dev gettext nano libssl-dev autoconf libcurl4-openssl-dev \
+ && wget https://github.com/git/git/archive/v$GIT_VER.tar.gz \
+ && tar xf v$GIT_VER.tar.gz \
+ && cd git-$GIT_VER/ \
+ && make configure \
+ && ./configure --with-openssl \
+ && make -j4 install \
+ && cd .. \
+ && rm -rf v$GIT_VER.tar.gz git-$GIT_VER
+
+# Installer newer cmake
+RUN wget -q https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-Linux-x86_64.tar.gz \
+ && tar xf cmake-3.14.6-Linux-x86_64.tar.gz -C /usr/local --strip 1 \
+ && rm cmake-3.14.6-Linux-x86_64.tar.gz
+
 RUN git clone --depth 1 https://github.com/osquery/osquery osquery
 
 WORKDIR osquery
diff --git a/projects/osquery/build.sh b/projects/osquery/build.sh
index 6b4ae9b..b5b31d6 100755
--- a/projects/osquery/build.sh
+++ b/projects/osquery/build.sh
@@ -25,16 +25,17 @@
 
 pushd "${SRC}/${PROJECT}"
 
+# Prefer shared libs
+sed -i 's/CMAKE_LINK_SEARCH_START_STATIC ON/CMAKE_LINK_SEARCH_START_STATIC OFF/g' cmake/flags.cmake
+sed -i 's/CMAKE_LINK_SEARCH_END_STATIC ON/CMAKE_LINK_SEARCH_END_STATIC OFF/g' cmake/flags.cmake
+
 mkdir build && pushd build
 
 cmake \
   -DOSQUERY_VERSION:string=0.0.0-fuzz \
   -DOSQUERY_ENABLE_ADDRESS_SANITIZER:BOOL=ON \
-  -DOSQUERY_BUILD_FUZZERS:BOOL=ON \
-  -DOSQUERY_IGNORE_CMAKE_MAX_VERSION_CHECK:BOOL=ON \
-  -DOSQUERY_BUILD_AWS:BOOL=OFF \
+  -DOSQUERY_ENABLE_FUZZER_SANITIZERS:BOOL=ON \
   ..
-
 cmake \
   "-DCMAKE_EXE_LINKER_FLAGS=${LIB_FUZZING_ENGINE} -Wl,-rpath,'\$ORIGIN/lib'" \
   ..
diff --git a/projects/osquery/project.yaml b/projects/osquery/project.yaml
index d0944c1..db5f8bb 100644
--- a/projects/osquery/project.yaml
+++ b/projects/osquery/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://osquery.io"
-language: c++
 primary_contact: "osquery@osquery.io"
 auto_ccs:
   - "theopolis@osquery.io"
@@ -15,5 +14,3 @@
  - address
 fuzzing_engines:
  - libfuzzer
- - afl
-main_repo: 'https://github.com/osquery/osquery'
diff --git a/projects/ots/Dockerfile b/projects/ots/Dockerfile
index 6ab4d86..d86342c 100644
--- a/projects/ots/Dockerfile
+++ b/projects/ots/Dockerfile
@@ -15,8 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y python3-pip && \
-    pip3 install meson==0.55.2 ninja
+MAINTAINER mmoroz@chromium.org
+RUN apt-get update && apt-get install -y python3-pip pkg-config zlib1g-dev && \
+    pip3 install meson==0.52.0 ninja
 RUN git clone --depth 1 https://github.com/khaledhosny/ots.git
 WORKDIR ots
+RUN git submodule update --init --recursive
 COPY build.sh ots-fuzzer.* $SRC/
diff --git a/projects/ots/build.sh b/projects/ots/build.sh
index 8627188..27ead8f 100755
--- a/projects/ots/build.sh
+++ b/projects/ots/build.sh
@@ -23,8 +23,7 @@
 mkdir -p $build
 
 # Configure the project.
-meson -Dfuzzer_ldflags="$(echo $LIB_FUZZING_ENGINE)" \
-      --wrap-mode=forcefallback \
+meson -Dfuzzer_ldflags=$LIB_FUZZING_ENGINE \
       $build \
    || (cat build/meson-logs/meson-log.txt && false)
 
diff --git a/projects/ots/project.yaml b/projects/ots/project.yaml
index 559eed3..b70de65 100644
--- a/projects/ots/project.yaml
+++ b/projects/ots/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/khaledhosny/ots"
-language: c++
 primary_contact: "dr.khaled.hosny@gmail.com"
 auto_ccs:
   - "kevin899@gmail.com"
@@ -8,16 +7,3 @@
   - "jmuizelaar@mozilla.com"
   - "lsalzman@mozilla.com"
   - "twsmith@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/khaledhosny/ots.git'
diff --git a/projects/p11-kit/Dockerfile b/projects/p11-kit/Dockerfile
deleted file mode 100644
index 5ae7858..0000000
--- a/projects/p11-kit/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config libtasn1-6-dev libffi-dev
-RUN echo deb http://archive.ubuntu.com/ubuntu/ bionic main >> /etc/apt/sources.list
-RUN apt-get update && apt-get install -y -t bionic gettext autopoint
-RUN git clone --depth 1 https://github.com/p11-glue/p11-kit.git p11-kit
-WORKDIR p11-kit
-COPY build.sh $SRC/
diff --git a/projects/p11-kit/build.sh b/projects/p11-kit/build.sh
deleted file mode 100755
index c15f9d5..0000000
--- a/projects/p11-kit/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./autogen.sh
-make -j$(nproc) oss-fuzz
-
-cd fuzz
-for dir in *.in; do
-    fuzzer=$(basename $dir .in)_fuzzer
-    zip -rj "$OUT/${fuzzer}_seed_corpus.zip" "${dir}/"
-done
diff --git a/projects/p11-kit/project.yaml b/projects/p11-kit/project.yaml
deleted file mode 100644
index 55139b8..0000000
--- a/projects/p11-kit/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: https://p11-glue.github.io/p11-glue/p11-kit.html
-main_repo: https://github.com/p11-glue/p11-kit
-language: c
-primary_contact: "daiki.ueno@gmail.com"
diff --git a/projects/p9/Dockerfile b/projects/p9/Dockerfile
deleted file mode 100644
index fbbe65a..0000000
--- a/projects/p9/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-MAINTAINER s@sevki.org
-
-RUN go get -v -u github.com/hugelgupf/p9/...
-
-WORKDIR /root/go/src/github.com/hugelgupf/p9
-
-COPY build.sh $SRC/
diff --git a/projects/p9/build.sh b/projects/p9/build.sh
deleted file mode 100644
index 9e194aa..0000000
--- a/projects/p9/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-compile_go_fuzzer github.com/hugelgupf/p9/p9 Fuzz p9_fuzzer
diff --git a/projects/p9/project.yaml b/projects/p9/project.yaml
deleted file mode 100644
index bae55cb..0000000
--- a/projects/p9/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/hugelgupf/p9"
-language: go
-primary_contact: "harvey@googlegroups.com"
-auto_ccs:
-  - "s@sevki.org"
-  - "c@chrisko.ch"
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/hugelgupf/p9'
diff --git a/projects/pcapplusplus/Dockerfile b/projects/pcapplusplus/Dockerfile
deleted file mode 100644
index 8d93b53..0000000
--- a/projects/pcapplusplus/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y gcc g++ make cmake flex bison
-RUN git clone https://github.com/seladb/PcapPlusPlus PcapPlusPlus
-
-# Get tcpdump's test pcaps as seed corpus
-RUN git clone --depth=1 https://github.com/the-tcpdump-group/tcpdump.git tcpdump
-RUN git clone --depth=1 https://github.com/the-tcpdump-group/libpcap.git libpcap
-
-WORKDIR PcapPlusPlus
-
-COPY build.sh $SRC
-COPY *.options $SRC
diff --git a/projects/pcapplusplus/build.sh b/projects/pcapplusplus/build.sh
deleted file mode 100644
index a30f4c3..0000000
--- a/projects/pcapplusplus/build.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-TARGETS_DIR=Tests/Fuzzers/Bin
-
-# Build libpcap
-cd $SRC/libpcap/
-./configure
-make -j$(nproc)
-
-# Build PcapPlusPlus linking statically against the built libpcap
-cd $SRC/PcapPlusPlus
-./configure-fuzzing.sh --libpcap-static-lib-dir $SRC/libpcap/
-make clean
-make -j$(nproc) fuzzers
-
-# Copy target and options
-cp $TARGETS_DIR/FuzzTarget $OUT
-cp $(ldd $OUT/FuzzTarget | cut -d" " -f3) $OUT
-cp $SRC/default.options $OUT/FuzzTarget.options
-
-# Copy corpora
-cd $SRC/tcpdump
-zip -jr FuzzTarget_seed_corpus.zip tests/*.pcap
-cp FuzzTarget_seed_corpus.zip $OUT/
diff --git a/projects/pcapplusplus/default.options b/projects/pcapplusplus/default.options
deleted file mode 100644
index eb7fde2..0000000
--- a/projects/pcapplusplus/default.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-close_fd_mask=3
diff --git a/projects/pcapplusplus/project.yaml b/projects/pcapplusplus/project.yaml
deleted file mode 100644
index 993b29c..0000000
--- a/projects/pcapplusplus/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/seladb/PcapPlusPlus"
-language: c++
-primary_contact: "pcapplusplus@gmail.com"
-auto_ccs:
-  - "zlowram@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-main_repo: 'https://github.com/seladb/PcapPlusPlus'
diff --git a/projects/pcl/Dockerfile b/projects/pcl/Dockerfile
deleted file mode 100644
index 740a3b3..0000000
--- a/projects/pcl/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make cmake autoconf \
-    automake libtool gettext pkg-config build-essential \
-    mercurial wget libeigen3-dev libflann-dev python python-dev 
-    
-# VTK deps
-RUN apt-get update && apt-get install -y \
-    libavcodec-dev libavformat-dev libavutil-dev libboost-dev \
-    libdouble-conversion-dev libeigen3-dev libexpat1-dev \
-    libfontconfig-dev libfreetype6-dev libgdal-dev libglew-dev \
-    libhdf5-dev libjpeg-dev libjsoncpp-dev liblz4-dev liblzma-dev \
-    libnetcdf-dev libnetcdf-cxx-legacy-dev libogg-dev libpng-dev \
-    libpython3-dev libqt5opengl5-dev libqt5x11extras5-dev libsqlite3-dev \
-    libswscale-dev libtheora-dev libtiff-dev libxml2-dev libxt-dev \
-    qtbase5-dev qttools5-dev zlib1g-dev
-
-# Install and build boost from source so we can have it use libc++
-RUN wget https://sourceforge.net/projects/boost/files/boost/1.70.0/boost_1_70_0.tar.gz && \
-    tar xzf boost_1_70_0.tar.gz && \
-    cd boost_1_70_0 && \
-    ./bootstrap.sh --with-toolset=clang && \
-    ./b2 clean && \
-    ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" -j$(nproc) install && \
-    cd .. && \
-    rm -rf boost_1_70_0]
-
-RUN git clone --depth 1 https://github.com/PointCloudLibrary/pcl
-COPY build.sh $SRC/
-WORKDIR $SRC/
diff --git a/projects/pcl/build.sh b/projects/pcl/build.sh
deleted file mode 100755
index c08aeac..0000000
--- a/projects/pcl/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-chmod +x $SRC/pcl/test/fuzz/build.sh
-$SRC/pcl/test/fuzz/build.sh
diff --git a/projects/pcl/project.yaml b/projects/pcl/project.yaml
deleted file mode 100644
index fdb4cb1..0000000
--- a/projects/pcl/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-main_repo: "https://github.com/pointcloudlibrary/pcl"
-homepage: "http://pointclouds.org"
-language: c++
-primary_contact: "kunal.tyagi.3.1994@gmail.com"
-auto_ccs:
-  - "tyagi.kunal@live.com"
-  - "larshg@gmail.com"
-  - "markus95.vieth@gmail.com"
-  - "k.koide.aist@gmail.com"
diff --git a/projects/pcre2/Dockerfile b/projects/pcre2/Dockerfile
index a979103..72e8a34 100644
--- a/projects/pcre2/Dockerfile
+++ b/projects/pcre2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kcc@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool subversion
 
 RUN svn co svn://vcs.exim.org/pcre2/code/trunk pcre2
diff --git a/projects/pcre2/project.yaml b/projects/pcre2/project.yaml
index 51b625f..fbe4a4c 100644
--- a/projects/pcre2/project.yaml
+++ b/projects/pcre2/project.yaml
@@ -1,9 +1,9 @@
 homepage: "http://www.pcre.org/"
-language: c++
 primary_contact: "philip.hazel@gmail.com"
 fuzzing_engines:
   - libfuzzer
   - afl
+  - honggfuzz
   - dataflow
 sanitizers:
   - address
diff --git a/projects/perfetto/Dockerfile b/projects/perfetto/Dockerfile
index 1ab2c35..d733a95 100644
--- a/projects/perfetto/Dockerfile
+++ b/projects/perfetto/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER fmayer@google.com
 
 RUN apt-get update
 RUN apt-get -y install python curl
diff --git a/projects/perfetto/project.yaml b/projects/perfetto/project.yaml
index 8984193..dcdd13c 100644
--- a/projects/perfetto/project.yaml
+++ b/projects/perfetto/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://perfetto.dev"
-language: c++
 primary_contact: "fmayer@google.com"
 auto_ccs:
   - "hjd@google.com"
@@ -7,20 +6,14 @@
   - "perfetto-oss-fuzz@google.com"
   - "primiano@google.com"
   - "rsavitski@google.com"
-  - "eseckler@google.com"
+  - "taylori@google.com"
 vendor_ccs:
   - bcreasey@google.com
   - hamzeh@google.com
   - geuteneier@google.com
   - hollyhall@google.com
   - mikelogan@google.com
-  - maverickm@google.com
-  - warrenwright@google.com
 fuzzing_engines:
   - libfuzzer
-  - honggfuzz
-  - afl
 sanitizers:
   - address
-  - undefined
-main_repo: 'https://android.googlesource.com/platform/external/perfetto/'
diff --git a/projects/pffft/Dockerfile b/projects/pffft/Dockerfile
index 9442459..61e69f1 100644
--- a/projects/pffft/Dockerfile
+++ b/projects/pffft/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alessiob@webrtc.org
 RUN apt-get update && apt-get install -y mercurial python-numpy
-RUN git clone https://bitbucket.org/jpommier/pffft $SRC/pffft
+RUN hg clone https://bitbucket.org/jpommier/pffft $SRC/pffft
 WORKDIR pffft
 COPY build.sh $SRC
 # TODO(alessiob): Move the fuzzing source code to pffft upstream.
diff --git a/projects/pffft/project.yaml b/projects/pffft/project.yaml
index b8d101d..568a579 100644
--- a/projects/pffft/project.yaml
+++ b/projects/pffft/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://bitbucket.org/jpommier/pffft"
-language: c++
 primary_contact: "pommier@modartt.com"
 auto_ccs:
   - "alessiob@webrtc.org"
@@ -7,7 +6,6 @@
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
diff --git a/projects/php/Dockerfile b/projects/php/Dockerfile
index a2cb115..2a391d5 100644
--- a/projects/php/Dockerfile
+++ b/projects/php/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER stas@php.net
 RUN apt-get update && \
     apt-get install -y autoconf automake libtool bison re2c pkg-config
 RUN git clone --depth 1 --branch master https://github.com/php/php-src.git php-src
diff --git a/projects/php/build.sh b/projects/php/build.sh
index fbef489..0dd2a79 100755
--- a/projects/php/build.sh
+++ b/projects/php/build.sh
@@ -32,9 +32,9 @@
 ./buildconf
 ./configure \
     --disable-all \
-    --enable-debug-assertions \
     --enable-option-checking=fatal \
     --enable-fuzzer \
+    --enable-json \
     --enable-exif \
     --enable-mbstring \
     --without-pcre-jit \
@@ -43,21 +43,17 @@
     --with-pic
 make -j$(nproc)
 
-# Generate corpuses and dictionaries.
-sapi/cli/php sapi/fuzzer/generate_all.php
-
-# Copy dictionaries to expected locations.
+# Generate dictionary for unserialize fuzzer
+sapi/cli/php sapi/fuzzer/generate_unserialize_dict.php
 cp sapi/fuzzer/dict/unserialize $OUT/php-fuzz-unserialize.dict
+
+# Generate initial corpus for parser fuzzer
+sapi/cli/php sapi/fuzzer/generate_parser_corpus.php
 cp sapi/fuzzer/dict/parser $OUT/php-fuzz-parser.dict
+
 cp sapi/fuzzer/json.dict $OUT/php-fuzz-json.dict
 
-FUZZERS="php-fuzz-json
-php-fuzz-exif
-php-fuzz-mbstring
-php-fuzz-unserialize
-php-fuzz-unserializehash
-php-fuzz-parser
-php-fuzz-execute"
+FUZZERS="php-fuzz-json php-fuzz-exif php-fuzz-mbstring php-fuzz-unserialize php-fuzz-parser"
 for fuzzerName in $FUZZERS; do
 	cp sapi/fuzzer/$fuzzerName $OUT/
 done
diff --git a/projects/php/project.yaml b/projects/php/project.yaml
index abd0906..5520029 100644
--- a/projects/php/project.yaml
+++ b/projects/php/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://php.net/"
-language: c++
 primary_contact: "stas@php.net"
 auto_ccs:
  - "smalyshev@gmail.com"
@@ -11,4 +10,3 @@
 architectures:
  - x86_64
  - i386
-main_repo: 'https://github.com/php/php-src.git'
diff --git a/projects/picotls/Dockerfile b/projects/picotls/Dockerfile
index 5d7dcc9..e645633 100644
--- a/projects/picotls/Dockerfile
+++ b/projects/picotls/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan.foote@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake pkg-config libssl-dev
 RUN git clone https://github.com/h2o/picotls
 WORKDIR picotls
diff --git a/projects/picotls/project.yaml b/projects/picotls/project.yaml
index ad55c72..966dce5 100644
--- a/projects/picotls/project.yaml
+++ b/projects/picotls/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/h2o/picotls"
-language: c++
 primary_contact: "jonathan.foote@gmail.com"
 auto_ccs:
   - "frederik.deweerdt@gmail.com"
@@ -7,4 +6,3 @@
   - "i.nagata110@gmail.com"
   - "tmaesaka@gmail.com"
   - "security@fastly.com"
-main_repo: 'https://github.com/h2o/picotls'
diff --git a/projects/piex/Dockerfile b/projects/piex/Dockerfile
index 13824b1..9adb45d 100644
--- a/projects/piex/Dockerfile
+++ b/projects/piex/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone https://github.com/guidovranken/piex.git piex
 WORKDIR piex
diff --git a/projects/piex/project.yaml b/projects/piex/project.yaml
index 6c853bc..444b156 100644
--- a/projects/piex/project.yaml
+++ b/projects/piex/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://github.com/google/piex"
-language: c++
 primary_contact: "nchusid@google.com"
 sanitizers:
  - address
  - undefined
  - memory
-main_repo: 'https://github.com/guidovranken/piex.git'
diff --git a/projects/pigweed/Dockerfile b/projects/pigweed/Dockerfile
deleted file mode 100644
index fd1d270..0000000
--- a/projects/pigweed/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y git build-essential python
-
-RUN git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git' --depth 1
-ENV PATH="${SRC}/depot_tools:${PATH}"
-
-RUN git clone 'https://pigweed.googlesource.com/pigweed/pigweed'  --depth 1
-
-COPY build.sh $SRC/
-COPY filter_cipd.py $SRC/
-COPY extract_pw_fuzzers.py $SRC/
diff --git a/projects/pigweed/build.sh b/projects/pigweed/build.sh
deleted file mode 100644
index 75ded6f..0000000
--- a/projects/pigweed/build.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# If you ran this script as root against a local checkout, you may need to do
-# the following to restore the Pigweed build environment before continuing
-# development:
-#   $ cd $PW_ROOT
-#   $ sudo rm -rf .cipd/ .python3-env/ out/
-#   $ git reset --hard
-#   $ source ./bootstrap.sh
-
-PW_ROOT="$SRC/pigweed"
-BUILDROOT="$PW_ROOT/out/oss-fuzz"
-mkdir -p $BUILDROOT
-
-# Tweak the ensure file to skip downloading a bunch of build environment pieces
-# that we won't use and/or that OSS-Fuzz wants to provide itself.
-python $SRC/filter_cipd.py \
-  --root "$PW_ROOT" \
-  --json "$PW_ROOT/pw_env_setup/py/pw_env_setup/cipd_setup/pigweed.json" \
-  --excludes \
-      infra/cmake \
-      fuchsia/third_party/bazel \
-      pigweed/third_party/bloaty-embedded \
-      fuchsia/third_party/clang \
-      infra/go \
-      pigweed/third_party/protoc-gen-go \
-      pigweed/third_party/openocd \
-      fuchsia/rust \
-      pigweed/third_party/mingw64-x86_64-win32-seh \
-      pigweed/host_tools \
-      infra/goma/client \
-      fuchsia/third_party/qemu \
-      pigweed/third_party/kythe
-
-# Pigweed checks that it can find these as part of a "sanity check".
-mkdir -p "$PW_ROOT/.environment/cipd/pigweed/bin"
-for b in arm-none-eabi-gcc bazel bloaty ; do
-  x="$PW_ROOT/.environment/cipd/pigweed/bin/$b"
-  if [[ ! -x $x ]] ; then
-    ln -s "$(which false)" "$x"
-  fi
-done
-
-# Setup the Pigweed build environemnt
-set +u
-PW_ENVSETUP_QUIET=1 source "$PW_ROOT/bootstrap.sh"
-set -u
-
-# -stdlib=libc++ conflicts with the -nostdinc++ used on pw_minimal_cpp_stdlib.
-EXTRA_CXXFLAGS="-Wno-unused-command-line-argument"
-
-# Disable UBSan vptr since target built with -fno-rtti.
-EXTRA_CXXFLAGS+=" -fno-sanitize=vptr"
-
-# Build!
-CXXFLAGS="$CXXFLAGS $EXTRA_CXXFLAGS" LDFLAGS="$CXXFLAGS" \
-  gn gen "$BUILDROOT" \
-    --root="$PW_ROOT" \
-    --args="pw_toolchain_OSS_FUZZ_ENABLED=true
-            pw_toolchain_SANITIZERS=[\"$SANITIZER\"]"
-ninja -C "$BUILDROOT" fuzzers
-
-# Use build-generated metadata to identify available fuzzers
-python "$SRC/extract_pw_fuzzers.py" --buildroot "$BUILDROOT" --out "$OUT/"
-
-
diff --git a/projects/pigweed/extract_pw_fuzzers.py b/projects/pigweed/extract_pw_fuzzers.py
deleted file mode 100644
index 6361f2d..0000000
--- a/projects/pigweed/extract_pw_fuzzers.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Script to find fuzzers in a Pigweed build."""
-
-import argparse
-import json
-import os
-import shutil
-import sys
-
-
-def main():
-  """ Use pw_module_tests.testinfo.json files to find and copy fuzzers. """
-  parser = argparse.ArgumentParser()
-  parser.add_argument('--buildroot')
-  parser.add_argument('--out')
-  args = parser.parse_args()
-  print('  buildroot: ' + args.buildroot)
-  print('        out: ' + args.out)
-
-  testinfo = os.path.join(args.buildroot, 'host_clang_fuzz',
-                          'obj',
-                          'pw_module_tests.testinfo.json')
-  tests = []
-  with open(testinfo) as json_file:
-    tests = json.load(json_file)
-  for test in tests:
-    if test['type'] != 'fuzzer':
-      # Skip unit tests
-      continue
-    fuzzer = test['test_name']
-    objdir = test['test_directory']
-    module = os.path.basename(os.path.dirname(objdir))
-    if module == 'pw_fuzzer':
-      # Skip examples
-      continue
-    src = os.path.join(args.buildroot, objdir, fuzzer)
-    dst = os.path.join(args.out, '{}_{}'.format(module, fuzzer))
-    print('Copying {} to {}'.format(src, dst))
-    shutil.copy(src, dst)
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/projects/pigweed/filter_cipd.py b/projects/pigweed/filter_cipd.py
deleted file mode 100644
index e8dc098..0000000
--- a/projects/pigweed/filter_cipd.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-"""Script for filter Pigweed's CIPD dependencies for OSS Fuzz conflicts."""
-
-import argparse
-import json
-import os
-import sys
-
-
-def main():
-  """Main entry point of the script."""
-  parser = argparse.ArgumentParser()
-  parser.add_argument('--root', default=os.path.join(os.getcwd(), 'pigweed'))
-  parser.add_argument(
-      '--json', default='pw_env_setup/py/pw_env_setup/cipd_setup/pigweed.json')
-  parser.add_argument('--excludes', default='clang', nargs='*')
-  args = parser.parse_args()
-
-  # Load args.json
-  prebuilts = []
-  try:
-    with open(args.json, 'r') as json_file:
-      prebuilts = json.load(json_file)
-  except Exception:
-    print('Encountered error attempting to load ' + args.json)
-    raise
-
-  # Filter out args.excludes
-  for exclude in args.excludes:
-    prebuilts[:] = [p for p in prebuilts if exclude not in str(p['path'])]
-
-  # Rename original CIPD JSON file
-  try:
-    os.rename(args.json, args.json + '.orig')
-  except Exception:
-    print('Encountered error attempting to rename ' + args.json)
-    raise
-
-  # Save new CIPD JSON file
-  try:
-    with open(args.json, 'w') as json_file:
-      json.dump(prebuilts, json_file, indent=2)
-  except Exception:
-    print('Encountered error attempting to write ' + args.json)
-    raise
-
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/projects/pigweed/project.yaml b/projects/pigweed/project.yaml
deleted file mode 100644
index 78789fe..0000000
--- a/projects/pigweed/project.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-homepage: "https://pigweed.googlesource.com/pigweed/"
-language: c++
-primary_contact: "keir@google.com"
-auto_ccs:
-  - "alizhang@google.com"
-  - "amontanez@google.com"
-  - "davidrogers@google.com"
-  - "ewout@google.com"
-  - "frolv@google.com"
-  - "hepler@google.com"
-  - "keir@google.com"
-  - "moch@google.com"
-  - "mohrr@google.com"
-  - "prashanthsw@google.com"
-  - "rginda@google.com"
-  - "tonymd@google.com"
-  - "vivlam@google.com"
-sanitizers:
-  - address
-main_repo: 'https://pigweed.googlesource.com/pigweed/pigweed'
diff --git a/projects/pillow/Dockerfile b/projects/pillow/Dockerfile
index ab90895..aa67d85 100644
--- a/projects/pillow/Dockerfile
+++ b/projects/pillow/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google LLC
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,49 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/google/fuzzing
-RUN cat fuzzing/dictionaries/bmp.dict \
-        fuzzing/dictionaries/dds.dict \
-        fuzzing/dictionaries/gif.dict \
-        fuzzing/dictionaries/icns.dict \
-        fuzzing/dictionaries/jpeg.dict \
-        fuzzing/dictionaries/jpeg2000.dict \
-        fuzzing/dictionaries/pbm.dict \
-        fuzzing/dictionaries/png.dict \
-        fuzzing/dictionaries/psd.dict \
-        fuzzing/dictionaries/tiff.dict \
-        fuzzing/dictionaries/webp.dict \
-      > $OUT/fuzz_pillow.dict
-
-# library build dependencies
-RUN apt-get update && \
-    apt-get install -y \
-      libxau-dev \
-      pkg-config \
-      rsync \
-      zlib1g-dev 
-
-RUN git clone --depth 1 https://github.com/python-pillow/Pillow
-RUN git clone --depth 1 https://github.com/python-pillow/pillow-wheels
-
-COPY build_depends.sh $SRC
-
-RUN ln -s /usr/local/bin/python3 /usr/local/bin/python \
-    && ln -s /bin/true /usr/local/bin/yum_install \
-    && ln -s /bin/true /usr/local/bin/yum \
-    && cd $SRC/pillow-wheels \
-    && git submodule update --init multibuild \
-    && bash $SRC/build_depends.sh
-
-# install extra test images for a better starting corpus
-RUN cd Pillow && depends/install_extra_test_images.sh
-
+MAINTAINER guidovranken@gmail.com
+RUN apt-get update && apt-get install -y make autoconf automake build-essential libbz2-dev libc6-dev libffi-dev libfreetype6-dev libgdbm-dev libjpeg-turbo8-dev liblcms2-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev libtiff5-dev libtool libwebp-dev make python python-dev python-setuptools tk-dev wget zlib1g-dev libwebp-dev
+RUN wget https://github.com/python/cpython/archive/v3.8.1.tar.gz
+RUN git clone --depth 1 https://github.com/python-pillow/Pillow.git pillow
+RUN git clone --depth 1 https://github.com/guidovranken/oss-fuzz-fuzzers
+WORKDIR pillow
 COPY build.sh $SRC/
-
-# pillow optional runtime dependencies
-RUN apt-get install -y \
-     python3-tk \
-     tcl8.6-dev \
-     tk8.6-dev 
-
-WORKDIR $SRC/Pillow
diff --git a/projects/pillow/build.sh b/projects/pillow/build.sh
old mode 100644
new mode 100755
index e7dac34..1bee1d7
--- a/projects/pillow/build.sh
+++ b/projects/pillow/build.sh
@@ -1,5 +1,5 @@
 #!/bin/bash -eu
-# Copyright 2020 Google LLC
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,33 +15,98 @@
 #
 ################################################################################
 
-python3 setup.py build --build-base=/tmp/build install
+# Because Pillow's "./setup.py build_ext --inplace" does not work with custom CC and CFLAGS,
+# it is necessary to build in the following manner:
+#
+# Build CPython without instrumentation/sanitization
+# Build Pillow in a virtualenv based on uninstrumented and unsanitized CPython. Log the build steps to build.sh
+# Build CPython with instrumentation/sanitization
+# Rewrite build.sh to compile Pillow based on CPython with instrumentation/sanitization
+#
+# Why not build Pillow directly with a virtualenv based on instrumented CPython?
+# Because the virtualenv will inherit CC and CFLAGS of the instrumented CPython, and that will fail.
 
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller \
-      --add-binary /usr/local/lib/libjpeg.so.9:. \
-      --add-binary /usr/local/lib/libfreetype.so.6:. \
-      --add-binary /usr/local/lib/liblcms2.so.2:. \
-      --add-binary /usr/local/lib/libopenjp2.so.7:. \
-      --add-binary /usr/local/lib/libpng16.so.16:. \
-      --add-binary /usr/local/lib/libtiff.so.5:. \
-      --add-binary /usr/local/lib/libwebp.so.7:. \
-      --add-binary /usr/local/lib/libwebpdemux.so.2:. \
-      --add-binary /usr/local/lib/libwebpmux.so.3:. \
-      --add-binary /usr/local/lib/libxcb.so.1:. \
-      --distpath $OUT --onefile --name $fuzzer_package $fuzzer
+cd $SRC/
+tar zxf v3.8.1.tar.gz
+cd cpython-3.8.1/
 
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
+# Ignore memory leaks from python scripts invoked in the build
+export ASAN_OPTIONS="detect_leaks=0"
+export MSAN_OPTIONS="halt_on_error=0:exitcode=0:report_umrs=0"
 
-find Tests/images Tests/icc Tests/fonts -print | zip -q $OUT/fuzz_pillow_seed_corpus.zip -@
+# Remove -pthread from CFLAGS, this trips up ./configure
+# which thinks pthreads are available without any CLI flags
+CFLAGS=${CFLAGS//"-pthread"/}
+
+FLAGS=()
+case $SANITIZER in
+  address)
+    FLAGS+=("--with-address-sanitizer")
+    ;;
+  memory)
+    FLAGS+=("--with-memory-sanitizer")
+    # installing ensurepip takes a while with MSAN instrumentation, so
+    # we disable it here
+    FLAGS+=("--without-ensurepip")
+    # -msan-keep-going is needed to allow MSAN's halt_on_error to function
+    FLAGS+=("CFLAGS=-mllvm -msan-keep-going=1")
+    ;;
+  undefined)
+    FLAGS+=("--with-undefined-behavior-sanitizer")
+    ;;
+esac
+
+export CPYTHON_INSTALL_PATH=$OUT/cpython-install
+rm -rf $CPYTHON_INSTALL_PATH
+mkdir $CPYTHON_INSTALL_PATH
+
+export CPYTHON_UNINSTRUMENTED_INSTALL_PATH=$OUT/cpython-install
+rm -rf $CPYTHON_UNINSTRUMENTED_INSTALL_PATH
+mkdir $CPYTHON_UNINSTRUMENTED_INSTALL_PATH
+
+cd $SRC/
+tar zxf v3.8.1.tar.gz
+
+# Compile uninstrumented CPython
+cp -R $SRC/cpython-3.8.1/ $SRC/cpython-3.8.1-uninstrumented
+cd $SRC/cpython-3.8.1-uninstrumented
+CFLAGS="" CXXFLAGS="" ./configure --prefix=$CPYTHON_UNINSTRUMENTED_INSTALL_PATH
+CFLAGS="" CXXFLAGS="" make -j$(nproc)
+CFLAGS="" CXXFLAGS="" make install
+
+# Compile instrumented CPython
+cd $SRC/cpython-3.8.1/
+cp $SRC/oss-fuzz-fuzzers/pillow/python_coverage.h Python/
+
+# Patch the interpreter to record code coverage
+sed -i '1 s/^.*$/#include "python_coverage.h"/g' Python/ceval.c
+sed -i 's/case TARGET\(.*\): {/\0\nfuzzer_record_code_coverage(f->f_code, f->f_lasti);/g' Python/ceval.c
+
+./configure "${FLAGS[@]}" --prefix=$CPYTHON_INSTALL_PATH
+make -j$(nproc)
+make install
+
+# Compile Pillow fuzzers
+cd $SRC/oss-fuzz-fuzzers/pillow
+rm $CPYTHON_INSTALL_PATH/lib/python3.8/lib-dynload/_tkinter*.so
+make
+cp $SRC/oss-fuzz-fuzzers/pillow/fuzzer-loadimg $OUT/
+cp $SRC/oss-fuzz-fuzzers/pillow/loadimg.py $OUT/
+
+# Create venv for Pillow compilation
+$CPYTHON_UNINSTRUMENTED_INSTALL_PATH/bin/python3 -m venv $SRC/venv
+source $SRC/venv/bin/activate
+
+# Compile Pillow
+cd $SRC/pillow
+CFLAGS="" CXXFLAGS="" ./setup.py build_ext --inplace >build.sh
+grep "^\(gcc\|x86_64-linux-gnu-gcc\|clang\) " build.sh | sed 's/^\(gcc\|x86_64-linux-gnu-gcc\|clang\) /$CC $CFLAGS /g' | sed 's/-DPILLOW_VERSION="\([^"]\+\)"/-DPILLOW_VERSION="\\"\1\\""/g' >build2.sh
+bash build2.sh
+cp -R $SRC/pillow $OUT/
+cp /usr/lib/x86_64-linux-gnu/libjpeg.so.8 $OUT/
+cp /usr/lib/x86_64-linux-gnu/libtiff.so.5 $OUT/
+cp /usr/lib/x86_64-linux-gnu/libjbig.so.0 $OUT/
+cp /usr/lib/x86_64-linux-gnu/libwebp.so.5 $OUT/
+cp /usr/lib/x86_64-linux-gnu/libwebpmux.so.1 $OUT/
+cp /usr/lib/x86_64-linux-gnu/libwebpdemux.so.1 $OUT/
+cp $SRC/oss-fuzz-fuzzers/pillow/corpus.zip $OUT/fuzzer-loadimg_seed_corpus.zip
diff --git a/projects/pillow/build_depends.sh b/projects/pillow/build_depends.sh
deleted file mode 100644
index efdb34e..0000000
--- a/projects/pillow/build_depends.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-. multibuild/common_utils.sh
-
-export CONFIGURE_BUILD_SOURCED=1
-BUILD_PREFIX="${BUILD_PREFIX:-/usr/local}"
-export CPPFLAGS="-I$BUILD_PREFIX/include $CPPFLAGS"
-export LIBRARY_PATH="$BUILD_PREFIX/lib:$LIBRARY_PATH"
-export PKG_CONFIG_PATH="$BUILD_PREFIX/lib/pkgconfig/:$PKG_CONFIG_PATH"
-
-. multibuild/library_builders.sh
-. config.sh
-
-pre_build
diff --git a/projects/pillow/project.yaml b/projects/pillow/project.yaml
index e72792b..f6041e9 100644
--- a/projects/pillow/project.yaml
+++ b/projects/pillow/project.yaml
@@ -1,12 +1,11 @@
-homepage: "https://github.com/python-pillow/Pillow"
-language: python
-primary_contact: "security@tidelift.com"
+homepage: "https://python-pillow.org/"
+primary_contact: "guidovranken@gmail.com"
 auto_ccs:
-  - "david@adalogics.com"
-  - "esoroos@gmail.com"
+ - "security@python-pillow.org"
+sanitizers:
+ - address
+ - undefined
+architectures:
+ - x86_64
 fuzzing_engines:
   - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/python-pillow/Pillow'
diff --git a/projects/pngquant/Dockerfile b/projects/pngquant/Dockerfile
deleted file mode 100644
index 8804d68..0000000
--- a/projects/pngquant/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make libpng-dev autoconf libtool
-RUN git clone --depth 1 https://github.com/kornelski/pngquant
-RUN git clone --depth 1 https://github.com/glennrp/libpng.git $SRC/pngquant/libpng
-WORKDIR $SRC/
-RUN mv $SRC/pngquant/test/oss_fuzz_build.sh $SRC/build.sh
diff --git a/projects/pngquant/project.yaml b/projects/pngquant/project.yaml
deleted file mode 100644
index b40ced8..0000000
--- a/projects/pngquant/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://pngquant.org"
-main_repo: "https://github.com/kornelski/pngquant"
-language: c
-primary_contact: "ossfuzz@pngquant.org"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
diff --git a/projects/poppler/Dockerfile b/projects/poppler/Dockerfile
index c1b0355..dfac4e5 100644
--- a/projects/poppler/Dockerfile
+++ b/projects/poppler/Dockerfile
@@ -15,26 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget autoconf automake libtool pkg-config gperf
-RUN pip3 install meson ninja
-
-RUN git clone --depth 1 https://github.com/madler/zlib.git
+MAINTAINER jonathan@titanous.com
+RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config cmake
+RUN git clone --depth 1 https://anongit.freedesktop.org/git/poppler/poppler.git
 RUN git clone --depth 1 git://git.sv.nongnu.org/freetype/freetype2.git
-RUN git clone --depth 1 https://github.com/mm2/Little-CMS.git
-RUN git clone --depth 1 https://github.com/uclouvain/openjpeg
-RUN git clone --depth 1 https://github.com/glennrp/libpng.git
-RUN git clone --depth 1 https://gitlab.freedesktop.org/fontconfig/fontconfig.git
-RUN git clone --depth 1 https://gitlab.freedesktop.org/cairo/cairo.git
-RUN git clone --depth 1 --branch=5.15 git://code.qt.io/qt/qtbase.git
-ADD http://ftp.gnome.org/pub/gnome/sources/pango/1.48/pango-1.48.0.tar.xz $SRC
-RUN tar xvJf $SRC/pango-1.48.0.tar.xz
-ADD https://ftp.gnome.org/pub/gnome/sources/glib/2.64/glib-2.64.2.tar.xz $SRC
-RUN tar xvJf $SRC/glib-2.64.2.tar.xz
-RUN git clone --depth 1 --single-branch https://gitlab.freedesktop.org/poppler/poppler.git
-
 RUN git clone --depth 1 https://github.com/mozilla/pdf.js pdf.js && \
-    zip -q $SRC/poppler_seed_corpus.zip pdf.js/test/pdfs/*.pdf && \
+    zip -q $SRC/pdf_fuzzer_seed_corpus.zip pdf.js/test/pdfs/*.pdf && \
     rm -rf pdf.js
-ADD https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/pdf.dict $SRC/poppler.dict
+ADD https://raw.githubusercontent.com/rc0r/afl-fuzz/master/dictionaries/pdf.dict $SRC/pdf_fuzzer.dict
 WORKDIR $SRC/poppler
+COPY *.cc $SRC/fuzz/
 COPY build.sh $SRC/
diff --git a/projects/poppler/build.sh b/projects/poppler/build.sh
index 23692dd..49478ef 100755
--- a/projects/poppler/build.sh
+++ b/projects/poppler/build.sh
@@ -14,232 +14,50 @@
 # limitations under the License.
 #
 ################################################################################
-PREFIX=$WORK/prefix
-mkdir -p $PREFIX
-
-export PKG_CONFIG="`which pkg-config` --static"
-export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
-export PATH=$PREFIX/bin:$PATH
-
-BUILD=$WORK/build
-
-rm -rf $WORK/*
-rm -rf $BUILD
-mkdir -p $BUILD
-
-pushd $SRC/zlib
-CFLAGS=-fPIC ./configure --static --prefix=$PREFIX
-make install -j$(nproc)
 
 pushd $SRC/freetype2
 ./autogen.sh
-./configure --prefix="$PREFIX" --disable-shared PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
+./configure --prefix="$WORK" --disable-shared PKG_CONFIG_PATH="$WORK/lib/pkgconfig"
 make -j$(nproc)
 make install
 
-pushd $SRC/Little-CMS
-./configure --prefix="$PREFIX" --disable-shared PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
-make -j$(nproc)
-make install
-
-mkdir -p $SRC/openjpeg/build
-pushd $SRC/openjpeg/build
-cmake .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=$PREFIX
-make -j$(nproc) install
-
-if [ "$SANITIZER" != "memory" ]; then
-
-    pushd $SRC/fontconfig
-    meson \
-        --prefix=$PREFIX \
-        --libdir=lib \
-        --default-library=static \
-        _builddir
-    ninja -C _builddir
-    ninja -C _builddir install
-    popd
-
-    pushd $SRC/glib-2.64.2
-    meson \
-        --prefix=$PREFIX \
-        --libdir=lib \
-        --default-library=static \
-        -Db_lundef=false \
-        -Doss_fuzz=enabled \
-        -Dlibmount=disabled \
-        -Dinternal_pcre=true \
-        _builddir
-    ninja -C _builddir
-    ninja -C _builddir install
-    popd
-
-    pushd $SRC/libpng
-    autoreconf -fi
-    CPPFLAGS=-I$PREFIX/include LDFLAGS=-L$PREFIX/lib ./configure --prefix="$PREFIX" --disable-shared --disable-dependency-tracking
-    make -j$(nproc)
-    make install
-
-    pushd $SRC/cairo
-    meson \
-        --prefix=$PREFIX \
-        --libdir=lib \
-        --default-library=static \
-        _builddir
-    ninja -C _builddir
-    ninja -C _builddir install
-    popd
-
-    pushd $SRC/pango-1.48.0
-    meson \
-        -Ddefault_library=static \
-        --prefix=$PREFIX \
-        --libdir=lib \
-        _builddir
-    sed -i -e 's/ -Werror=implicit-fallthrough//g' _builddir/build.ninja
-    ninja -C _builddir
-    ninja -C _builddir install
-    popd
-fi
-
-pushd $SRC/qtbase
-# add the flags to Qt build too
-sed -i -e "s/QMAKE_CXXFLAGS    += -stdlib=libc++/QMAKE_CXXFLAGS    += -stdlib=libc++  $CXXFLAGS\nQMAKE_CFLAGS += $CFLAGS/g" mkspecs/linux-clang-libc++/qmake.conf
-sed -i -e "s/QMAKE_LFLAGS      += -stdlib=libc++/QMAKE_LFLAGS      += -stdlib=libc++ -lpthread $CXXFLAGS/g" mkspecs/linux-clang-libc++/qmake.conf
-# disable sanitize=vptr for harfbuzz since it compiles without rtti
-sed -i -e "s/TARGET = qtharfbuzz/TARGET = qtharfbuzz\nQMAKE_CXXFLAGS += -fno-sanitize=vptr/g" src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
-# make qmake compile faster
-sed -i -e "s/MAKE\")/MAKE\" -j$(nproc))/g" configure
-./configure --glib=no --libpng=qt -opensource -confirm-license -static -no-opengl -no-icu -no-pkg-config -platform linux-clang-libc++ -nomake tests -nomake examples -prefix $PREFIX -D QT_NO_DEPRECATED_WARNINGS
-make -j$(nproc)
-make install
-popd
-
-# Poppler complains when PKG_CONFIG is set to `which pkg-config --static` so
-# temporarily removing it
-export PKG_CONFIG="`which pkg-config`"
-
-if [ "$SANITIZER" != "memory" ]; then
-    POPPLER_ENABLE_GLIB=ON
-    POPPLER_FONT_CONFIGURATION=fontconfig
-else
-    POPPLER_ENABLE_GLIB=OFF
-    POPPLER_FONT_CONFIGURATION=generic
-fi
-
-mkdir -p $SRC/poppler/build
-pushd $SRC/poppler/build
-cmake .. \
+mkdir -p $WORK/poppler
+pushd $WORK/poppler
+cmake $SRC/poppler \
   -DCMAKE_BUILD_TYPE=debug \
   -DBUILD_SHARED_LIBS=OFF \
-  -DENABLE_FUZZER=OFF \
-  -DFONT_CONFIGURATION=$POPPLER_FONT_CONFIGURATION \
+  -DFONT_CONFIGURATION=generic \
   -DENABLE_DCTDECODER=none \
-  -DENABLE_GOBJECT_INTROSPECTION=OFF \
+  -DENABLE_LIBOPENJPEG=none \
+  -DENABLE_CMS=none \
   -DENABLE_LIBPNG=OFF \
   -DENABLE_ZLIB=OFF \
   -DENABLE_LIBTIFF=OFF \
   -DENABLE_LIBJPEG=OFF \
-  -DENABLE_GLIB=$POPPLER_ENABLE_GLIB \
+  -DENABLE_GLIB=OFF \
   -DENABLE_LIBCURL=OFF \
-  -DENABLE_QT5=ON \
+  -DENABLE_QT5=OFF \
   -DENABLE_UTILS=OFF \
-  -DWITH_Cairo=$POPPLER_ENABLE_GLIB \
+  -DWITH_Cairo=OFF \
   -DWITH_NSS3=OFF \
-  -DCMAKE_INSTALL_PREFIX=$PREFIX
+  -DFREETYPE_INCLUDE_DIRS=$WORK/include/freetype2 \
+  -DFREETYPE_LIBRARY=$WORK/lib
+make -j$(nproc) poppler poppler-cpp
 
-export PKG_CONFIG="`which pkg-config` --static"
-make -j$(nproc) poppler poppler-cpp poppler-qt5
-if [ "$SANITIZER" != "memory" ]; then
-    make -j$(nproc) poppler-glib
-fi
+fuzz_target=pdf_fuzzer
 
-PREDEPS_LDFLAGS="-Wl,-Bdynamic -ldl -lm -lc -lz -pthread -lrt -lpthread"
-DEPS="freetype2 lcms2 libopenjp2"
-if [ "$SANITIZER" != "memory" ]; then
-    DEPS="$DEPS fontconfig libpng"
-fi
-BUILD_CFLAGS="$CFLAGS `pkg-config --static --cflags $DEPS`"
-BUILD_LDFLAGS="-Wl,-static `pkg-config --static --libs $DEPS`"
-
-fuzzers=$(find $SRC/poppler/cpp/tests/fuzzing/ -name "*_fuzzer.cc")
-
-for f in $fuzzers; do
-    fuzzer_name=$(basename $f .cc)
-
-    $CXX $CXXFLAGS -std=c++11 -I$SRC/poppler/cpp -I$SRC/poppler/build/cpp \
-        $BUILD_CFLAGS \
-        $f -o $OUT/$fuzzer_name \
-        $PREDEPS_LDFLAGS \
-        $SRC/poppler/build/cpp/libpoppler-cpp.a \
-        $SRC/poppler/build/libpoppler.a \
-        $BUILD_LDFLAGS \
-        $LIB_FUZZING_ENGINE \
-        $LIB_FUZZING_ENGINE \
-        -Wl,-Bdynamic
-done
-
-if [ "$SANITIZER" != "memory" ]; then
-    DEPS="gmodule-2.0 glib-2.0 gio-2.0 gobject-2.0 freetype2 lcms2 libopenjp2 cairo cairo-gobject pango fontconfig libpng"
-    BUILD_CFLAGS="$CFLAGS `pkg-config --static --cflags $DEPS`"
-    BUILD_LDFLAGS="-Wl,-static `pkg-config --static --libs $DEPS`"
-
-    fuzzers=$(find $SRC/poppler/glib/tests/fuzzing/ -name "*_fuzzer.cc")
-    for f in $fuzzers; do
-        fuzzer_name=$(basename $f .cc)
-
-        $CXX $CXXFLAGS -std=c++11 -I$SRC/poppler/glib -I$SRC/poppler/build/glib \
-            $BUILD_CFLAGS \
-            $f -o $OUT/$fuzzer_name \
-            $PREDEPS_LDFLAGS \
-            $SRC/poppler/build/glib/libpoppler-glib.a \
-            $SRC/poppler/build/cpp/libpoppler-cpp.a \
-            $SRC/poppler/build/libpoppler.a \
-            $BUILD_LDFLAGS \
-            $LIB_FUZZING_ENGINE \
-            -Wl,-Bdynamic
-    done
-fi
-
-PREDEPS_LDFLAGS="-Wl,-Bdynamic -ldl -lm -lc -lz -pthread -lrt -lpthread"
-DEPS="freetype2 lcms2 libopenjp2 Qt5Core Qt5Gui Qt5Xml"
-if [ "$SANITIZER" != "memory" ]; then
-    DEPS="$DEPS fontconfig libpng"
-fi
-BUILD_CFLAGS="$CFLAGS `pkg-config --static --cflags $DEPS`"
-BUILD_LDFLAGS="-Wl,-static `pkg-config --static --libs $DEPS`"
-
-fuzzers=$(find $SRC/poppler/qt5/tests/fuzzing/ -name "*_fuzzer.cc")
-for f in $fuzzers; do
-    fuzzer_name=$(basename $f .cc)
-
-    $CXX $CXXFLAGS -std=c++11 -fPIC \
-        -I$SRC/poppler/qt5/src -I$SRC/poppler/build/qt5/src \
-        $BUILD_CFLAGS \
-        $f -o $OUT/$fuzzer_name \
-        $PREDEPS_LDFLAGS \
-        $SRC/poppler/build/qt5/src/libpoppler-qt5.a \
-        $SRC/poppler/build/cpp/libpoppler-cpp.a \
-        $SRC/poppler/build/libpoppler.a \
-        $BUILD_LDFLAGS \
-        $LIB_FUZZING_ENGINE \
-        -Wl,-Bdynamic
-done
+$CXX $CXXFLAGS -std=c++11 -I$SRC/poppler/cpp \
+    $SRC/fuzz/pdf_fuzzer.cc -o $OUT/$fuzz_target \
+    $LIB_FUZZING_ENGINE $WORK/poppler/cpp/libpoppler-cpp.a $WORK/poppler/libpoppler.a $WORK/lib/libfreetype.a
 
 mv $SRC/{*.zip,*.dict} $OUT
 
-if [ ! -f "${OUT}/poppler_seed_corpus.zip" ]; then
-    echo "missing seed corpus"
-    exit 1
+if [ ! -f "${OUT}/${fuzz_target}_seed_corpus.zip" ]; then
+  echo "missing seed corpus"
+  exit 1
 fi
 
-if [ ! -f "${OUT}/poppler.dict" ]; then
-    echo "missing dictionary"
-    exit 1
+if [ ! -f "${OUT}/${fuzz_target}.dict" ]; then
+  echo "missing dictionary"
+  exit 1
 fi
-
-fuzzers=$(find $OUT -name "*_fuzzer")
-for f in $fuzzers; do
-  fuzzer_name=$(basename $f)
-  ln -sf $OUT/poppler_seed_corpus.zip $OUT/${fuzzer_name}_seed_corpus.zip
-  ln -sf $OUT/poppler.dict $OUT/${fuzzer_name}.dict
-done
diff --git a/projects/poppler/pdf_fuzzer.cc b/projects/poppler/pdf_fuzzer.cc
new file mode 100644
index 0000000..b278f83
--- /dev/null
+++ b/projects/poppler/pdf_fuzzer.cc
@@ -0,0 +1,50 @@
+/*
+# Copyright 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+*/
+
+#include <cstdint>
+
+#include <poppler-global.h>
+#include <poppler-document.h>
+#include <poppler-page.h>
+#include <poppler-page-renderer.h>
+
+static void nop_func(const std::string& msg, void*) {};
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  poppler::set_debug_error_function(nop_func, nullptr);
+
+  poppler::document *doc = poppler::document::load_from_raw_data((const char *)data, size);
+  if (!doc || doc->is_locked()) {
+    delete doc;
+    return 0;
+  }
+
+  poppler::page_renderer r;
+  for (int i = 0; i < doc->pages(); i++) {
+    poppler::page *p = doc->create_page(i);
+    if (!p) {
+      continue;
+    }
+    r.render_page(p);
+    p->text_list();
+    delete p;
+  }
+
+  delete doc;
+  return 0;
+}
diff --git a/projects/poppler/project.yaml b/projects/poppler/project.yaml
index c123796..18f88cc 100644
--- a/projects/poppler/project.yaml
+++ b/projects/poppler/project.yaml
@@ -1,5 +1,4 @@
 homepage: https://poppler.freedesktop.org/
-language: c++
 primary_contact: tsdgeos@gmail.com
 sanitizers:
   - address
@@ -8,4 +7,3 @@
 auto_ccs:
   - jonathan@titanous.com
   - adam.reichold@t-online.de
-main_repo: 'https://anongit.freedesktop.org/git/poppler/poppler.git'
diff --git a/projects/postgis/Dockerfile b/projects/postgis/Dockerfile
index 67b7a69..fdab216 100644
--- a/projects/postgis/Dockerfile
+++ b/projects/postgis/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER lr@pcorp.us
 RUN echo deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse >> /etc/apt/sources.list
 RUN apt-get update && apt-get install -y make autoconf automake libtool g++ postgresql-server-dev-10 libgeos-dev libproj-dev libxml2-dev pkg-config libjson-c-dev
 RUN git clone --depth 1 https://git.osgeo.org/gitea/postgis/postgis.git postgis
diff --git a/projects/postgis/project.yaml b/projects/postgis/project.yaml
index 003aa18..d55e54e 100644
--- a/projects/postgis/project.yaml
+++ b/projects/postgis/project.yaml
@@ -1,9 +1,7 @@
 homepage: "http://postgis.net/"
-language: c++
 primary_contact: "lr@pcorp.us"
 auto_ccs:
   - "even.rouault@gmail.com"
   - "pramsey@cleverelephant.ca"
   - "mateusz@loskot.net"
   - "komzpa@gmail.com"
-main_repo: 'https://git.osgeo.org/gitea/postgis/postgis.git'
diff --git a/projects/postgresql/Dockerfile b/projects/postgresql/Dockerfile
deleted file mode 100644
index ac3dcf9..0000000
--- a/projects/postgresql/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y make libreadline-dev zlib1g-dev bison flex
-
-RUN git clone git://git.postgresql.org/git/postgresql.git
-RUN zip postgresql_fuzzer_seed_corpus.zip postgresql/src/test/regress/sql/*
-
-WORKDIR postgresql
-RUN mkdir bld
-
-COPY fuzzer $SRC/fuzzer
-COPY build.sh add_fuzzers.diff $SRC/
diff --git a/projects/postgresql/add_fuzzers.diff b/projects/postgresql/add_fuzzers.diff
deleted file mode 100644
index 86b106c..0000000
--- a/projects/postgresql/add_fuzzers.diff
+++ /dev/null
@@ -1,68 +0,0 @@
-diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
-index cb5a96117f..c9b4880085 100644
---- a/src/backend/tcop/postgres.c
-+++ b/src/backend/tcop/postgres.c
-@@ -102,6 +102,9 @@ int			max_stack_depth = 100;
- /* wait N seconds to allow attach from a debugger */
- int			PostAuthDelay = 0;
- 
-+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-+bool        fuzzer_first_run = true;
-+#endif
- 
- 
- /* ----------------
-@@ -507,10 +510,15 @@ ReadCommand(StringInfo inBuf)
- {
- 	int			result;
- 
-+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-+    result = SocketBackend(inBuf);
-+#else
-+
- 	if (whereToSendOutput == DestRemote)
- 		result = SocketBackend(inBuf);
- 	else
- 		result = InteractiveBackend(inBuf);
-+#endif
- 	return result;
- }
- 
-@@ -3846,6 +3854,11 @@ PostgresMain(int argc, char *argv[],
- 	bool		idle_in_transaction_timeout_enabled = false;
- 	bool		idle_session_timeout_enabled = false;
- 
-+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-+        if(fuzzer_first_run)
-+                {
-+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
-+
- 	/* Initialize startup process environment if necessary. */
- 	if (!IsUnderPostmaster)
- 		InitStandaloneProcess(argv[0]);
-@@ -4207,6 +4220,11 @@ PostgresMain(int argc, char *argv[],
- 	if (!ignore_till_sync)
- 		send_ready_for_query = true;	/* initially, or after error */
- 
-+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
-+        fuzzer_first_run=false;
-+            }
-+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
-+
- 	/*
- 	 * Non-error queries loop here.
- 	 */
-diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
-index 80c2672461..c16e0423c5 100644
---- a/src/backend/utils/error/elog.c
-+++ b/src/backend/utils/error/elog.c
-@@ -600,7 +600,9 @@ errfinish(const char *filename, int lineno, const char *funcname)
- 		pq_endcopyout(true);
- 
- 	/* Emit the message to the right places */
-+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
- 	EmitErrorReport();
-+#endif
- 
- 	/* Now free up subsidiary data attached to stack entry, and release it */
- 	if (edata->message)
diff --git a/projects/postgresql/build.sh b/projects/postgresql/build.sh
deleted file mode 100644
index 12fb754..0000000
--- a/projects/postgresql/build.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cp -r $SRC/fuzzer src/backend/
-git apply ../add_fuzzers.diff
-
-useradd fuzzuser
-chown -R fuzzuser .
-cd bld
-
-CC="" CXX="" CFLAGS="" CXXFLAGS="" su fuzzuser -c ../configure
-cd src/backend/fuzzer
-su fuzzuser -c "make createdb"
-chown -R root .
-mv temp/data .
-cp -r data $OUT/
-cd ../../..
-cp -r tmp_install $OUT/
-make clean
-
-../configure
-make
-cd src/backend/fuzzer
-make fuzzer
-cp *_fuzzer $OUT/
-cp $SRC/postgresql_fuzzer_seed_corpus.zip $OUT/
diff --git a/projects/postgresql/fuzzer/Makefile b/projects/postgresql/fuzzer/Makefile
deleted file mode 100644
index 656b8d6..0000000
--- a/projects/postgresql/fuzzer/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile for the fuzzer module
-#
-# src/backend/fuzzer/Makefile
-#
-#-------------------------------------------------------------------------
-subdir = src/backend/fuzzer
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-subsysfilename = objfiles.txt
-
-SUBDIROBJS = $(SUBDIRS:%=%/$(subsysfilename))
-
-# make function to expand objfiles.txt contents
-expand_subsys = $(foreach file,$(1),$(if $(filter %/objfiles.txt,$(file)),$(patsubst ../../src/backend/%,%,$(addprefix $(top_builddir)/,$(shell cat $(file)))),$(file)))
-
-objfiles.txt: Makefile $(SUBDIROBJS) $(OBJS_FUZZERS)
-# Don't rebuild the list if only the OBJS have changed.
-	 $(if $(filter-out $(OBJS_FUZZERS),$?),( $(if $(SUBDIROBJS),cat $(SUBDIROBJS); )echo $(addprefix $(subdir)/,$(OBJS_FUZZERS)) ) >$@,touch $@)
-
-SUBDIRS = ../access ../bootstrap ../catalog ../parser ../commands ../executor ../foreign ../lib ../libpq \
-	../main ../nodes ../optimizer ../partitioning ../port ../postmaster \
-	../regex ../replication ../rewrite \
-	../statistics ../storage ../tcop ../tsearch ../utils $(top_builddir)/src/timezone \
-	../jit
-
-OBJS = \
-	$(LOCALOBJS) \
-	$(SUBDIROBJS) \
-	$(top_builddir)/src/common/libpgcommon_srv.a \
-	$(top_builddir)/src/port/libpgport_srv.a \
-
-OBJS_FUZZERS = $(filter-out ../main/objfiles.txt, $(OBJS))
-
-createdb: dbfuzz
-
-fuzzer: simple_query_fuzzer \
-	json_parser_fuzzer \
-	protocol_fuzzer
-
-simple_query_fuzzer json_parser_fuzzer: %: %.o fuzzer_initialize.o $(OBJS_FUZZERS)
-	$(CXX) $(CFLAGS) $(call expand_subsys,$^) -o $@ $(LIB_FUZZING_ENGINE)
-
-simple_query_fuzzer.o json_parser_fuzzer.o protocol_fuzzer.o fuzzer_initialize.o: %.o: %.c
-	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $^ 
-
-protocol_fuzzer: %: %.o $(OBJS_FUZZERS)
-	$(CXX) $(CFLAGS) $(call expand_subsys,$^) -o $@ $(LIB_FUZZING_ENGINE) -Wl,--wrap=exit -Wl,--wrap=pq_getbyte
-
-dbfuzz: dbfuzz.o | submake-libpgport temp-install
-	$(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ \
-	&& PATH="$(abs_top_builddir)/tmp_install$(bindir):$$PATH" LD_LIBRARY_PATH="$(abs_top_builddir)/tmp_install/usr/local/pgsql/lib" ./dbfuzz
-
-dbfuzz.o: dbfuzz.c $(top_builddir)/src/port/pg_config_paths.h 
-dbfuzz.o: override CPPFLAGS := $(CPPFLAGS) -I$(top_builddir)/src/port -I$(top_builddir)/../src/test/regress '-DSHELLPROG="$(SHELL)"'
-
-$(top_builddir)/src/port/pg_config_paths.h: | submake-libpgport
-	$(MAKE) -C $(top_builddir)/src/port pg_config_paths.h
diff --git a/projects/postgresql/fuzzer/dbfuzz.c b/projects/postgresql/fuzzer/dbfuzz.c
deleted file mode 100644
index 9a9bf79..0000000
--- a/projects/postgresql/fuzzer/dbfuzz.c
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///////////////////////////////////////////////////////////////////////////
-
-/*-------------------------------------------------------------------------
- *
- * 
- * This code is released under the terms of the PostgreSQL License.
- *
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres_fe.h"
-
-#include <sys/stat.h>
-#include <sys/wait.h>
-
-#include "common/logging.h"
-#include "common/restricted_token.h"
-#include "libpq/pqcomm.h"
-#include "pg_config_paths.h"
-#include "pg_regress.h"
-
-const char *progname = "progname";
-static char *shellprog = SHELLPROG;
-char *outputdir = ".";
-static char *temp_instance = NULL;
-static int port = -1;
-static const char *sockdir;
-static PID_TYPE postmaster_pid = INVALID_PID;
-
-static void psql_command(const char *database, const char *query, ...) {
-  char query_formatted[1024];
-  char query_escaped[2048];
-  char psql_cmd[MAXPGPATH + 2048];
-  va_list args;
-  char *s;
-  char *d;
-
-  va_start(args, query);
-  vsnprintf(query_formatted, sizeof(query_formatted), query, args);
-  va_end(args);
-
-  d = query_escaped;
-  for (s = query_formatted; *s; s++) {
-    if (strchr("\\\"$`", *s))
-      *d++ = '\\';
-    *d++ = *s;
-  }
-  *d = '\0';
-
-  snprintf(psql_cmd, sizeof(psql_cmd), "\"%s%spsql\" -X -c \"%s\" \"%s\"",
-           "", "", query_escaped, database);
-
-  system(psql_cmd);
-}
-
-PID_TYPE
-spawn_process(const char *cmdline) {
-  pid_t pid;
-  pid = fork();
-  if (pid == 0) {
-    char *cmdline2;
-    cmdline2 = psprintf("exec %s", cmdline);
-    execl(shellprog, shellprog, "-c", cmdline2, (char *)NULL);
-    fprintf(stderr, _("%s: could not exec \"%s\": %s\n"), progname, shellprog,
-            strerror(errno));
-    _exit(1);
-  }
-
-  return pid;
-}
-
-int main() {
-  int i;
-  char buf[MAXPGPATH * 4];
-  char buf2[MAXPGPATH * 4];
-  char *db_name = "./dbfuzz";
-  int wait_seconds = 60;
-
-  pg_logging_init(db_name);
-  progname = get_progname(db_name);
-  set_pglocale_pgservice(db_name, PG_TEXTDOMAIN("pg_dbfuzz"));
-  get_restricted_token();
-
-  temp_instance = make_absolute_path("./temp");
-  port = 0xC000 | (PG_VERSION_NUM & 0x3FFF);
-  outputdir = make_absolute_path(outputdir);
-  sockdir = mkdtemp(psprintf("/tmp/pg_dbfuzz-XXXXXX"));
-  putenv(psprintf("PGHOST=%s", sockdir));
-
-  mkdir(temp_instance, S_IRWXU | S_IRWXG | S_IRWXO);
-
-  snprintf(buf, sizeof(buf), "%s/log", outputdir);
-  mkdir(buf, S_IRWXU | S_IRWXG | S_IRWXO);
-
-  snprintf(buf, sizeof(buf),
-           "\"%s%sinitdb\" -D \"%s/data\" --no-clean --no-sync > "
-           "\"%s/log/initdb.log\" 2>&1",
-           "", "", temp_instance, outputdir);
-  system(buf);
-
-  snprintf(buf, sizeof(buf), "%s/data/postgresql.conf", temp_instance);
-
-  snprintf(buf2, sizeof(buf2), "\"%s%spsql\" -X postgres <%s 2>%s", "", "",
-           DEVNULL, DEVNULL);
-
-  snprintf(buf, sizeof(buf),
-           "\"%s%spostgres\" -D \"%s/data\" -F%s "
-           "-c \"listen_addresses=%s\" -k \"%s\" "
-           "> \"%s/log/postmaster.log\" 2>&1",
-           "", "", temp_instance, "", "", sockdir, outputdir);
-
-  postmaster_pid = spawn_process(buf);
-
-  for (i = 0; i < wait_seconds; i++) {
-    if (system(buf2) == 0)
-      break;
-    waitpid(postmaster_pid, NULL, WNOHANG);
-    pg_usleep(1000000L);
-  }
-
-  psql_command("postgres", "CREATE DATABASE \"%s\" TEMPLATE=template0%s",
-               "dbfuzz", "");
-
-  snprintf(buf, sizeof(buf), "\"%s%spg_ctl\" stop -D \"%s/data\" -s", "",
-           "", temp_instance);
-  system(buf);
-
-  rmdir(sockdir);
-  return 0;
-}
diff --git a/projects/postgresql/fuzzer/fuzzer_initialize.c b/projects/postgresql/fuzzer/fuzzer_initialize.c
deleted file mode 100644
index 0ab9d7d..0000000
--- a/projects/postgresql/fuzzer/fuzzer_initialize.c
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include "postgres.h"
-
-#include "access/xlog.h"
-#include "access/xact.h"
-#include "common/username.h"
-#include "executor/spi.h"
-#include "jit/jit.h"
-#include "libpq/libpq.h"
-#include "libpq/pqsignal.h"
-#include "miscadmin.h"
-#include "optimizer/optimizer.h"
-#include "parser/analyze.h"
-#include "parser/parser.h"
-#include "storage/proc.h"
-#include "tcop/tcopprot.h"
-#include "utils/datetime.h"
-#include "utils/memutils.h"
-#include "utils/portal.h"
-#include "utils/snapmgr.h"
-#include "utils/timeout.h"
-
-#include <libgen.h>
-
-const char *progname;
-static MemoryContext row_description_context = NULL;
-static StringInfoData row_description_buf;
-static const char *username = "username";
-
-int FuzzerInitialize(char *dbname, char ***argv){
-  char *av[5];
-  char arg_path[50];
-  char path_to_db[50];
-  char untar[100];
-  char *exe_path = (*argv)[0];
-  //dirname() can modify its argument
-  char *exe_path_copy = strdup(exe_path);
-  char *dir = dirname(exe_path_copy);
-  chdir(dir);
-  free(exe_path_copy);
-
-  snprintf(arg_path, sizeof(arg_path), "/tmp/%s/data", dbname);
-  snprintf(path_to_db, sizeof(path_to_db), "-D\"/tmp/%s/data\"", dbname);
-  snprintf(untar, sizeof(untar), "rm -rf /tmp/%s; mkdir /tmp/%s; cp -r data /tmp/%s", dbname, dbname, dbname);
-
-  av[0] = "tmp_install/usr/local/pgsql/bin/postgres";
-  av[1] = path_to_db;
-  av[2] = "-F";
-  av[3] = "-k\"/tmp\"";
-  av[4] = NULL;
-
-  system(untar);
-  
-  progname = get_progname(av[0]);
-  MemoryContextInit();
-
-  InitStandaloneProcess(av[0]);
-  SetProcessingMode(InitProcessing);
-  InitializeGUCOptions();
-  process_postgres_switches(4, av, PGC_POSTMASTER, NULL);
-
-  SelectConfigFiles(arg_path, progname);
-
-  checkDataDir();
-  ChangeToDataDir();
-  CreateDataDirLockFile(false);
-  LocalProcessControlFile(false);
-  InitializeMaxBackends();
-		 
-  BaseInit();
-  InitProcess();
-  PG_SETMASK(&UnBlockSig);
-  InitPostgres("dbfuzz", InvalidOid, username, InvalidOid, NULL, false);
- 
-  SetProcessingMode(NormalProcessing);
-
-  BeginReportingGUCOptions();
-  process_session_preload_libraries();
-
-  MessageContext = AllocSetContextCreate(TopMemoryContext,
-					 "MessageContext",
-					 ALLOCSET_DEFAULT_SIZES);
-  row_description_context = AllocSetContextCreate(TopMemoryContext,
-						  "RowDescriptionContext",
-						  ALLOCSET_DEFAULT_SIZES);
-  MemoryContextSwitchTo(row_description_context);
-  initStringInfo(&row_description_buf);
-  MemoryContextSwitchTo(TopMemoryContext);
-
-  PgStartTime = GetCurrentTimestamp();
-  whereToSendOutput = DestNone;
-  Log_destination = 0;
-  return 0;
-}
diff --git a/projects/postgresql/fuzzer/json_parser_fuzzer.c b/projects/postgresql/fuzzer/json_parser_fuzzer.c
deleted file mode 100644
index 08a96fd..0000000
--- a/projects/postgresql/fuzzer/json_parser_fuzzer.c
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include "postgres.h"
-
-#include "common/jsonapi.h"
-#include "mb/pg_wchar.h"
-#include "utils/memutils.h"
-#include "utils/memdebug.h"
-
-int LLVMFuzzerInitialize(int *argc, char ***argv) {
-	FuzzerInitialize("json_db", argv);
-	return 0;
-}
-
-/*
-** Main entry point.  The fuzzer invokes this function with each
-** fuzzed input.
-*/
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-	sigjmp_buf local_sigjmp_buf;
-	char *buffer;
-	JsonSemAction sem;
-	JsonLexContext *lex;
-
-	buffer = (char *) calloc(size+1, sizeof(char));
-	memcpy(buffer, data, size);
-
-	MemoryContextInit();
-	set_stack_base();
-	sem = nullSemAction;
-	lex = makeJsonLexContextCstringLen(buffer, size+1, PG_UTF8, true);
-
-	if(!sigsetjmp(local_sigjmp_buf,0)){
-		error_context_stack = NULL;
-		PG_exception_stack = &local_sigjmp_buf;
-		pg_parse_json(lex, &sem);
-	}
-	free(buffer);
-	FlushErrorState();
-	MemoryContextReset(TopMemoryContext);
-	TopMemoryContext->ident = NULL;
-	TopMemoryContext->methods->delete_context(TopMemoryContext);
-	VALGRIND_DESTROY_MEMPOOL(TopMemoryContext);
-	return 0;
-}
diff --git a/projects/postgresql/fuzzer/protocol_fuzzer.c b/projects/postgresql/fuzzer/protocol_fuzzer.c
deleted file mode 100644
index 7621644..0000000
--- a/projects/postgresql/fuzzer/protocol_fuzzer.c
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include "postgres.h"
-
-#include "access/xlog.h"
-#include "access/xact.h"
-#include "common/ip.h"
-#include "common/username.h"
-#include "executor/spi.h"
-#include "jit/jit.h"
-#include "libpq/auth.h"
-#include "libpq/libpq.h"
-#include "libpq/pqsignal.h"
-#include "miscadmin.h"
-#include "optimizer/optimizer.h"
-#include "parser/analyze.h"
-#include "parser/parser.h"
-#include "storage/proc.h"
-#include "tcop/tcopprot.h"
-#include "utils/datetime.h"
-#include "utils/memutils.h"
-#include "utils/memdebug.h"
-#include "utils/pidfile.h"
-#include "utils/portal.h"
-#include "utils/snapmgr.h"
-#include "utils/ps_status.h"
-#include "utils/timeout.h"
-
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <libgen.h>
-
-const char *progname = "progname";
-static sigjmp_buf postgre_exit;
-static bool postgre_started;
-static char *buffer;
-static size_t buffersize;
-static char *bufferpointer;
-static char *av[6];
-
-int LLVMFuzzerInitialize(int *argc, char ***argv) {
-	char *exe_path = (*argv)[0];
-	//dirname() can modify its argument
-	char *exe_path_copy = strdup(exe_path);
-	char *dir = dirname(exe_path_copy);
-	chdir(dir);
-	free(exe_path_copy);
-	
-	av[0] = "tmp_install/usr/local/pgsql/bin/postgres";
-	av[1] = "--single";
-	av[2] = "-D/tmp/protocol_db/data";
-	av[3] = "-F";
-	av[4] = "-k\"/tmp\"";
-	av[5] = NULL;
-
-	system("rm -rf /tmp/protocol_db; mkdir /tmp/protocol_db; cp -r data /tmp/protocol_db");
-	system("cp -r tmp_install /tmp/");
-
-	MemoryContextInit();
-	if(!sigsetjmp(postgre_exit, 0)){
-		postgre_started = true;
-		PostgresMain(5, av, "dbfuzz", "fuzzuser");
-	}
-	pq_endmsgread();
-	return 0;
-}
-
-void __wrap_exit(int status){
-	if(postgre_started)
-		siglongjmp(postgre_exit, 1);
-	else
-		__real_exit(status);
-}
-
-int __wrap_pq_getbyte(void){
-	if(!buffersize) return EOF;
-	unsigned char cur = buffer[0];
-	bufferpointer++; buffersize--;
-	return cur;
-}
-
-/*
-** Main entry point.  The fuzzer invokes this function with each
-** fuzzed input.
-*/
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-	buffersize = size;
-	buffer = (char *) calloc(size, sizeof(char));
-	bufferpointer = buffer;
-	memcpy(buffer, data, size);
-
-	if(!sigsetjmp(postgre_exit, 0)){
-		postgre_started = true;
-		PostgresMain(5, av, "dbfuzz", "fuzzuser");
-	}
-	pq_endmsgread();
-	postgre_started = false;
-	free(buffer);
-	return 0;
-}
diff --git a/projects/postgresql/fuzzer/simple_query_fuzzer.c b/projects/postgresql/fuzzer/simple_query_fuzzer.c
deleted file mode 100644
index 29c1362..0000000
--- a/projects/postgresql/fuzzer/simple_query_fuzzer.c
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include "postgres.h"
-
-#include "access/xlog.h"
-#include "access/xact.h"
-#include "common/username.h"
-#include "executor/spi.h"
-#include "jit/jit.h"
-#include "libpq/libpq.h"
-#include "libpq/pqsignal.h"
-#include "miscadmin.h"
-#include "optimizer/optimizer.h"
-#include "parser/analyze.h"
-#include "parser/parser.h"
-#include "storage/proc.h"
-#include "tcop/tcopprot.h"
-#include "utils/datetime.h"
-#include "utils/memutils.h"
-#include "utils/portal.h"
-#include "utils/snapmgr.h"
-#include "utils/timeout.h"
-
-static void
-exec_simple_query(const char *query_string)
-{
-  MemoryContext oldcontext;
-  List       *parsetree_list;
-  ListCell   *parsetree_item;
-  bool        use_implicit_block;
-
-  StartTransactionCommand();
-  oldcontext = MemoryContextSwitchTo(MessageContext);
-
-  parsetree_list = raw_parser(query_string, RAW_PARSE_TYPE_NAME);
-  MemoryContextSwitchTo(oldcontext);
-
-  use_implicit_block = (list_length(parsetree_list) > 1);
-
-  foreach(parsetree_item, parsetree_list)
-    {
-      RawStmt    *parsetree = lfirst_node(RawStmt, parsetree_item);
-      bool        snapshot_set = false;
-      MemoryContext per_parsetree_context = NULL;
-      List       *querytree_list,
-	*plantree_list;		
-
-      if (use_implicit_block)
-	BeginImplicitTransactionBlock();
-
-      if (analyze_requires_snapshot(parsetree))
-	{
-	  PushActiveSnapshot(GetTransactionSnapshot());
-	  snapshot_set = true;
-	}
-
-      if (lnext(parsetree_list, parsetree_item) != NULL)
-	{
-	  per_parsetree_context =
-	    AllocSetContextCreate(MessageContext,
-				  "per-parsetree message context",
-				  ALLOCSET_DEFAULT_SIZES);
-	  oldcontext = MemoryContextSwitchTo(per_parsetree_context);
-	}
-      else
-	oldcontext = MemoryContextSwitchTo(MessageContext);
-
-      querytree_list = pg_analyze_and_rewrite(parsetree, query_string,
-					      NULL, 0, NULL);
- 
-      plantree_list = pg_plan_queries(querytree_list, query_string,
-				      CURSOR_OPT_PARALLEL_OK, NULL);
-
-      if (per_parsetree_context){
-	MemoryContextDelete(per_parsetree_context);
-      }
-      CommitTransactionCommand();
-    }
-}
-
-
-int LLVMFuzzerInitialize(int *argc, char ***argv) {
-	FuzzerInitialize("query_db", argv);
-	return 0;
-}
-
-
-/*
-** Main entry point.  The fuzzer invokes this function with each
-** fuzzed input.
-*/
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  char* query_string;
-  sigjmp_buf local_sigjmp_buf;
-
-  query_string = (char*) calloc( (size+1), sizeof(char) );
-  memcpy(query_string, data, size);
-
-  if (!sigsetjmp(local_sigjmp_buf, 0))
-    {
-      PG_exception_stack = &local_sigjmp_buf;
-      error_context_stack = NULL;
-	  set_stack_base();
-
-      disable_all_timeouts(false);
-      QueryCancelPending = false;
-      pq_comm_reset();
-      EmitErrorReport();
-
-      AbortCurrentTransaction();
- 
-      PortalErrorCleanup();
-      SPICleanup();
-
-      jit_reset_after_error();
-
-      MemoryContextSwitchTo(TopMemoryContext);
-      FlushErrorState();
-
-      MemoryContextSwitchTo(MessageContext);
-      MemoryContextResetAndDeleteChildren(MessageContext);
-
-      InvalidateCatalogSnapshotConditionally();
-
-      SetCurrentStatementStartTimestamp();
-
-      exec_simple_query(query_string);
-    }
-
-  free(query_string);
-  return 0;
-}
diff --git a/projects/postgresql/project.yaml b/projects/postgresql/project.yaml
index 5cc7a3f..6f35108 100644
--- a/projects/postgresql/project.yaml
+++ b/projects/postgresql/project.yaml
@@ -1,14 +1,2 @@
 homepage: "https://postgresql.org"
-main_repo: "https://git.postgresql.org/git/postgresql"
 primary_contact: "sfrost@snowman.net"
-language: c
-auto_ccs:
-  - "ouyangyunshu@google.com"
-  - "frost.stephen.p@gmail.com"
-  - "aseering@google.com"
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
-  - afl
-sanitizers:
-  - address
diff --git a/projects/powerdns/Dockerfile b/projects/powerdns/Dockerfile
index db7614c..8307ace 100644
--- a/projects/powerdns/Dockerfile
+++ b/projects/powerdns/Dockerfile
@@ -18,9 +18,10 @@
 FROM gcr.io/oss-fuzz-base/base-builder
 
 # maintainer for this file
+MAINTAINER remi.gacogne@powerdns.com
 
 # install required packages to build your project
-RUN add-apt-repository -y ppa:savoury1/boost-defaults-1.71 && apt-get update && apt-get install -y autoconf automake bison dh-autoreconf flex boost1.71-dev libluajit-5.1-dev libedit-dev libprotobuf-dev libssl-dev libtool make pkg-config protobuf-compiler ragel
+RUN apt-get update && apt-get install -y autoconf automake bison dh-autoreconf flex libboost-all-dev libluajit-5.1-dev libedit-dev libprotobuf-dev libssl-dev libtool make pkg-config protobuf-compiler ragel
 
 # checkout all sources needed to build your project
 RUN git clone https://github.com/PowerDNS/pdns.git pdns
diff --git a/projects/powerdns/project.yaml b/projects/powerdns/project.yaml
index 770519a..7ef267f 100644
--- a/projects/powerdns/project.yaml
+++ b/projects/powerdns/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://www.powerdns.com/"
-language: c++
 primary_contact: "remi.gacogne@powerdns.com"
 auto_ccs:
   - "powerdnsossfuzz@gmail.com"
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/PowerDNS/pdns.git'
diff --git a/projects/proj4/Dockerfile b/projects/proj4/Dockerfile
index da7263a..6e9ca2c 100644
--- a/projects/proj4/Dockerfile
+++ b/projects/proj4/Dockerfile
@@ -15,8 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y make autoconf automake libtool g++ sqlite3 pkg-config wget
+MAINTAINER even.rouault@spatialys.com
+RUN dpkg --add-architecture i386 && \
+    apt-get update && \
+    apt-get install -y make autoconf automake libtool g++ sqlite3 pkg-config
 
 RUN git clone --depth 1 https://github.com/OSGeo/proj proj
 
diff --git a/projects/proj4/project.yaml b/projects/proj4/project.yaml
index bc1a49c..71bdcf8 100644
--- a/projects/proj4/project.yaml
+++ b/projects/proj4/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://proj.org/"
-language: c++
 primary_contact: "even.rouault@gmail.com"
 auto_ccs:
   - "hobu.inc@gmail.com"
diff --git a/projects/prometheus/Dockerfile b/projects/prometheus/Dockerfile
deleted file mode 100644
index 7e22750..0000000
--- a/projects/prometheus/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-ENV GO111MODULE=on
-RUN git clone https://github.com/prometheus/prometheus $GOPATH/src/github.com/prometheus/prometheus
-COPY build.sh $SRC/
-# Required to avoid 'working directory is not part of a module' error.
-WORKDIR $GOPATH/src/github.com/prometheus/prometheus
diff --git a/projects/prometheus/build.sh b/projects/prometheus/build.sh
deleted file mode 100755
index 87c393b..0000000
--- a/projects/prometheus/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer github.com/prometheus/prometheus/promql FuzzParseMetric fuzzParseMetric
-compile_go_fuzzer github.com/prometheus/prometheus/promql FuzzParseOpenMetric fuzzParseOpenMetric
-compile_go_fuzzer github.com/prometheus/prometheus/promql FuzzParseMetricSelector fuzzParseMetricSelector
-compile_go_fuzzer github.com/prometheus/prometheus/promql FuzzParseExpr fuzzParseExpr
diff --git a/projects/prometheus/project.yaml b/projects/prometheus/project.yaml
deleted file mode 100644
index a753a61..0000000
--- a/projects/prometheus/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/prometheus/prometheus"
-primary_contact: "prometheus-team@googlegroups.com"
-auto_ccs :
-  - "julius.volz@gmail.com"
-  - "beorn@grafana.com"
-  - "roidelapluie@prometheus.io"
-  - "richih@richih.org"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/prometheus/prometheus'
diff --git a/projects/protobuf-c/Dockerfile b/projects/protobuf-c/Dockerfile
deleted file mode 100644
index c4407cc..0000000
--- a/projects/protobuf-c/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-MAINTAINER guidovranken@gmail.com
-RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
-RUN git clone --depth 1 --recursive https://github.com/protocolbuffers/protobuf.git
-RUN git clone --depth 1 https://github.com/protobuf-c/protobuf-c.git -b next
-RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
-RUN git clone --depth 1 https://github.com/guidovranken/protobuf-c-fuzzers.git
-COPY build.sh $SRC/
diff --git a/projects/protobuf-c/build.sh b/projects/protobuf-c/build.sh
deleted file mode 100755
index 8eda36a..0000000
--- a/projects/protobuf-c/build.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export ASAN_OPTIONS=alloc_dealloc_mismatch=0
-
-if [[ $CFLAGS = *sanitize=address* ]]
-then
-    export CXXFLAGS="$CXXFLAGS -DASAN"
-fi
-
-if [[ $CFLAGS = *sanitize=memory* ]]
-then
-    export CXXFLAGS="$CXXFLAGS -DMSAN"
-fi
-
-if [[ $SANITIZER = coverage ]]
-then
-    export CXXFLAGS="$CXXFLAGS -fno-use-cxa-atexit"
-fi
-
-mkdir $SRC/protobuf-install/
-cd $SRC/protobuf/
-./autogen.sh
-./configure --prefix=$SRC/protobuf-install
-make -j$(nproc)
-make install
-
-export PROTOC="$SRC/protobuf-install/bin/protoc"
-
-cd $SRC/protobuf-c/
-./autogen.sh
-./configure --enable-static=yes --enable-shared=false PKG_CONFIG_PATH=$SRC/protobuf-install/lib/pkgconfig
-
-make -j$(nproc)
-
-cd $SRC/fuzzing-headers/
-./install.sh
-
-cd $SRC/protobuf-c-fuzzers/
-cp $SRC/protobuf-c/t/test-full.proto $SRC/protobuf-c-fuzzers/
-export PATH=$PATH:$SRC/protobuf-c/protoc-c
-$PROTOC --c_out=. test-full.proto
-$CC $CFLAGS test-full.pb-c.c -I $SRC/protobuf-install -I $SRC/protobuf-c -c -o test-full.pb-c.o
-$CXX $CXXFLAGS fuzzer.cpp -I $SRC/protobuf-install -I $SRC/protobuf-c test-full.pb-c.o $SRC/protobuf-c/protobuf-c/.libs/libprotobuf-c.a $LIB_FUZZING_ENGINE -o $OUT/fuzzer
diff --git a/projects/protobuf-c/project.yaml b/projects/protobuf-c/project.yaml
deleted file mode 100644
index 9103f1b..0000000
--- a/projects/protobuf-c/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/protobuf-c/protobuf-c"
-language: c
-primary_contact: "guidovranken@gmail.com"
-auto_ccs:
-  - "ilya.lipnitskiy@gmail.com"
-sanitizers:
- - address
- - memory
-architectures:
- - x86_64
- - i386
-main_repo: 'https://github.com/protobuf-c/protobuf-c.git'
-coverage_extra_args: -ignore-filename-regex=.*/protobuf-install/.*
diff --git a/projects/proxygen/Dockerfile b/projects/proxygen/Dockerfile
index 7899ed2..14c3da5 100644
--- a/projects/proxygen/Dockerfile
+++ b/projects/proxygen/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mhl@fb.com
 
 # Install packages we need to build dependencies
 RUN apt-get update && \
@@ -30,8 +31,22 @@
     python \
     python-dev
 
+# We need a newer version of CMake than is available in the base builder image
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2.tar.gz && \
+    tar xzf cmake-3.15.2.tar.gz && \
+    cd cmake-3.15.2 && \
+    export CC=clang && \
+    export CXX=clang++ && \
+    CXXFLAGS="" && \
+    CFLAGS="" && \
+    ./bootstrap && \
+    make -j$(nproc) && \
+    make install && \
+    cd .. && \
+    rm -rf cmake-3.15.2
+
 # Install and build boost from source so we can have it use libc++
-RUN wget https://sourceforge.net/projects/boost/files/boost/1.70.0/boost_1_70_0.tar.gz && \
+RUN wget https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz && \
     tar xzf boost_1_70_0.tar.gz && \
     cd boost_1_70_0 && \
     ./bootstrap.sh --with-toolset=clang && \
@@ -110,24 +125,6 @@
     sudo make install && \
     cd ../.. && \
     rm -rf fmt-6.0.0
-    
-# Build and install `gperf` (>= 3.1)
-RUN wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz && \
-    rm -rf gperf-3.1 | true && \
-    tar xzvf gperf-3.1.tar.gz && \
-    cd gperf-3.1 && \
-    export CC=gcc && \
-    export CXX=g++ && \
-    export CXXFLAGS="" && \
-    export CFLAGS_TMP="$CFLAGS" && \
-    unset CFLAGS && \
-    ./configure && \
-    make -j1 V=s && \
-    sudo make install && \
-    export CFLAGS="$CFLAGS_TMP" && \
-    unset CFLAGS_TMP && \
-    cd .. && \
-    rm -rf gperf-3.1
 
 # Replicate `install-dependencies` from the proxygen `build.sh` script
 RUN apt-get install -y \
@@ -140,6 +137,7 @@
     pkg-config \
     libssl-dev \
     libcap-dev \
+    gperf \
     libevent-dev \
     libtool \
     libjemalloc-dev \
@@ -158,4 +156,4 @@
 # Fetch source and copy over files
 RUN git clone --depth 1 https://github.com/facebook/proxygen.git proxygen
 WORKDIR proxygen
-COPY build.sh $SRC/
+COPY build.sh $SRC/
\ No newline at end of file
diff --git a/projects/proxygen/project.yaml b/projects/proxygen/project.yaml
index 222ed52..107b628 100644
--- a/projects/proxygen/project.yaml
+++ b/projects/proxygen/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/facebook/proxygen"
-language: c++
 primary_contact: "mhl@fb.com"
 auto_ccs:
   - "gulshan@fb.com"
@@ -21,4 +20,3 @@
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/facebook/proxygen.git'
diff --git a/projects/pugixml/Dockerfile b/projects/pugixml/Dockerfile
deleted file mode 100755
index 40b330d..0000000
--- a/projects/pugixml/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/zeux/pugixml
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/pugixml/build.sh b/projects/pugixml/build.sh
deleted file mode 100755
index e8ab206..0000000
--- a/projects/pugixml/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd pugixml
-
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE tests/fuzz_parse.cpp src/pugixml.cpp -o ${OUT}/fuzz_parse
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE tests/fuzz_xpath.cpp src/pugixml.cpp -o ${OUT}/fuzz_xpath
-
-zip -r ${OUT}/fuzz_parse_seed_corpus.zip tests/data_fuzz_parse
-zip -r ${OUT}/fuzz_xpath_seed_corpus.zip tests/data_fuzz_xpath
-
-cp tests/fuzz_parse.dict ${OUT}/fuzz_parse.dict
-cp tests/fuzz_xpath.dict ${OUT}/fuzz_xpath.dict
diff --git a/projects/pugixml/project.yaml b/projects/pugixml/project.yaml
deleted file mode 100755
index 2df1799..0000000
--- a/projects/pugixml/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/zeux/pugixml"
-primary_contact: "arseny.kapoulkine@gmail.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/zeux/pugixml'
diff --git a/projects/pycryptodome/Dockerfile b/projects/pycryptodome/Dockerfile
deleted file mode 100644
index c8702f8..0000000
--- a/projects/pycryptodome/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/Legrandin/pycryptodome.git
-WORKDIR pycryptodome/src
-COPY build.sh *_fuzzer.cc $SRC/
-COPY block_common.patch $SRC/pycryptodome/src
diff --git a/projects/pycryptodome/block_common.patch b/projects/pycryptodome/block_common.patch
deleted file mode 100644
index dd71b96..0000000
--- a/projects/pycryptodome/block_common.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/block_common.c b/src/block_common.c
-index 169200a6..c6da1f85 100644
---- a/src/block_common.c
-+++ b/src/block_common.c
-@@ -106,7 +106,7 @@ EXPORT_SYM int CIPHER_START_OPERATION(const uint8_t key[], size_t key_len, CIPHE
-     if ((key == NULL) || (pResult == NULL))
-         return ERR_NULL;
-
--    *pResult = calloc(1, sizeof(CIPHER_STATE_TYPE));
-+    *pResult = (CIPHER_STATE_TYPE *) calloc(1, sizeof(CIPHER_STATE_TYPE));
-     if (NULL == *pResult)
-         return ERR_MEMORY;
diff --git a/projects/pycryptodome/build.sh b/projects/pycryptodome/build.sh
deleted file mode 100755
index 4cdd470..0000000
--- a/projects/pycryptodome/build.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-patch block_common.c block_common.patch
-
-PCD_INTERNALS=(./*.c ./libtom/*.c)
-PCD_FLAGS=(
-  "-I $SRC/pycryptodome/src"
-  "-I $SRC/pycryptodome/src/libtom"
-  "-D HAVE_STDINT_H"
-  "-D HAVE_MEMALIGN"
-  "-D HAVE_INTRIN_H"
-  "-D SYS_BITS=$(getconf LONG_BIT)"
-  "-maes -msse2 -mpclmul"
-)
-
-$CC $CFLAGS \
-    ${PCD_FLAGS[@]} \
-    -c "${PCD_INTERNALS//'blake2.c'/}"
-ar -qc $WORK/libpycryptodome.a *.o
-
-PCD_HASH_OPTIONS=(
-  "-D HASHTYPE=md2 -D FNAME=MD2.c -D DIGEST_SIZE=16 -o $OUT/md2_fuzzer"
-  "-D HASHTYPE=md4 -D FNAME=MD4.c -D DIGEST_SIZE=16 -o $OUT/md4_fuzzer"
-  "-D HASHTYPE=MD5 -D FNAME=MD5.c -o $OUT/md5_fuzzer"
-  "-D HASHTYPE=ripemd160 -D FNAME=RIPEMD160.c -D DIGEST_SIZE=RIPEMD160_DIGEST_SIZE -o $OUT/ripemd160_fuzzer"
-  "-D HASHTYPE=SHA224 -D FNAME=SHA224.c -D DIGEST_THIRD_PARAM -o $OUT/sha224_fuzzer"
-  "-D HASHTYPE=SHA256 -D FNAME=SHA256.c -D DIGEST_THIRD_PARAM -o $OUT/sha256_fuzzer"
-  "-D HASHTYPE=SHA384 -D FNAME=SHA384.c -D DIGEST_THIRD_PARAM -o $OUT/sha384_fuzzer"
-)
-
-for ((i = 0; i < ${#PCD_HASH_OPTIONS[@]}; i++)); do
-  $CXX $CXXFLAGS ${PCD_FLAGS[@]} \
-      $SRC/pcd_hash_fuzzer.cc ${PCD_HASH_OPTIONS[i]} \
-      $LIB_FUZZING_ENGINE $WORK/libpycryptodome.a
-done
-
-$CXX $CXXFLAGS ${PCD_FLAGS[@]} \
-    $SRC/pcd_aes_fuzzer.cc -o $OUT/aes_fuzzer \
-    $LIB_FUZZING_ENGINE $WORK/libpycryptodome.a
diff --git a/projects/pycryptodome/pcd_aes_fuzzer.cc b/projects/pycryptodome/pcd_aes_fuzzer.cc
deleted file mode 100644
index 0586aa4..0000000
--- a/projects/pycryptodome/pcd_aes_fuzzer.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "AES.c"
-#include "common.h"
-#include <fuzzer/FuzzedDataProvider.h>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  if (!size)
-    return 0;
-
-  enum KeySize { AES128 = 16, AES192 = 24, AES256 = 32, kMaxValue = AES256 };
-
-  FuzzedDataProvider stream(data, size);
-  const KeySize keySize = stream.ConsumeEnum<KeySize>();
-  if (stream.remaining_bytes() < keySize)
-    return 0;
-
-  std::vector<uint8_t> keyBuf = stream.ConsumeBytes<uint8_t>(keySize);
-  const uint8_t *key = keyBuf.data();
-
-  BlockBase *state;
-  if (AES_start_operation(key, keySize, reinterpret_cast<AES_State **>(&state)))
-    return 0;
-
-  uint8_t outEnc[size];
-  uint8_t outDec[size];
-
-  AES_encrypt(reinterpret_cast<BlockBase *>(state), data, outEnc, size);
-  AES_decrypt(reinterpret_cast<BlockBase *>(state), data, outDec, size);
-
-  AES_stop_operation(reinterpret_cast<BlockBase *>(state));
-
-  return 0;
-}
diff --git a/projects/pycryptodome/pcd_hash_fuzzer.cc b/projects/pycryptodome/pcd_hash_fuzzer.cc
deleted file mode 100644
index 681f834..0000000
--- a/projects/pycryptodome/pcd_hash_fuzzer.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "common.h"
-#include <fuzzer/FuzzedDataProvider.h>
-
-#ifndef HASHTYPE
-#error Macro HASHTYPE must be defined.
-#endif
-
-#ifndef FNAME
-#error Macro FNAME must be defined.
-#endif
-
-#define CONCAT_TYPE(x) _PASTE2(HASHTYPE, x)
-
-#define init CONCAT_TYPE(_init)
-#define update CONCAT_TYPE(_update)
-#define digest CONCAT_TYPE(_digest)
-#define destroy CONCAT_TYPE(_destroy)
-
-#define STR(x) #x
-#define INCLUDE(x) STR(x)
-
-#include INCLUDE(FNAME)
-
-#ifndef DIGEST_SIZE
-#error Macro DIGEST_SIZE must be defined.
-#endif
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  if (!size)
-    return 0;
-
-  FuzzedDataProvider stream(data, size);
-  hash_state *hs;
-  if (init(&hs))
-    return 0;
-
-  while (stream.remaining_bytes()) {
-    size_t num_bytes = stream.ConsumeIntegral<size_t>();
-    std::vector<uint8_t> buffer = stream.ConsumeBytes<uint8_t>(num_bytes);
-
-    if (update(hs, buffer.data(), buffer.size()))
-      goto error;
-  }
-
-  uint8_t result[DIGEST_SIZE];
-
-#ifndef DIGEST_THIRD_PARAM
-  digest(hs, result);
-#else
-  digest(hs, result, DIGEST_SIZE);
-#endif
-
-error:
-  destroy(hs);
-  return 0;
-}
diff --git a/projects/pycryptodome/project.yaml b/projects/pycryptodome/project.yaml
deleted file mode 100644
index 0271bd9..0000000
--- a/projects/pycryptodome/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "https://www.pycryptodome.org/"
-language: c
-primary_contact: "helderijs@gmail.com"
-main_repo: 'https://github.com/Legrandin/pycryptodome.git'
diff --git a/projects/pygments/Dockerfile b/projects/pygments/Dockerfile
deleted file mode 100644
index b23fc1b..0000000
--- a/projects/pygments/Dockerfile
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone \
-	--depth 1 \
-	--branch master \
-	https://github.com/pygments/pygments.git
-
-WORKDIR pygments
-
-RUN git clone --depth 1 https://github.com/google/fuzzing
-RUN cat fuzzing/dictionaries/aff.dict \
-        fuzzing/dictionaries/bash.dict \
-        fuzzing/dictionaries/creole.dict \
-        fuzzing/dictionaries/css.dict \
-        fuzzing/dictionaries/graphviz.dict \
-        fuzzing/dictionaries/fbs.dict \
-        fuzzing/dictionaries/html.dict \
-        fuzzing/dictionaries/jinja2.dict \
-        fuzzing/dictionaries/js.dict \
-        fuzzing/dictionaries/json.dict \
-        fuzzing/dictionaries/lua.dict \
-        fuzzing/dictionaries/markdown.dict \
-        fuzzing/dictionaries/mathml.dict \
-        fuzzing/dictionaries/pdf.dict \
-        fuzzing/dictionaries/protobuf.dict \
-        fuzzing/dictionaries/ps.dict \
-        fuzzing/dictionaries/regexp.dict \
-        fuzzing/dictionaries/rst.dict \
-        fuzzing/dictionaries/rtf.dict \
-        fuzzing/dictionaries/sql.dict \
-        fuzzing/dictionaries/svg.dict \
-        fuzzing/dictionaries/tex.dict \
-        fuzzing/dictionaries/toml.dict \
-        fuzzing/dictionaries/utf8.dict \
-        fuzzing/dictionaries/vcf.dict \
-        fuzzing/dictionaries/wkt.dict \
-        fuzzing/dictionaries/x86.dict \
-        fuzzing/dictionaries/xml.dict \
-        fuzzing/dictionaries/xpath.dict \
-        fuzzing/dictionaries/xslt.dict \
-        fuzzing/dictionaries/yaml.dict \
-        fuzzing/dictionaries/yara.dict \
-      > $OUT/pygments_fuzzer.dict
-
-COPY build.sh pygments_fuzzer.py $SRC/
diff --git a/projects/pygments/build.sh b/projects/pygments/build.sh
deleted file mode 100644
index 01924b5..0000000
--- a/projects/pygments/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build and install project (using current CFLAGS, CXXFLAGS).
-pip3 install .
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
-
-zip -j $OUT/files_fuzzer_seed_corpus.zip tests/examplefiles/*
diff --git a/projects/pygments/project.yaml b/projects/pygments/project.yaml
deleted file mode 100644
index e80b605..0000000
--- a/projects/pygments/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://pygments.org/"
-main_repo: "https://github.com/pygments/pygments"
-language: python
-primary_contact: "georg.brandl@gmail.com"
-auto_ccs:
-  - "jvoisin@google.com"
-  - "ipudney@google.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/pygments/pygments_fuzzer.py b/projects/pygments/pygments_fuzzer.py
deleted file mode 100644
index 9d21ba3..0000000
--- a/projects/pygments/pygments_fuzzer.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-import atheris
-import pygments
-import pygments.formatters
-import pygments.lexers
-
-
-def TestOneInput(input_bytes):
-  fdp = atheris.FuzzedDataProvider(input_bytes)
-  data = fdp.ConsumeUnicode(atheris.ALL_REMAINING)
-
-  try:
-    lexer = pygments.lexers.guess_lexer(data)
-  except ValueError:
-    return
-  pygments.highlight(data, lexer, pygments.formatters.HtmlFormatter())
-
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/python-lz4/Dockerfile b/projects/python-lz4/Dockerfile
deleted file mode 100644
index 8598ed3..0000000
--- a/projects/python-lz4/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/python-lz4/python-lz4
-
-COPY build.sh $SRC/
-COPY fuzz_* $SRC/
-
-WORKDIR $SRC/python-lz4
-
diff --git a/projects/python-lz4/build.sh b/projects/python-lz4/build.sh
deleted file mode 100644
index 66f6419..0000000
--- a/projects/python-lz4/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-python3 setup.py install
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/python-lz4/fuzz_lz4.py b/projects/python-lz4/fuzz_lz4.py
deleted file mode 100644
index ff6787d..0000000
--- a/projects/python-lz4/fuzz_lz4.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/python3
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-import atheris
-import lz4.frame
-
-def TestOneInput(data):
-    c =lz4.frame.compress(data)
-    d = lz4.frame.decompress(c)
-    assert(data == d)
-    return
-
-def main():
-    atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-    atheris.Fuzz()
-
-if __name__ == "__main__":
-    main()
diff --git a/projects/python-lz4/project.yaml b/projects/python-lz4/project.yaml
deleted file mode 100644
index 0f13110..0000000
--- a/projects/python-lz4/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/lz4/lz4"
-language: python
-primary_contact: "jonathan.underwood@gmail.com"
-auto_ccs:
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/lz4/lz4'
diff --git a/projects/python3-libraries/Dockerfile b/projects/python3-libraries/Dockerfile
index 3da576e..76467e2 100644
--- a/projects/python3-libraries/Dockerfile
+++ b/projects/python3-libraries/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get install -y build-essential libncursesw5-dev libreadline-dev libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev libbz2-dev zlib1g-dev libffi-dev
 RUN git clone https://github.com/python/cpython.git cpython
 RUN git clone --depth 1 https://github.com/guidovranken/python-library-fuzzers.git
diff --git a/projects/python3-libraries/build.sh b/projects/python3-libraries/build.sh
index 3da2935..0c75c07 100755
--- a/projects/python3-libraries/build.sh
+++ b/projects/python3-libraries/build.sh
@@ -59,6 +59,7 @@
 cp -R $CPYTHON_INSTALL_PATH $OUT/
 
 cd $SRC/python-library-fuzzers
+rm $CPYTHON_INSTALL_PATH/lib/python3.9/lib-dynload/_tkinter*.so
 make
 
 cp $SRC/python-library-fuzzers/fuzzer-html $OUT/
diff --git a/projects/python3-libraries/project.yaml b/projects/python3-libraries/project.yaml
index 2be3fe3..8292f3b 100644
--- a/projects/python3-libraries/project.yaml
+++ b/projects/python3-libraries/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://python.org/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
  - "gps@google.com"
@@ -7,7 +6,6 @@
  - "ammar@ammaraskar.com"
 fuzzing_engines:
   - libfuzzer
-  - honggfuzz
 sanitizers:
  - address
  - undefined
diff --git a/projects/pyyaml/Dockerfile b/projects/pyyaml/Dockerfile
deleted file mode 100644
index 3d5bc54..0000000
--- a/projects/pyyaml/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/yaml/pyyaml
-WORKDIR $SRC
-COPY build.sh $SRC/
-COPY fuzz_* $SRC/
diff --git a/projects/pyyaml/build.sh b/projects/pyyaml/build.sh
deleted file mode 100644
index de7d84c..0000000
--- a/projects/pyyaml/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd pyyaml
-python3 ./setup.py --without-libyaml install
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/pyyaml/fuzz_loader.py b/projects/pyyaml/fuzz_loader.py
deleted file mode 100644
index 6600d84..0000000
--- a/projects/pyyaml/fuzz_loader.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import atheris
-
-import yaml
-
-
-def TestOneInput(input_bytes):
-  try:
-    context = yaml.load(input_bytes, Loader=yaml.FullLoader)
-  except yaml.YAMLError:
-    pass
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/pyyaml/fuzz_reader.py b/projects/pyyaml/fuzz_reader.py
deleted file mode 100644
index d7a0e2c..0000000
--- a/projects/pyyaml/fuzz_reader.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-import sys
-import atheris
-import yaml.reader
-
-def TestOneInput(data):
-    if len(data) < 1:
-        return 
-    try:
-        stream = yaml.reader.Reader(data)
-        while stream.peek() != u'\0':
-            stream.forward()
-    except yaml.reader.ReaderError:
-        None
-
-    return 
-
-def main():
-    atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-    atheris.Fuzz()
-
-if __name__ == "__main__":
-    main()
diff --git a/projects/pyyaml/project.yaml b/projects/pyyaml/project.yaml
deleted file mode 100644
index aa329e7..0000000
--- a/projects/pyyaml/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/yaml/pyyaml"
-language: python
-primary_contact: "pyyaml@yaml.com"
-auto_ccs:
-  - "david@adalogics.com"
-  - "p.antoine@catenacyber.fr"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: "https://github.com/yaml/pyyaml"
diff --git a/projects/qcms/Dockerfile b/projects/qcms/Dockerfile
index c124a14..3f66e5d 100644
--- a/projects/qcms/Dockerfile
+++ b/projects/qcms/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pdknsk@gmail.com
 RUN apt-get update && apt-get install -y mercurial
 RUN hg clone --uncompressed https://hg.mozilla.org/mozilla-central/
 COPY build.sh $SRC/
diff --git a/projects/qcms/build.sh b/projects/qcms/build.sh
index 0fda343..9b56aae 100644
--- a/projects/qcms/build.sh
+++ b/projects/qcms/build.sh
@@ -15,9 +15,23 @@
 #
 ################################################################################
 
-cargo fuzz build -O
+# moz.build
+$CC $CFLAGS -c \
+  -DNDEBUG -msse -msse2 -Wno-missing-field-initializers \
+  chain.c \
+  iccread.c \
+  matrix.c \
+  transform.cpp \
+  transform-sse1.cpp \
+  transform-sse2.cpp \
+  transform_util.c
 
-find fuzz -iname "*.icc" \
+$CXX $CXXFLAGS -std=c++11 \
+  -I. *.o \
+  -DBUILD_FOR_OSSFUZZ \
+  $LIB_FUZZING_ENGINE \
+  fuzztest/qcms_fuzzer.cpp -o $OUT/fuzz
+
+find fuzztest -iname "*.icc" \
   -type f -exec zip -qju $OUT/fuzz_seed_corpus.zip "{}" \;
-cp fuzz/qcms_fuzzer.dict $OUT/fuzz.dict
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_qcms $OUT/fuzz
+cp fuzztest/qcms_fuzzer.dict $OUT/fuzz.dict
diff --git a/projects/qcms/project.yaml b/projects/qcms/project.yaml
index fef3fb9..1a826aa 100644
--- a/projects/qcms/project.yaml
+++ b/projects/qcms/project.yaml
@@ -1,10 +1,10 @@
 homepage: "https://hg.mozilla.org/mozilla-central/file/tip/gfx/qcms/"
-language: rust
 primary_contact: "twsmith@mozilla.com"
-auto_ccs:
-  - "aosmond@mozilla.com"
-  - "jmuizelaar@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
 sanitizers:
-  - address
+- address
+- undefined
+- memory
+auto_ccs:
+- "aosmond@mozilla.com"
+- "jmuizelaar@mozilla.com"
+- "cdiehl@mozilla.com"
diff --git a/projects/qemu/Dockerfile b/projects/qemu/Dockerfile
deleted file mode 100644
index 779fc39..0000000
--- a/projects/qemu/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-    libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev patchelf wget \
-    libattr1 libattr1-dev libcap-ng-dev
-# Ninja in the apt repos is too old. Get it directly from github
-RUN wget https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip \
-    && unzip ninja-linux.zip \
-    && rm ninja-linux.zip \
-    && mv ninja /usr/bin/ninja
-RUN git clone --depth 1 https://git.qemu.org/git/qemu.git qemu
-WORKDIR qemu
-RUN cp scripts/oss-fuzz/build.sh $SRC
diff --git a/projects/qemu/project.yaml b/projects/qemu/project.yaml
deleted file mode 100644
index 0974830..0000000
--- a/projects/qemu/project.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-homepage: "https://www.qemu.org/"
-language: c
-primary_contact: "alxndr@bu.edu"
-auto_ccs:
-  - "bsd@redhat.com"
-  - "pbonzini@redhat.com"
-  - "stefanha@redhat.com"
-  - "darren.kenny@oracle.com"
-  - "lichenca2020@gmail.com"
-sanitizers:
-  - address
-  - undefined
-fuzzing_engines:
-  - libfuzzer
-architectures:
-  - x86_64
-main_repo: 'https://git.qemu.org/git/qemu.git'
diff --git a/projects/qpdf/Dockerfile b/projects/qpdf/Dockerfile
index 2c48bc5..932c60a 100644
--- a/projects/qpdf/Dockerfile
+++ b/projects/qpdf/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER ejb@ql.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake nasm
 RUN git clone --depth 1 https://github.com/qpdf/qpdf.git qpdf
 RUN git clone --depth 1 https://github.com/madler/zlib.git zlib
diff --git a/projects/qpdf/project.yaml b/projects/qpdf/project.yaml
index 4415052..16f9a91 100644
--- a/projects/qpdf/project.yaml
+++ b/projects/qpdf/project.yaml
@@ -1,8 +1,6 @@
 homepage: "http://qpdf.sourceforge.net/"
-language: c++
 primary_contact: "qberkenbilt@gmail.com"
 sanitizers:
   - address
   - undefined
   - memory
-main_repo: 'https://github.com/qpdf/qpdf.git'
diff --git a/projects/qpid-proton/Dockerfile b/projects/qpid-proton/Dockerfile
index ca113d8..956a659 100644
--- a/projects/qpid-proton/Dockerfile
+++ b/projects/qpid-proton/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jdanek@redhat.com
 RUN apt-get update && \
     apt-get install -y \
         cmake
diff --git a/projects/qpid-proton/project.yaml b/projects/qpid-proton/project.yaml
index e083e90..cdebcab 100644
--- a/projects/qpid-proton/project.yaml
+++ b/projects/qpid-proton/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://qpid.apache.org/proton/"
-language: c++
 primary_contact: "jross@apache.org"
 auto_ccs:
  - "security@apache.org"
@@ -9,4 +8,3 @@
  - address
  - memory
  - undefined
-main_repo: 'https://github.com/apache/qpid-proton.git'
diff --git a/projects/qt/Dockerfile b/projects/qt/Dockerfile
index 4d5e91d..7d325ca 100644
--- a/projects/qt/Dockerfile
+++ b/projects/qt/Dockerfile
@@ -15,14 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y ninja-build libc6-dev:i386
-RUN git clone --depth 1 https://github.com/AFLplusplus/AFLplusplus.git myaflplusplus && \
-    cp -r myaflplusplus/dictionaries afldictionaries && \
-    cp -r myaflplusplus/testcases afltestcases && \
-    rm -rf myaflplusplus
-RUN git clone --branch dev --depth 1 --shallow-submodules \
-        --recurse-submodules=qtbase \
-        --recurse-submodules=qtsvg \
-        git://code.qt.io/qt/qt5.git qt
-RUN git clone --branch dev --depth 1 git://code.qt.io/qt/qtqa.git
-RUN cp qtqa/fuzzing/oss-fuzz/build.sh $SRC/
+MAINTAINER rlohningqt@gmail.com
+RUN apt-get update && apt-get install -y build-essential python libxcb-xinerama0-dev && apt-get install --no-install-recommends afl-doc
+RUN git clone --branch 5.15 --depth 1 git://code.qt.io/qt/qt5.git qt
+WORKDIR qt
+RUN perl init-repository --module-subset=qtbase
+
+WORKDIR $SRC
+RUN git clone --depth 1 git://code.qt.io/qt/qtqa.git
+COPY build.sh $SRC/
diff --git a/projects/qt/build.sh b/projects/qt/build.sh
new file mode 100755
index 0000000..619cdcd
--- /dev/null
+++ b/projects/qt/build.sh
@@ -0,0 +1,65 @@
+#!/bin/bash -eu
+# Copyright 2019 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+# add the flags to Qt build, gratefully borrowed from karchive
+cd $SRC/qt/qtbase/mkspecs
+sed -i -e "s/QMAKE_CXXFLAGS    += -stdlib=libc++/QMAKE_CXXFLAGS    += -stdlib=libc++  $CXXFLAGS\nQMAKE_CFLAGS += $CFLAGS/g" linux-clang-libc++/qmake.conf
+sed -i -e "s/QMAKE_LFLAGS      += -stdlib=libc++/QMAKE_LFLAGS      += -stdlib=libc++ -lpthread $CXXFLAGS/g" linux-clang-libc++/qmake.conf
+
+# set optimization to O1
+sed -i -e "s/QMAKE_CFLAGS_OPTIMIZE      = -O2/QMAKE_CFLAGS_OPTIMIZE      = -O1/g" common/gcc-base.conf
+sed -i -e "s/QMAKE_CFLAGS_OPTIMIZE_FULL = -O3/QMAKE_CFLAGS_OPTIMIZE_FULL = -O1/g" common/gcc-base.conf
+
+# build project
+cd $WORK
+MAKEFLAGS=-j$(nproc) $SRC/qt/configure -platform linux-clang-libc++ -static -opensource -confirm-license -no-opengl -nomake tests -nomake examples -prefix $OUT
+make -j$(nproc)
+make install
+
+# prepare corpus files
+zip -j $WORK/html $SRC/qtqa/fuzzing/testcases/html/*
+zip -j $WORK/markdown $SRC/qtqa/fuzzing/testcases/markdown/*
+zip -j $WORK/xml $SRC/qtqa/fuzzing/testcases/xml/* /usr/share/afl/testcases/others/xml/*
+
+# build fuzzers
+
+build_fuzzer() {
+    local module=$1
+    local proFilePath=$2
+    local format=${3-""}
+    local dictionary=${4-""}
+    local proFileName=${proFilePath##*/}
+    local exeName=${proFileName%%.*}
+    mkdir build_fuzzer
+    cd build_fuzzer
+    $OUT/bin/qmake $SRC/qt/$module/tests/libfuzzer/$proFilePath
+    make -j$(nproc)
+    mv $exeName $OUT
+    if [ -n "$format" ]; then
+        cp $WORK/$format.zip $OUT/"$exeName"_seed_corpus.zip
+    fi
+    if [ -n "$dictionary" ]; then
+        cp $dictionary $OUT/$exeName.dict
+    fi
+    cd ..
+    rm -r build_fuzzer
+}
+
+build_fuzzer "qtbase" "corelib/serialization/qxmlstream/qxmlstreamreader/readnext/readnext.pro" "xml" "/usr/share/afl/testcases/_extras/xml.dict"
+# build_fuzzer "qtbase" "gui/text/qtextdocument/setHtml/setHtml.pro" "html" "/usr/share/afl/testcases/_extras/html_tags.dict"
+build_fuzzer "qtbase" "gui/text/qtextdocument/setMarkdown/setMarkdown.pro" "markdown"
+build_fuzzer "qtbase" "gui/text/qtextlayout/beginLayout/beginLayout.pro"
diff --git a/projects/qt/project.yaml b/projects/qt/project.yaml
index 9410067..960b3bf 100644
--- a/projects/qt/project.yaml
+++ b/projects/qt/project.yaml
@@ -1,9 +1,4 @@
 homepage: "http://qt-project.org"
-language: c++
 primary_contact: "rlohningqt@gmail.com"
-auto_ccs:
- - "shawn.t.rutledge@gmail.com"
-architectures:
- - x86_64
- - i386
-main_repo: 'git://code.qt.io/qt/qt5.git'
+sanitizers:
+ - address
diff --git a/projects/qubes-os/Dockerfile b/projects/qubes-os/Dockerfile
index a955c69..b6cd045 100644
--- a/projects/qubes-os/Dockerfile
+++ b/projects/qubes-os/Dockerfile
@@ -15,15 +15,14 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER paras.chetal@gmail.com
 
 RUN apt-get update && apt-get -y install build-essential automake libtool git python libsystemd-dev
 
 WORKDIR qubes-os
 
-RUN git clone --single-branch https://github.com/QubesOS/qubes-app-linux-input-proxy $SRC/qubes-os/app-linux-input-proxy
+RUN git        clone --single-branch https://github.com/QubesOS/qubes-app-linux-input-proxy $SRC/qubes-os/app-linux-input-proxy
 
 RUN git clone --single-branch https://github.com/QubesOS/qubes-core-qubesdb $SRC/qubes-os/qubes-core-qubesdb
 
-RUN git clone --single-branch https://github.com/QubesOS/qubes-core-qrexec $SRC/qubes-os/qubes-core-qrexec
-
 COPY build.sh *.options $SRC/
diff --git a/projects/qubes-os/build.sh b/projects/qubes-os/build.sh
index 09cb2d9..372a478 100644
--- a/projects/qubes-os/build.sh
+++ b/projects/qubes-os/build.sh
@@ -17,7 +17,7 @@
 
 if [ "$SANITIZER" != 'undefined' ]; then
 	cd $SRC/qubes-os/app-linux-input-proxy
-
+ 
 	make -C fuzz
 	cp fuzz/*_fuzzer $OUT/
 	cp fuzz/*_seed_corpus.zip $OUT/
@@ -30,10 +30,3 @@
 cp fuzz/*_fuzzer $OUT/
 cp fuzz/*_seed_corpus.zip $OUT/
 cp fuzz/*.options $OUT/
-
-cd $SRC/qubes-os/qubes-core-qrexec
-
-make -C fuzz
-cp fuzz/*_fuzzer $OUT/
-cp fuzz/*_seed_corpus.zip $OUT/
-cp fuzz/*.options $OUT/
diff --git a/projects/qubes-os/project.yaml b/projects/qubes-os/project.yaml
index b05c9d0..deab4bd 100644
--- a/projects/qubes-os/project.yaml
+++ b/projects/qubes-os/project.yaml
@@ -1,18 +1,9 @@
 homepage: "https://www.qubes-os.org/"
-language: c++
 primary_contact: "jpo@vt.edu"
 auto_ccs:
+ - "joanna@invisiblethingslab.com"
  - "marmarek@invisiblethingslab.com"
- - "pawel@invisiblethingslab.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - dataflow
+ - "paras.chetal@gmail.com"
 architectures:
   - x86_64
   - i386
diff --git a/projects/quic-go/Dockerfile b/projects/quic-go/Dockerfile
deleted file mode 100644
index 9ee792c..0000000
--- a/projects/quic-go/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/marten-seemann/qpack/ && \
-  cd qpack && \
-  go build
-
-RUN git clone --depth 1 https://github.com/lucas-clemente/quic-go/ && \
-  cd quic-go && \
-  go build
-
-COPY build.sh .
diff --git a/projects/quic-go/build.sh b/projects/quic-go/build.sh
deleted file mode 100644
index 4ed3b62..0000000
--- a/projects/quic-go/build.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-set -ex
-
-(
-cd qpack
-# Fuzz qpack
-compile_go_fuzzer github.com/marten-seemann/qpack/fuzzing Fuzz qpack_fuzzer
-)
-
-(
-cd quic-go
-# Fuzz quic-go
-compile_go_fuzzer github.com/lucas-clemente/quic-go/fuzzing/frames Fuzz frame_fuzzer
-compile_go_fuzzer github.com/lucas-clemente/quic-go/fuzzing/header Fuzz header_fuzzer
-compile_go_fuzzer github.com/lucas-clemente/quic-go/fuzzing/transportparameters Fuzz transportparameter_fuzzer
-compile_go_fuzzer github.com/lucas-clemente/quic-go/fuzzing/tokens Fuzz token_fuzzer
-compile_go_fuzzer github.com/lucas-clemente/quic-go/fuzzing/handshake Fuzz handshake_fuzzer
-
-if [ $SANITIZER == "coverage" ]; then
-    # no need for corpuses if coverage
-    exit 0
-fi
-# generate seed corpora
-go generate ./fuzzing/...
-
-zip --quiet -r $OUT/header_fuzzer_seed_corpus.zip fuzzing/header/corpus
-zip --quiet -r $OUT/frame_fuzzer_seed_corpus.zip fuzzing/frames/corpus
-zip --quiet -r $OUT/transportparameter_fuzzer_seed_corpus.zip fuzzing/transportparameters/corpus
-zip --quiet -r $OUT/handshake_fuzzer_seed_corpus.zip fuzzing/handshake/corpus
-)
-
-# for debugging
-ls -al $OUT
diff --git a/projects/quic-go/project.yaml b/projects/quic-go/project.yaml
deleted file mode 100644
index 445b3d2..0000000
--- a/projects/quic-go/project.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-homepage: "https://github.com/lucas-clemente/quic-go"
-primary_contact: "martenseemann@gmail.com"
-language: go
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/lucas-clemente/quic-go'
diff --git a/projects/quickjs/Dockerfile b/projects/quickjs/Dockerfile
deleted file mode 100644
index 3e72ada..0000000
--- a/projects/quickjs/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make
-RUN git clone --depth 1 https://github.com/bellard/quickjs quickjs
-WORKDIR $SRC/quickjs
-COPY build.sh $SRC/
-COPY fuzz*.c $SRC/
diff --git a/projects/quickjs/build.sh b/projects/quickjs/build.sh
deleted file mode 100755
index 3ab6802..0000000
--- a/projects/quickjs/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build quickjs
-# Makefile should not override CFLAGS
-sed -i -e 's/CFLAGS=/CFLAGS+=/' Makefile
-CONFIG_CLANG=y make libquickjs.a
-zip -r $OUT/fuzz_eval_seed_corpus.zip tests/*.js
-zip -r $OUT/fuzz_eval_seed_corpus.zip examples/*.js
-zip -r $OUT/fuzz_compile_seed_corpus.zip tests/*.js
-zip -r $OUT/fuzz_compile_seed_corpus.zip examples/*.js
-
-cd ..
-FUZZ_TARGETS="fuzz_eval fuzz_compile fuzz_regexp"
-for f in $FUZZ_TARGETS; do
-    $CC $CFLAGS -Iquickjs -c $f.c -o $f.o
-    $CXX $CXXFLAGS $f.o -o $OUT/$f quickjs/libquickjs.a $LIB_FUZZING_ENGINE
-done
diff --git a/projects/quickjs/fuzz_compile.c b/projects/quickjs/fuzz_compile.c
deleted file mode 100644
index 4c1537c..0000000
--- a/projects/quickjs/fuzz_compile.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Copyright 2020 Google Inc.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- 
- http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#include "quickjs-libc.h"
-#include "cutils.h"
-
-#include <stdint.h>
-#include <stdio.h>
-
-static int initialized = 0;
-JSRuntime *rt;
-JSContext *ctx;
-static int nbinterrupts = 0;
-
-// handle timeouts from infinite loops
-static int interrupt_handler(JSRuntime *rt, void *opaque)
-{
-    nbinterrupts++;
-    return (nbinterrupts > 100);
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
-    if (initialized == 0) {
-        rt = JS_NewRuntime();
-        // 64 Mo
-        JS_SetMemoryLimit(rt, 0x4000000);
-        //TODO JS_SetMaxStackSize ?
-        ctx = JS_NewContextRaw(rt);
-        JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL);
-        JS_AddIntrinsicBaseObjects(ctx);
-        JS_AddIntrinsicDate(ctx);
-        JS_AddIntrinsicEval(ctx);
-        JS_AddIntrinsicStringNormalize(ctx);
-        JS_AddIntrinsicRegExp(ctx);
-        JS_AddIntrinsicJSON(ctx);
-        JS_AddIntrinsicProxy(ctx);
-        JS_AddIntrinsicMapSet(ctx);
-        JS_AddIntrinsicTypedArrays(ctx);
-        JS_AddIntrinsicPromise(ctx);
-        JS_AddIntrinsicBigInt(ctx);
-        JS_SetInterruptHandler(JS_GetRuntime(ctx), interrupt_handler, NULL);
-        js_std_add_helpers(ctx, 0, NULL);
-        initialized = 1;
-    }
-
-    if (Size > 0) {
-        if (Data[Size-1] != 0) {
-            return 0;
-        }
-        JSValue obj;
-        obj = JS_Eval(ctx, (const char *)Data, Size-1, "<none>", JS_EVAL_FLAG_COMPILE_ONLY | JS_EVAL_TYPE_GLOBAL | JS_EVAL_TYPE_MODULE);
-        //TODO target with JS_ParseJSON
-        if (JS_IsException(obj)) {
-            return 0;
-        }
-        size_t bytecode_size;
-        uint8_t* bytecode = JS_WriteObject(ctx, &bytecode_size, obj, JS_WRITE_OBJ_BYTECODE);
-        JS_FreeValue(ctx, obj);
-        if ( !bytecode ) {
-            return 0;
-        }
-        obj = JS_ReadObject(ctx, bytecode, bytecode_size, JS_READ_OBJ_BYTECODE);
-        if (JS_IsException(obj)) {
-            js_free(ctx, bytecode);
-            return 0;
-        }
-        nbinterrupts = 0;
-        /* this is based on
-         * js_std_eval_binary(ctx, bytecode, bytecode_size, 0);
-         * modified so as not to exit on JS exception
-         */
-        JSValue val;
-        if (JS_VALUE_GET_TAG(obj) == JS_TAG_MODULE) {
-            if (JS_ResolveModule(ctx, obj) < 0) {
-                JS_FreeValue(ctx, obj);
-                js_free(ctx, bytecode);
-                return 0;
-            }
-            js_module_set_import_meta(ctx, obj, FALSE, TRUE);
-        }
-        val = JS_EvalFunction(ctx, obj);
-        if (JS_IsException(val)) {
-            js_std_dump_error(ctx);
-        } else {
-            js_std_loop(ctx);
-        }
-        JS_FreeValue(ctx, val);
-        js_free(ctx, bytecode);
-    }
-
-    return 0;
-}
diff --git a/projects/quickjs/fuzz_eval.c b/projects/quickjs/fuzz_eval.c
deleted file mode 100644
index 6ba443f..0000000
--- a/projects/quickjs/fuzz_eval.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2020 Google Inc.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- 
- http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#include "quickjs-libc.h"
-
-#include <stdint.h>
-#include <stdio.h>
-
-static int initialized = 0;
-JSRuntime *rt;
-JSContext *ctx;
-static int nbinterrupts = 0;
-
-// handle timeouts from infinite loops
-static int interrupt_handler(JSRuntime *rt, void *opaque)
-{
-    nbinterrupts++;
-    return (nbinterrupts > 100);
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
-    if (initialized == 0) {
-        rt = JS_NewRuntime();
-        // 64 Mo
-        JS_SetMemoryLimit(rt, 0x4000000);
-        //TODO JS_SetMaxStackSize ?
-        ctx = JS_NewContextRaw(rt);
-        JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL);
-        JS_AddIntrinsicBaseObjects(ctx);
-        JS_AddIntrinsicDate(ctx);
-        JS_AddIntrinsicEval(ctx);
-        JS_AddIntrinsicStringNormalize(ctx);
-        JS_AddIntrinsicRegExp(ctx);
-        JS_AddIntrinsicJSON(ctx);
-        JS_AddIntrinsicProxy(ctx);
-        JS_AddIntrinsicMapSet(ctx);
-        JS_AddIntrinsicTypedArrays(ctx);
-        JS_AddIntrinsicPromise(ctx);
-        JS_AddIntrinsicBigInt(ctx);
-        JS_SetInterruptHandler(JS_GetRuntime(ctx), interrupt_handler, NULL);
-        js_std_add_helpers(ctx, 0, NULL);
-        initialized = 1;
-    }
-
-    if (Size > 0) {
-        //is it more efficient to malloc(Size+1) and memcpy ?
-        if (Data[Size-1] != 0) {
-            return 0;
-        }
-        nbinterrupts = 0;
-        //the final 0 does not count (as in strlen)
-        JSValue val = JS_Eval(ctx, (const char *)Data, Size-1, "<none>", JS_EVAL_TYPE_GLOBAL);
-        //TODO targets with JS_ParseJSON, JS_ReadObject
-        if (!JS_IsException(val)) {
-            js_std_loop(ctx);
-            JS_FreeValue(ctx, val);
-        }
-    }
-
-    return 0;
-}
diff --git a/projects/quickjs/fuzz_regexp.c b/projects/quickjs/fuzz_regexp.c
deleted file mode 100644
index f404563..0000000
--- a/projects/quickjs/fuzz_regexp.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright 2020 Google Inc.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- 
- http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#include "libregexp.h"
-#include "quickjs-libc.h"
-
-#include <stdint.h>
-#include <stdio.h>
-
-#define CAPTURE_COUNT_MAX 255
-
-FILE *outfile=NULL;
-JSRuntime *rt;
-JSContext *ctx;
-
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
-    if (outfile == NULL) {
-        outfile = fopen("/dev/null", "w");
-        rt = JS_NewRuntime();
-        // 64 Mo
-        JS_SetMemoryLimit(rt, 0x4000000);
-        //TODO JS_SetMaxStackSize ?
-        ctx = JS_NewContextRaw(rt);
-    }
-    int len, ret, i;
-    uint8_t *bc;
-    char error_msg[64];
-    const uint8_t *input;
-    uint8_t *capture[CAPTURE_COUNT_MAX * 2];
-    int capture_count;
-    size_t Size1=Size;
-
-    //Splits buffer into 2 sub buffers delimited by null character
-    for (i=0; i<Size; i++) {
-        if (Data[i] == 0) {
-            Size1=i;
-            break;
-        }
-    }
-    if (Size1 == Size) {
-        //missing delimiter
-        return 0;
-    }
-    bc = lre_compile(&len, error_msg, sizeof(error_msg), (const char *) Data,
-                     Size1, 0, ctx);
-    if (!bc) {
-        return 0;
-    }
-    input = Data+Size1+1;
-    ret = lre_exec(capture, bc, input, 0, Size-(Size1+1), 0, ctx);
-    if (ret == 1) {
-        capture_count = lre_get_capture_count(bc);
-        for(i = 0; i < 2 * capture_count; i++) {
-            uint8_t *ptr;
-            ptr = capture[i];
-            fprintf(outfile, "%d: ", i);
-            if (!ptr)
-                fprintf(outfile, "<nil>");
-            else
-                fprintf(outfile, "%u", (int)(ptr - (uint8_t *)input));
-            fprintf(outfile, "\n");
-        }
-    }
-    free(bc);
-
-    return 0;
-}
diff --git a/projects/quickjs/project.yaml b/projects/quickjs/project.yaml
deleted file mode 100644
index 7bc6d09..0000000
--- a/projects/quickjs/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://bellard.org/quickjs/"
-language: c
-primary_contact: "fabrice.bellard@gmail.com"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-vendor_ccs :
-- "apascovici@google.com"
-
-sanitizers:
-- address
-
-blackbox: true  # also use a blackbox fuzzer for this project.
-main_repo: 'https://github.com/horhof/quickjs'
diff --git a/projects/radare2/Dockerfile b/projects/radare2/Dockerfile
index b0140e0..c5ab9ca 100644
--- a/projects/radare2/Dockerfile
+++ b/projects/radare2/Dockerfile
@@ -1,4 +1,5 @@
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER zlowram@gmail.com
 RUN apt-get update
 RUN git clone https://github.com/radare/radare2 radare2
 RUN git clone https://github.com/radare/radare2-regressions radare2-regressions
diff --git a/projects/radare2/project.yaml b/projects/radare2/project.yaml
index 9434e18..48aebdd 100644
--- a/projects/radare2/project.yaml
+++ b/projects/radare2/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://github.com/radare/radare2"
-language: c++
 primary_contact: "pancake@nopcode.org"
 auto_ccs:
   - "zlowram@gmail.com"
 sanitizers:
   - address
 run_tests: False
-main_repo: 'https://github.com/radare/radare2'
diff --git a/projects/radon/Dockerfile b/projects/radon/Dockerfile
deleted file mode 100644
index fe4c6ca..0000000
--- a/projects/radon/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/radondb/radon
-COPY build.sh $SRC/
-WORKDIR $SRC/radon
diff --git a/projects/radon/build.sh b/projects/radon/build.sh
deleted file mode 100644
index ffc9789..0000000
--- a/projects/radon/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-cd ./src/fuzz/sqlparser
-go mod init github.com/radondb/radon/src/fuzz/sqlparser
-compile_go_fuzzer . Fuzz fuzz
diff --git a/projects/radon/project.yaml b/projects/radon/project.yaml
deleted file mode 100644
index ae4bcfe..0000000
--- a/projects/radon/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/radondb/radon"
-primary_contact: "overred.shuttler@gmail.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/radondb/radon'
diff --git a/projects/rapidjson/Dockerfile b/projects/rapidjson/Dockerfile
index 81df5f1..afd7ea5 100644
--- a/projects/rapidjson/Dockerfile
+++ b/projects/rapidjson/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool cmake
 RUN git clone --depth 1 https://github.com/Tencent/rapidjson.git rapidjson
 RUN git clone --depth 1 https://github.com/guidovranken/rapidjson-fuzzers.git rapidjson-fuzzers
diff --git a/projects/rapidjson/build.sh b/projects/rapidjson/build.sh
index d94be1a..0dec111 100755
--- a/projects/rapidjson/build.sh
+++ b/projects/rapidjson/build.sh
@@ -28,8 +28,5 @@
 $CXX $CXXFLAGS -D_GLIBCXX_DEBUG -I $SRC/rapidjson/include fuzzer.cpp $LIB_FUZZING_ENGINE -o $OUT/fuzzer
 cp fuzzer_seed_corpus.zip $OUT
 
-# Disabled because compiliation fails for reasons unknown.
-# Using the exact same compile commands locally does not fail.
-# Try enabling again in the future.
-#cd $SRC/fuzzing-headers/tests
-#$CXX $CXXFLAGS -std=c++2a -D_GLIBCXX_DEBUG -I $SRC/rapidjson/include -I ../include rapidjson.cpp $LIB_FUZZING_ENGINE -o $OUT/fuzzer-extended
+cd $SRC/fuzzing-headers/tests
+$CXX $CXXFLAGS -std=c++2a -D_GLIBCXX_DEBUG -I $SRC/rapidjson/include -I ../include rapidjson.cpp $LIB_FUZZING_ENGINE -o $OUT/fuzzer-extended
diff --git a/projects/rapidjson/project.yaml b/projects/rapidjson/project.yaml
index 41b6cb3..573235a 100644
--- a/projects/rapidjson/project.yaml
+++ b/projects/rapidjson/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/tencent/rapidjson"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 sanitizers:
  - address
@@ -9,4 +8,3 @@
 architectures:
  - x86_64
  - i386
-main_repo: 'https://github.com/Tencent/rapidjson.git'
diff --git a/projects/rdkit/Dockerfile b/projects/rdkit/Dockerfile
deleted file mode 100644
index 1dad793..0000000
--- a/projects/rdkit/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget libeigen3-dev
-
-RUN git clone --depth 1 https://github.com/rdkit/rdkit.git $SRC/rdkit
-WORKDIR $SRC/rdkit
-COPY build.sh $SRC/
diff --git a/projects/rdkit/build.sh b/projects/rdkit/build.sh
deleted file mode 100755
index 2ad830e..0000000
--- a/projects/rdkit/build.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build zlib
-git clone --depth 1 -b master https://github.com/madler/zlib.git $SRC/zlib
-cd $SRC/zlib
-OLD_CFLAGS="$CFLAGS"
-export LDFLAGS="-fPIC $CFLAGS"
-export CFLAGS="-fPIC $CFLAGS"
-# Only build static libraries, so we don't accidentally link to zlib dynamically.
-./configure --static
-make -j$(nproc) clean
-make -j$(nproc) all install
-unset LDFLAGS
-export CFLAGS="$OLD_CFLAGS"
-
-# We're building `rdkit` using clang, but the boost package is built using gcc.
-# For whatever reason, linking would fail.
-# (Mismatch between libstdc++ and libc++ maybe?)
-# It works if we build `rdkit` using gcc or build boost using clang instead.
-# We've opted for building boost using clang.
-cd $SRC && \
-wget --quiet https://sourceforge.net/projects/boost/files/boost/1.69.0/boost_1_69_0.tar.bz2 && \
-tar xjf boost_1_69_0.tar.bz2 && \
-cd $SRC/boost_1_69_0 && \
-./bootstrap.sh --with-toolset=clang --with-libraries=serialization,system,iostreams,regex && \
-./b2 -q -j$(nproc) toolset=clang linkflags="-fPIC $CXXFLAGS $CXXFLAGS_EXTRA" cxxflags="-fPIC $CXXFLAGS $CXXFLAGS_EXTRA" link=static install
-
-cd $SRC/rdkit
-
-mkdir -p build && cd build
-cmake -DRDK_BUILD_PYTHON_WRAPPERS=OFF -DRDK_BUILD_FREETYPE_SUPPORT=OFF -DLIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE} -DRDK_BUILD_FUZZ_TARGETS=ON -DRDK_INSTALL_STATIC_LIBS=ON -DBoost_USE_STATIC_LIBS=ON ..
-make -j$(nproc)
-make install
-
-# Leave build directory
-cd ..
-
-# Copy the fuzzer executables, zip-ed corpora, options and dictionary files to $OUT
-find . -type f -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
-find . -type f -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'
-#find . -type f -name '*_fuzzer.options' -exec cp -v '{}' $OUT ';'
-corpora=$(find . -type d -name "*_fuzzer")
-for corpus in $corpora; do
-	corpus_basename=$(basename $corpus)
-	zip -j $OUT/${corpus_basename}_seed_corpus.zip ${corpus}/*
-done
diff --git a/projects/rdkit/project.yaml b/projects/rdkit/project.yaml
deleted file mode 100644
index dd67ad1..0000000
--- a/projects/rdkit/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/rdkit/rdkit"
-language: c++
-primary_contact: "greg.landrum@gmail.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/rdkit/rdkit.git'
diff --git a/projects/re2/Dockerfile b/projects/re2/Dockerfile
index 5f948da..038e09c 100644
--- a/projects/re2/Dockerfile
+++ b/projects/re2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER wrengr@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 
 RUN git clone --depth 1 https://code.googlesource.com/re2
diff --git a/projects/re2/project.yaml b/projects/re2/project.yaml
index 0fc1f83..9bb9955 100644
--- a/projects/re2/project.yaml
+++ b/projects/re2/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://code.googlesource.com/re2"
-language: c++
 primary_contact: "junyer@google.com"
 sanitizers:
   - address
@@ -8,4 +7,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://code.googlesource.com/re2'
diff --git a/projects/readstat/Dockerfile b/projects/readstat/Dockerfile
index d68a1ae..c8e4759 100644
--- a/projects/readstat/Dockerfile
+++ b/projects/readstat/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER emmiller@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake gettext libtool zip zlib1g-dev
 
 RUN git clone --depth 1 https://github.com/WizardMac/ReadStat readstat
diff --git a/projects/readstat/project.yaml b/projects/readstat/project.yaml
index d8b46b0..a171f5e 100644
--- a/projects/readstat/project.yaml
+++ b/projects/readstat/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://github.com/WizardMac/ReadStat"
-language: c++
 primary_contact: "emmiller@gmail.com"
-main_repo: 'https://github.com/WizardMac/ReadStat'
diff --git a/projects/relic/Dockerfile b/projects/relic/Dockerfile
deleted file mode 100644
index 23b426b..0000000
--- a/projects/relic/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool wget python
-RUN git clone --depth 1 https://github.com/relic-toolkit/relic.git
-RUN git clone --depth 1 https://github.com/randombit/botan.git
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
-COPY build.sh $SRC/
diff --git a/projects/relic/build.sh b/projects/relic/build.sh
deleted file mode 100755
index 552b14f..0000000
--- a/projects/relic/build.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL"
-export LIBFUZZER_LINK="$LIB_FUZZING_ENGINE"
-
-# Install Boost headers
-cd $SRC/
-tar jxf boost_1_74_0.tar.bz2
-cd boost_1_74_0/
-CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-CFLAGS="" CXXFLAGS="" ./b2 headers
-cp -R boost/ /usr/include/
-
-# Prevent Boost compilation error with -std=c++17
-export CXXFLAGS="$CXXFLAGS -D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR"
-
-# Build Relic
-cd $SRC/relic/
-mkdir build/
-cd build/
-if [[ $CFLAGS = *-m32* ]]
-then
-    export RELIC_ARCH="X86"
-else
-    export RELIC_ARCH="X64"
-fi
-cmake .. -DCOMP="$CFLAGS" -DQUIET=on -DRAND=CALL -DSHLIB=off -DSTBIN=off -DTESTS=0 -DBENCH=0 -DALLOC=DYNAMIC -DARCH=$RELIC_ARCH
-make -j$(nproc)
-cd ../..
-export RELIC_PATH=$(realpath relic)
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_RELIC"
-
-# Build Botan
-cd $SRC/botan
-if [[ $CFLAGS != *-m32* ]]
-then
-    ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-else
-    ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-fi
-make -j$(nproc)
-
-export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BOTAN -DCRYPTOFUZZ_BOTAN_IS_ORACLE"
-export LIBBOTAN_A_PATH="$SRC/botan/libbotan-3.a"
-export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"
-
-# Build Cryptofuzz
-cd $SRC/cryptofuzz
-python gen_repository.py
-rm extra_options.h
-echo -n '"' >>extra_options.h
-echo -n '--force-module=relic ' >>extra_options.h
-echo -n '--operations=BignumCalc,ECC_PrivateToPublic,ECC_ValidatePubkey,ECDSA_Sign,ECDSA_Verify,Digest,HMAC,KDF_X963 ' >>extra_options.h
-echo -n '--curves=secp256k1,secp256r1 ' >>extra_options.h
-echo -n '--digests=NULL,SHA224,SHA256,SHA384,SHA512,BLAKE2S160,BLAKE2S256 ' >>extra_options.h
-echo -n '--calcops=Abs,Add,Bit,ClearBit,Cmp,CmpAbs,Div,ExpMod,GCD,InvMod,IsEven,IsOdd,IsZero,Jacobi,LCM,LShift1,Mod,Mul,Neg,NumBits,RShift,SetBit,Sqr,Sqrt,Sub ' >>extra_options.h
-echo -n '"' >>extra_options.h
-cd modules/relic/
-make -B -j$(nproc)
-cd ../botan/
-make -B -j$(nproc)
-cd ../../
-make -B -j$(nproc)
-
-cp cryptofuzz $OUT/cryptofuzz-relic
diff --git a/projects/relic/project.yaml b/projects/relic/project.yaml
deleted file mode 100644
index 98fb04f..0000000
--- a/projects/relic/project.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-homepage: "https://github.com/relic-toolkit/relic"
-language: c++
-primary_contact: "guidovranken@gmail.com"
-main_repo: "https://github.com/relic-toolkit/relic"
-auto_ccs:
-    - "dfaranha@gmail.com"
-sanitizers:
- - address
- - undefined
- - memory
-architectures:
- - x86_64
- - i386
diff --git a/projects/resiprocate/Dockerfile b/projects/resiprocate/Dockerfile
index 58f7a92..02a4a2f 100644
--- a/projects/resiprocate/Dockerfile
+++ b/projects/resiprocate/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER gjasny@googlemail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config
 RUN git clone --depth 1 https://github.com/resiprocate/resiprocate.git resiprocate
 WORKDIR resiprocate
diff --git a/projects/resiprocate/project.yaml b/projects/resiprocate/project.yaml
index 10053fe..b82f4a6 100644
--- a/projects/resiprocate/project.yaml
+++ b/projects/resiprocate/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://www.resiprocate.org/"
-language: c++
 primary_contact: "gjasny@googlemail.com"
-main_repo: 'https://github.com/resiprocate/resiprocate.git'
diff --git a/projects/rnp/Dockerfile b/projects/rnp/Dockerfile
deleted file mode 100755
index c82713b..0000000
--- a/projects/rnp/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update
-RUN apt-get install -y \
-    make \
-    autoconf \
-    automake \
-    libtool \
-    cmake \
-    patchelf \
-    libbz2-dev \
-    zlib1g-dev \
-    libjson-c-dev \
-    build-essential \
-    python-minimal \
-    wget
-
-RUN git clone --depth 1 https://github.com/rnpgp/rnp.git rnp
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/rnp/build.sh b/projects/rnp/build.sh
deleted file mode 100755
index 1bfd8aa..0000000
--- a/projects/rnp/build.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC
-
-wget -qO- https://botan.randombit.net/releases/Botan-2.16.0.tar.xz | tar xJ
-cd Botan-2.16.0
-./configure.py --prefix=/usr --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" \
-               --disable-modules=locking_allocator \
-               --unsafe-fuzzer-mode --build-fuzzers=libfuzzer \
-               --with-fuzzer-lib='FuzzingEngine'
-make -j$(nproc)
-make install
-
-cd $SRC
-mkdir fuzzing_corpus
-
-cd $SRC/rnp/src/tests/data
-find . -type f -print0 | xargs -0 -I bob -- cp bob $SRC/fuzzing_corpus/
-
-# -DENABLE_SANITIZERS=0 because oss-fuzz will add the sanitizer flags in CFLAGS
-# See https://github.com/google/oss-fuzz/pull/4189 to explain CMAKE_C_LINK_EXECUTABLE
-
-cd $SRC
-mkdir rnp-build
-cd rnp-build
-cmake \
-    -DENABLE_SANITIZERS=0 \
-    -DENABLE_FUZZERS=1 \
-    -DCMAKE_C_COMPILER=$CC \
-    -DCMAKE_CXX_COMPILER=$CXX \
-    -DCMAKE_C_LINK_EXECUTABLE="$CXX <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>" \
-    -DCMAKE_INSTALL_PREFIX=/usr \
-    -DBUILD_SHARED_LIBS=on \
-    -DBUILD_TESTING=off \
-    -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-    $SRC/rnp
-make -j$(nproc)
-
-FUZZERS=`find src/fuzzing -maxdepth 1 -type f -name "fuzz_*" -exec basename {} \;`
-printf "Detected fuzzers: \n$FUZZERS\n"
-for f in $FUZZERS; do
-    cp src/fuzzing/$f "${OUT}/"
-    patchelf --set-rpath '$ORIGIN/lib' "${OUT}/$f" || echo "patchelf failed with $?, ignoring."
-    zip -j -r "${OUT}/${f}_seed_corpus.zip" $SRC/fuzzing_corpus/
-done
-
-mkdir -p "${OUT}/lib"
-cp src/lib/librnp.so.0 "${OUT}/lib/"
-cp /usr/lib/libbotan-2.so.16 "${OUT}/lib/"
-cp /lib/x86_64-linux-gnu/libjson-c.so.2 "${OUT}/lib/"
diff --git a/projects/rnp/project.yaml b/projects/rnp/project.yaml
deleted file mode 100755
index bf23150..0000000
--- a/projects/rnp/project.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-homepage: "https://www.rnpgp.com/"
-language: c++
-primary_contact: "tse@ribose.com"
-auto_ccs:
-  - "tom@ritter.vg"
-  - "o.nickolay@gmail.com"
-  - "daniel.wyatt@gmail.com"
-sanitizers:
-  - address
-  - undefined
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
-  - afl
-main_repo: 'https://github.com/rnpgp/rnp.git'
diff --git a/projects/rocksdb/Dockerfile b/projects/rocksdb/Dockerfile
deleted file mode 100644
index f81d276..0000000
--- a/projects/rocksdb/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool gettext pkg-config build-essential zlib1g-dev libbz2-dev cmake ninja-build liblzma-dev libtool autoconf
-RUN git clone --depth 1 https://github.com/facebook/rocksdb
-
-WORKDIR $SRC/
-
-RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
-RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja && ninja install)
-
-COPY build.sh $SRC/
diff --git a/projects/rocksdb/build.sh b/projects/rocksdb/build.sh
deleted file mode 100755
index af784a2..0000000
--- a/projects/rocksdb/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/LPM
-export PKG_CONFIG_PATH=$PWD:$PWD/external.protobuf/lib/pkgconfig/
-export PATH=$PWD/external.protobuf/bin:$PATH
-
-cd $SRC/rocksdb
-export FUZZ_ENV=ossfuzz
-export CC=$CXX
-make static_lib
-
-cd fuzz
-make db_fuzzer
-make db_map_fuzzer
-
-cp *_fuzzer $OUT/
diff --git a/projects/rocksdb/project.yaml b/projects/rocksdb/project.yaml
deleted file mode 100644
index 94c8126..0000000
--- a/projects/rocksdb/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/facebook/rocksdb"
-primary_contact: "rocksdb.dev@gmail.com"
-language: c++
-vendor_ccs:
-  - "oss-fuzz@fb.com"
-auto_ccs:
-  - "david@adalogics.com"
-  - "mhl@fb.com"
-sanitizers:
-  - "address"
-main_repo: 'https://github.com/facebook/rocksdb'
diff --git a/projects/runc/Dockerfile b/projects/runc/Dockerfile
deleted file mode 100644
index 78616e9..0000000
--- a/projects/runc/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/opencontainers/runc
-COPY build.sh $SRC/
-WORKDIR $SRC/runc
diff --git a/projects/runc/build.sh b/projects/runc/build.sh
deleted file mode 100644
index 4f0b084..0000000
--- a/projects/runc/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-$SRC/runc/tests/fuzzing/oss_fuzz_build.sh
diff --git a/projects/runc/project.yaml b/projects/runc/project.yaml
deleted file mode 100644
index fc387c8..0000000
--- a/projects/runc/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://github.com/opencontainers/runc"
-main_repo: "https://github.com/opencontainers/runc"
-primary_contact: "cyphar@cyphar.com"
-auto_ccs:
-  - "adam@adalogics.com"
-  - "michael@docker.com"
-  - "mpatel@redhat.com"
-  - "dqminh89@gmail.com"
-  - "h.huangqiang@huawei.com"
-  - "akihiro.suda.cz@hco.ntt.co.jp"
-  - "kolyshkin@gmail.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/rust-regex/Dockerfile b/projects/rust-regex/Dockerfile
deleted file mode 100644
index c64a6a1..0000000
--- a/projects/rust-regex/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/rust-lang/regex regex
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/rust-regex/build.sh b/projects/rust-regex/build.sh
deleted file mode 100755
index 967502e..0000000
--- a/projects/rust-regex/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-cd $SRC/regex
-cargo fuzz build -O 
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_regex_match $OUT/
diff --git a/projects/rust-regex/project.yaml b/projects/rust-regex/project.yaml
deleted file mode 100644
index 7f7a934..0000000
--- a/projects/rust-regex/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://github.com/rust-lang/regex"
-primary_contact: "jamslam@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/rustls/Dockerfile b/projects/rustls/Dockerfile
deleted file mode 100644
index 7406a47..0000000
--- a/projects/rustls/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang
-
-RUN git clone https://github.com/ctz/rustls
-
-WORKDIR $SRC
-
-COPY build.sh $SRC/
-COPY persist.rs $SRC/rustls/fuzz/fuzzers/persist.rs
diff --git a/projects/rustls/build.sh b/projects/rustls/build.sh
deleted file mode 100755
index d00359e..0000000
--- a/projects/rustls/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/rustls
-cargo fuzz build -O
-cp fuzz/target/x86_64-unknown-linux-gnu/release/client $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/deframer $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fragment $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/hsjoiner $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/message $OUT/
-cp fuzz/target/x86_64-unknown-linux-gnu/release/server $OUT/
diff --git a/projects/rustls/persist.rs b/projects/rustls/persist.rs
deleted file mode 100644
index 186cd9a..0000000
--- a/projects/rustls/persist.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-//limitations under the License.
-//
-//################################################################################
-#![no_main]
-#[macro_use] extern crate libfuzzer_sys;
-extern crate rustls;
-
-use rustls::internal::msgs::persist;
-use rustls::internal::msgs::codec::{Reader, Codec};
-
-fn try_type<T>(data: &[u8]) where T: Codec {
-    let mut rdr = Reader::init(data);
-    T::read(&mut rdr);
-}
-
-fuzz_target!(|data: &[u8]| {
-    try_type::<persist::ServerSessionValue>(data);
-});
diff --git a/projects/rustls/project.yaml b/projects/rustls/project.yaml
deleted file mode 100644
index 73e4f27..0000000
--- a/projects/rustls/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/ctz/rustls"
-main_repo: "https://github.com/ctz/rustls"
-primary_contact: "jpixton@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/s2opc/Dockerfile b/projects/s2opc/Dockerfile
index 79d5841..3358e14 100644
--- a/projects/s2opc/Dockerfile
+++ b/projects/s2opc/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pab.systerel@gmail.com
 RUN apt-get update && apt-get install -y make cmake git curl
 
 # Sources and dependencies
diff --git a/projects/s2opc/build.sh b/projects/s2opc/build.sh
index db32033..61d3be2 100755
--- a/projects/s2opc/build.sh
+++ b/projects/s2opc/build.sh
@@ -38,7 +38,6 @@
 mkdir -p $S2OPC_BUILD
 cd $S2OPC_BUILD
 cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-      -DS2OPC_CLIENTSERVER_ONLY=ON \
       -DCMAKE_C_COMPILER="$CC" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_EXE_LINKER_FLAGS="$CXXFLAGS" \
       -DCMAKE_C_LINK_EXECUTABLE="$CXX <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>" \
       -DWITH_OSS_FUZZ=ON \
diff --git a/projects/s2opc/project.yaml b/projects/s2opc/project.yaml
index e0fe412..d9b9971 100644
--- a/projects/s2opc/project.yaml
+++ b/projects/s2opc/project.yaml
@@ -1,10 +1,8 @@
 homepage: "https://gitlab.com/systerel/S2OPC"
-language: c++
 primary_contact: "pab.systerel@gmail.com"
 auto_ccs:
   - "mcl.systerel@gmail.com"
-  - "vla.systerel@gmail.com"
-  - "vmo.systerel@gmail.com"
+  - "vincent.lacroix@systerel.fr"
 sanitizers:
  - address
  - memory
diff --git a/projects/samba/project.yaml b/projects/samba/project.yaml
index 6f7ea35..0d20a2a 100644
--- a/projects/samba/project.yaml
+++ b/projects/samba/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://samba.org"
-language: c
 primary_contact: "douglas.bagnall@catalyst.net.nz"
 auto_ccs:
   - "abartlet+google@catalyst.net.nz"
@@ -8,10 +7,8 @@
   - "jra@google.com"
   - "sloowfranklin@gmail.com"
   - "gdeschner@gmail.com"
-  - "volker.lendecke@gmail.com"
 fuzzing_engines:
   - libfuzzer
-  - honggfuzz
 sanitizers:
   - address
   - undefined
diff --git a/projects/scapy/Dockerfile b/projects/scapy/Dockerfile
deleted file mode 100644
index 6631b32..0000000
--- a/projects/scapy/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone \
-	--depth 1 \
-	--branch master \
-	https://github.com/secdev/scapy.git
-
-WORKDIR scapy
-
-COPY build.sh pcap_fuzzer.py $SRC/
diff --git a/projects/scapy/build.sh b/projects/scapy/build.sh
deleted file mode 100644
index b3270da..0000000
--- a/projects/scapy/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build and install project (using current CFLAGS, CXXFLAGS).
-pip3 install .
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
-
-zip -j $OUT/pcap_fuzzer_seed_corpus.zip test/pcaps/*
diff --git a/projects/scapy/pcap_fuzzer.py b/projects/scapy/pcap_fuzzer.py
deleted file mode 100644
index aaf1f5f..0000000
--- a/projects/scapy/pcap_fuzzer.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import io
-import sys
-import atheris
-
-import scapy
-import scapy.error
-import scapy.utils
-
-
-def TestOneInput(input_bytes):
-  try:
-    scapy.utils.rdpcap(io.BytesIO(input_bytes))
-  except scapy.error.Scapy_Exception:
-    pass
-
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/scapy/project.yaml b/projects/scapy/project.yaml
deleted file mode 100644
index 98da90f..0000000
--- a/projects/scapy/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://scapy.net"
-main_repo: "https://github.com/secdev/scapy"
-language: python
-primary_contact: "guedou@gmail.com"
-auto_ccs:
-  - "jvoisin@google.com"
-  - "ipudney@google.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/selinux/Dockerfile b/projects/selinux/Dockerfile
deleted file mode 100644
index b62b4ae..0000000
--- a/projects/selinux/Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && \
-    apt-get install -y bison \
-	flex \
-	gawk \
-	gettext \
-	make \
-	libaudit-dev \
-	libbz2-dev \
-	libcap-dev \
-	libcap-ng-dev \
-	libglib2.0-dev \
-	libpcre3-dev \
-	xmlto
-RUN git clone --depth 1 https://github.com/SELinuxProject/selinux
-WORKDIR selinux
-COPY build.sh *.c $SRC/
diff --git a/projects/selinux/build.sh b/projects/selinux/build.sh
deleted file mode 100755
index e2979ad..0000000
--- a/projects/selinux/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash -e
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export DESTDIR=$(pwd)/DESTDIR
-export LDFLAGS="${LDFLAGS:-} $CFLAGS"
-
-find -name Makefile | xargs sed -i 's/,-z,defs//'
-make V=1 -j$(nproc) install
-
-$CC $CFLAGS -I$DESTDIR/usr/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -c -o secilc-fuzzer.o $SRC/secilc-fuzzer.c
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE secilc-fuzzer.o $DESTDIR/usr/lib/libsepol.a -o $OUT/secilc-fuzzer
-zip -r $OUT/secilc-fuzzer_seed_corpus.zip secilc/test
diff --git a/projects/selinux/project.yaml b/projects/selinux/project.yaml
deleted file mode 100644
index 9b97863..0000000
--- a/projects/selinux/project.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-homepage: "https://github.com/SELinuxProject/selinux"
-language: c
-primary_contact: "nicolas.iooss_ossfuzzselinux@m4x.org"
-builds_per_day: 4
-sanitizers:
-  - address
-  - undefined
-  - memory
-auto_ccs:
-  - evverx@gmail.com
-  - nicolas.iooss.ossfuzz@gmail.com
-  - omosnacek@gmail.com
-  - jwcart2@gmail.com
-main_repo: 'https://github.com/SELinuxProject/selinux'
diff --git a/projects/selinux/secilc-fuzzer.c b/projects/selinux/secilc-fuzzer.c
deleted file mode 100644
index c99df95..0000000
--- a/projects/selinux/secilc-fuzzer.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <getopt.h>
-#include <sys/stat.h>
-
-#include <sepol/cil/cil.h>
-#include <sepol/policydb.h>
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	enum cil_log_level log_level = CIL_ERR;
-	struct sepol_policy_file *pf = NULL;
-	FILE *dev_null = NULL;
-	int target = SEPOL_TARGET_SELINUX;
-	int disable_dontaudit = 0;
-	int multiple_decls = 0;
-	int disable_neverallow = 0;
-	int preserve_tunables = 0;
-	int policyvers = POLICYDB_VERSION_MAX;
-	int mls = -1;
-	int attrs_expand_generated = 0;
-	struct cil_db *db = NULL;
-	sepol_policydb_t *pdb = NULL;
-
-	cil_set_log_level(log_level);
-
-	cil_db_init(&db);
-	cil_set_disable_dontaudit(db, disable_dontaudit);
-	cil_set_multiple_decls(db, multiple_decls);
-	cil_set_disable_neverallow(db, disable_neverallow);
-	cil_set_preserve_tunables(db, preserve_tunables);
-	cil_set_mls(db, mls);
-	cil_set_target_platform(db, target);
-	cil_set_policy_version(db, policyvers);
-	cil_set_attrs_expand_generated(db, attrs_expand_generated);
-
-	if (cil_add_file(db, "fuzz", data, size) != SEPOL_OK)
-		goto exit;
-
-	if (cil_compile(db) != SEPOL_OK)
-		goto exit;
-
-	if (cil_build_policydb(db, &pdb) != SEPOL_OK)
-		goto exit;
-
-	if (sepol_policydb_optimize(pdb) != SEPOL_OK)
-		goto exit;
-
-	dev_null = fopen("/dev/null", "w");
-	if (dev_null == NULL)
-		goto exit;
-
-	if (sepol_policy_file_create(&pf) != 0)
-		goto exit;
-
-	sepol_policy_file_set_fp(pf, dev_null);
-
-	if (sepol_policydb_write(pdb, pf) != 0)
-		goto exit;
-exit:
-	if (dev_null != NULL)
-		fclose(dev_null);
-
-	cil_db_destroy(&db);
-	sepol_policydb_free(pdb);
-	sepol_policy_file_free(pf);
-	return 0;
-}
diff --git a/projects/sentencepiece/Dockerfile b/projects/sentencepiece/Dockerfile
deleted file mode 100644
index 81d7cfa..0000000
--- a/projects/sentencepiece/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool cmake build-essential pkg-config libgoogle-perftools-dev
-RUN git clone --depth 1 https://github.com/google/sentencepiece.git sentencepiece
-WORKDIR sentencepiece
-COPY build.sh *.cc $SRC/
diff --git a/projects/sentencepiece/build.sh b/projects/sentencepiece/build.sh
deleted file mode 100755
index 69d511c..0000000
--- a/projects/sentencepiece/build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-mkdir build
-cd build
-cmake -DSPM_ENABLE_SHARED=ON ..
-make -j $(nproc)
-make install
-
-# build fuzzers
-for fuzzer in $(find $SRC -name '*_fuzzer.cc'); do
-  fuzz_basename=$(basename -s .cc $fuzzer)
-  $CXX $CXXFLAGS -std=c++11 -I. \
-        $fuzzer $LIB_FUZZING_ENGINE ./src/libsentencepiece.a \
-        -o $OUT/$fuzz_basename
-done
diff --git a/projects/sentencepiece/project.yaml b/projects/sentencepiece/project.yaml
deleted file mode 100644
index 579c703..0000000
--- a/projects/sentencepiece/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/google/sentencepiece"
-language: c++
-primary_contact: "taku@google.com"
-sanitizers:
-  - address
-  - memory
-  - undefined
-architectures:
-  - x86_64
-main_repo: 'https://github.com/google/sentencepiece.git'
diff --git a/projects/sentencepiece/sample_encode_fuzzer.cc b/projects/sentencepiece/sample_encode_fuzzer.cc
deleted file mode 100644
index 7beb06f..0000000
--- a/projects/sentencepiece/sample_encode_fuzzer.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include <cstddef>
-#include <cstdint>
-#include <string>
-#include <vector>
-
-#include "sentencepiece_processor.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  sentencepiece::SentencePieceProcessor fuzz_sp_processor;
-  FuzzedDataProvider data_provider(data, size);
-  const int nbest_size = data_provider.ConsumeIntegral<int>();
-  const float alpha = data_provider.ConsumeFloatingPoint<float>();
-  const std::string in_string = data_provider.ConsumeRemainingBytesAsString();
-
-  fuzz_sp_processor.SampleEncodeAsSerializedProto(in_string, nbest_size, alpha);
-  return 0;
-}
diff --git a/projects/serde-yaml/Dockerfile b/projects/serde-yaml/Dockerfile
deleted file mode 100644
index 42b1ce3..0000000
--- a/projects/serde-yaml/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/dtolnay/serde-yaml serde-yaml
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/serde-yaml/build.sh b/projects/serde-yaml/build.sh
deleted file mode 100755
index dd128bb..0000000
--- a/projects/serde-yaml/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/serde-yaml
-cargo fuzz build -O 
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_from_slice $OUT/
diff --git a/projects/serde-yaml/project.yaml b/projects/serde-yaml/project.yaml
deleted file mode 100644
index 2f5208f..0000000
--- a/projects/serde-yaml/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/dtolnay/serde-yaml"
-primary_contact: "dtolnay@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
-main_repo: 'https://github.com/dtolnay/serde-yaml'
diff --git a/projects/serde_json/Dockerfile b/projects/serde_json/Dockerfile
deleted file mode 100644
index d27ebda..0000000
--- a/projects/serde_json/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang
-
-RUN git clone --depth 1 https://github.com/serde-rs/json json
-WORKDIR $SRC
-
-COPY build.sh $SRC/
diff --git a/projects/serde_json/build.sh b/projects/serde_json/build.sh
deleted file mode 100755
index 9ae8b78..0000000
--- a/projects/serde_json/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Note: This project creates Rust fuzz targets exclusively
-cd $SRC/json
-cargo fuzz build -O 
-cp fuzz/target/x86_64-unknown-linux-gnu/release/from_slice $OUT/
diff --git a/projects/serde_json/project.yaml b/projects/serde_json/project.yaml
deleted file mode 100644
index f7b8571..0000000
--- a/projects/serde_json/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://github.com/serde-rs/json"
-primary_contact: "dtolnay@gmail.com"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/serenity/Dockerfile b/projects/serenity/Dockerfile
deleted file mode 100644
index c494759..0000000
--- a/projects/serenity/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y build-essential cmake curl e2fsprogs libmpfr-dev libmpc-dev libgmp-dev ninja-build
-RUN git clone https://github.com/SerenityOS/serenity
-COPY build.sh $SRC/
-WORKDIR $SRC/serenity/Meta/Lagom
diff --git a/projects/serenity/build.sh b/projects/serenity/build.sh
deleted file mode 100755
index fa01830..0000000
--- a/projects/serenity/build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Now build the content
-mkdir -p build
-cd build
-cmake -GNinja \
-    -DBUILD_LAGOM=ON \
-    -DENABLE_OSS_FUZZ=ON \
-    -DCMAKE_C_COMPILER=$CC \
-    -DCMAKE_CXX_COMPILER=$CXX \
-    -DCMAKE_CXX_FLAGS="$CXXFLAGS -DOSS_FUZZ=ON" \
-    -DLINKER_FLAGS="$LIB_FUZZING_ENGINE" \
-    ..
-ninja
-cp Fuzzers/Fuzz* $OUT/
-
diff --git a/projects/serenity/project.yaml b/projects/serenity/project.yaml
deleted file mode 100644
index 70acba0..0000000
--- a/projects/serenity/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://github.com/SerenityOS/serenity"
-language: c++
-primary_contact: "kling@serenityos.org"
-auto_ccs:
-  - "david@adalogics.com"
-  - "mail@linusgroh.de"
-  - "ali.mpfard@gmail.com"
-  - "luke.wilde@live.co.uk"
-  - "bugaevc@serenityos.org"
-  - "b.gianfo@gmail.com"
-  - "idan.horowitz@gmail.com"
-  - "~awesomekling/serenityos-dev@lists.sr.ht"
-
-# Bug reports are public by default:
-view_restrictions: none
-main_repo: 'https://github.com/SerenityOS/serenity'
diff --git a/projects/servo/Dockerfile b/projects/servo/Dockerfile
deleted file mode 100644
index a0e081d..0000000
--- a/projects/servo/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN git clone --depth 1 https://github.com/servo/html5ever
-RUN git clone --depth 1 https://github.com/servo/rust-url
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/servo/build.sh b/projects/servo/build.sh
deleted file mode 100755
index 78d7dea..0000000
--- a/projects/servo/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/html5ever/html5ever
-cargo fuzz build -O 
-cp fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_document_parse $OUT/
-
-cd $SRC/rust-url/url
-cargo fuzz build -O
-cp fuzz/target/x86_64-unknown-linux-gnu/release/parse $OUT/fuzz-url-parse
diff --git a/projects/servo/project.yaml b/projects/servo/project.yaml
deleted file mode 100644
index 4b8aa5b..0000000
--- a/projects/servo/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/servo"
-primary_contact: "oss-fuzz@servo.org"
-sanitizers:
-  - address
-fuzzing_engines:
-  - libfuzzer
-language: rust
-auto_ccs:
-  - "mrlachatte@gmail.com"
-  - "vgosu@mozilla.com"
-  - "david@adalogics.com"
-main_repo: 'https://github.com/servo/servo'
diff --git a/projects/simdjson/Dockerfile b/projects/simdjson/Dockerfile
index 88ba833..882ada5 100644
--- a/projects/simdjson/Dockerfile
+++ b/projects/simdjson/Dockerfile
@@ -15,10 +15,17 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER pauldreikossfuzz@gmail.com
 
 RUN apt-get update && apt-get install -y ninja-build wget
 
-RUN git clone --depth 1 https://github.com/simdjson/simdjson.git simdjson
+# We need a modern cmake
+ENV CMAKEVER 3.15.4
+RUN wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKEVER}/cmake-${CMAKEVER}-Linux-x86_64.sh ;\
+    chmod +x cmake-${CMAKEVER}-Linux-x86_64.sh ; \
+    ./cmake-${CMAKEVER}-Linux-x86_64.sh --skip-license --prefix="/usr/local"
+
+RUN git clone --depth 1 https://github.com/lemire/simdjson.git simdjson
 WORKDIR simdjson
 COPY build.sh $SRC/
 
diff --git a/projects/simdjson/project.yaml b/projects/simdjson/project.yaml
index 33b298a..6b2cb2d 100644
--- a/projects/simdjson/project.yaml
+++ b/projects/simdjson/project.yaml
@@ -1,7 +1,5 @@
-homepage: "https://github.com/simdjson/simdjson"
-language: c++
+homepage: "https://github.com/lemire/simdjson"
 primary_contact: "pauldreikossfuzz@gmail.com"
 auto_ccs:
  - "lemire@gmail.com"
 
-main_repo: 'https://github.com/simdjson/simdjson.git'
diff --git a/projects/skcms/Dockerfile b/projects/skcms/Dockerfile
index de7cd1c..dffd98e 100644
--- a/projects/skcms/Dockerfile
+++ b/projects/skcms/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kjlubick@chromium.org
 
 RUN apt-get update && apt-get install -y wget
 
diff --git a/projects/skcms/project.yaml b/projects/skcms/project.yaml
index c92ee3b..8401165 100644
--- a/projects/skcms/project.yaml
+++ b/projects/skcms/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://skia.googlesource.com/skcms/+/master"
-language: c++
 primary_contact: "kjlubick@chromium.org"
 auto_ccs:
   - "mtklein@google.com"
@@ -11,4 +10,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://skia.googlesource.com/skcms.git'
diff --git a/projects/skia/BUILD.gn.diff b/projects/skia/BUILD.gn.diff
new file mode 100644
index 0000000..ffa088c
--- /dev/null
+++ b/projects/skia/BUILD.gn.diff
@@ -0,0 +1,454 @@
+# Copyright 2016 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+# Append this to build.gn in the skia repo and then build the targets
+test_app("region_deserialize") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzRegionDeserialize.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("image_filter_deserialize") {
+  include_dirs = [
+    "tools",
+    "tools/fonts",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp",
+    "tools/Resources.cpp",
+    "tools/fonts/TestFontMgr.cpp",
+    "tools/fonts/TestSVGTypeface.cpp",
+    "tools/fonts/TestTypeface.cpp",
+  ]
+  deps = [
+    ":experimental_svg_model",
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("region_set_path") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzRegionSetPath.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("textblob_deserialize") {
+  include_dirs = [
+    "tools",
+    "tools/fonts",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp",
+    "tools/Resources.cpp",
+    "tools/fonts/TestFontMgr.cpp",
+    "tools/fonts/TestSVGTypeface.cpp",
+    "tools/fonts/TestTypeface.cpp",
+  ]
+  deps = [
+    ":experimental_svg_model",
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("path_deserialize") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzPathDeserialize.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("image_decode") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzImage.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("animated_image_decode") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzAnimatedImage.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_draw_functions") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzDrawFunctions.cpp",
+    "fuzz/oss_fuzz/FuzzDrawFunctions.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_gradients") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzGradients.cpp",
+    "fuzz/oss_fuzz/FuzzGradients.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_image_filter") {
+  include_dirs = [
+    "tools",
+    "tools/debugger",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCanvas.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzAPIImageFilter.cpp",
+    "tools/UrlDataManager.cpp",
+    "tools/debugger/DebugCanvas.cpp",
+    "tools/debugger/DebugLayerManager.cpp",
+    "tools/debugger/DrawCommand.cpp",
+    "tools/debugger/JsonWriteBuffer.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":gpu_tool_utils",
+    ":skia",
+    "//third_party/libpng",
+  ]
+}
+
+test_app("api_path_measure") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzPathMeasure.cpp",
+    "fuzz/oss_fuzz/FuzzPathMeasure.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_pathop") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzPathop.cpp",
+    "fuzz/oss_fuzz/FuzzPathop.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_raster_n32_canvas") {
+  include_dirs = [
+    "tools",
+    "tools/debugger",
+    "tools/fonts",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCanvas.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzRasterN32Canvas.cpp",
+    "tools/Resources.cpp",
+    "tools/UrlDataManager.cpp",
+    "tools/debugger/DebugCanvas.cpp",
+    "tools/debugger/DebugLayerManager.cpp",
+    "tools/debugger/DrawCommand.cpp",
+    "tools/debugger/JsonWriteBuffer.cpp",
+    "tools/fonts/TestFontMgr.cpp",
+    "tools/fonts/TestSVGTypeface.cpp",
+    "tools/fonts/TestTypeface.cpp",
+  ]
+  deps = [
+    ":experimental_svg_model",
+    ":flags",
+    ":gpu_tool_utils",
+    ":skia",
+    "//third_party/libpng",
+  ]
+}
+
+test_app("api_mock_gpu_canvas") {
+  include_dirs = [
+    "tools",
+    "tools/debugger",
+    "tools/fonts",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCanvas.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzMockGPUCanvas.cpp",
+    "tools/LsanSuppressions.cpp",
+    "tools/Resources.cpp",
+    "tools/UrlDataManager.cpp",
+    "tools/debugger/DebugCanvas.cpp",
+    "tools/debugger/DebugLayerManager.cpp",
+    "tools/debugger/DrawCommand.cpp",
+    "tools/debugger/JsonWriteBuffer.cpp",
+    "tools/fonts/TestFontMgr.cpp",
+    "tools/fonts/TestSVGTypeface.cpp",
+    "tools/fonts/TestTypeface.cpp",
+  ]
+  deps = [
+    ":experimental_svg_model",
+    ":flags",
+    ":gpu_tool_utils",
+    ":skia",
+    "//third_party/libpng",
+  ]
+}
+
+test_app("api_null_canvas") {
+  include_dirs = [
+    "tools",
+    "tools/debugger",
+    "tools/fonts",
+  ]
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCanvas.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzNullCanvas.cpp",
+    "tools/Resources.cpp",
+    "tools/UrlDataManager.cpp",
+    "tools/debugger/DebugCanvas.cpp",
+    "tools/debugger/DebugLayerManager.cpp",
+    "tools/debugger/DrawCommand.cpp",
+    "tools/debugger/JsonWriteBuffer.cpp",
+    "tools/fonts/TestFontMgr.cpp",
+    "tools/fonts/TestSVGTypeface.cpp",
+    "tools/fonts/TestTypeface.cpp",
+  ]
+  deps = [
+    ":experimental_svg_model",
+    ":flags",
+    ":gpu_tool_utils",
+    ":skia",
+    "//third_party/libpng",
+  ]
+}
+
+test_app("png_encoder") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzEncoders.cpp",
+    "fuzz/oss_fuzz/FuzzPNGEncoder.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("jpeg_encoder") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzEncoders.cpp",
+    "fuzz/oss_fuzz/FuzzJPEGEncoder.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("webp_encoder") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzEncoders.cpp",
+    "fuzz/oss_fuzz/FuzzWEBPEncoder.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("skottie_json") {
+  deps = [
+    ":flags",
+    ":skia",
+    "modules/skottie:fuzz",
+  ]
+}
+
+test_app("skjson") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzJSON.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("api_polyutils") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzPolyUtils.cpp",
+    "fuzz/oss_fuzz/FuzzPolyUtils.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("android_codec") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzAndroidCodec.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("image_decode_incremental") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzIncrementalImage.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("sksl2glsl") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp",
+  ]
+  deps = [
+    ":gpu_tool_utils",
+    ":skia",
+  ]
+}
+
+test_app("sksl2spirv") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp",
+  ]
+  deps = [
+    ":gpu_tool_utils",
+    ":skia",
+  ]
+}
+
+test_app("sksl2metal") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzSKSL2Metal.cpp",
+  ]
+  deps = [
+    ":gpu_tool_utils",
+    ":skia",
+  ]
+}
+
+test_app("sksl2pipeline") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp",
+  ]
+  deps = [
+    ":gpu_tool_utils",
+    ":skia",
+  ]
+}
+
+test_app("api_skdescriptor") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/FuzzSkDescriptor.cpp",
+    "fuzz/oss_fuzz/FuzzAPISkDescriptor.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
+
+test_app("skdescriptor_deserialize") {
+  sources = [
+    "fuzz/Fuzz.cpp",
+    "fuzz/FuzzCommon.cpp",
+    "fuzz/oss_fuzz/FuzzSkDescriptorDeserialize.cpp",
+  ]
+  deps = [
+    ":flags",
+    ":skia",
+  ]
+}
\ No newline at end of file
diff --git a/projects/skia/Dockerfile b/projects/skia/Dockerfile
index e429088..801c543 100644
--- a/projects/skia/Dockerfile
+++ b/projects/skia/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER kjlubick@chromium.org
 
-# Mesa and libz/zlib needed to build swiftshader
-RUN apt-get update && apt-get install -y python wget libglu1-mesa-dev cmake lib32z1-dev zlib1g-dev
+# Mesa needed to build swiftshader
+RUN apt-get update && apt-get install -y python wget libglu1-mesa-dev cmake
 
 RUN git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git' --depth 1
 ENV PATH="${SRC}/depot_tools:${PATH}"
@@ -29,53 +30,89 @@
 
 RUN bin/sync
 
-# Make a directory for fuzzing artifacts that won't be clobbered by CIFuzz.
-RUN mkdir $SRC/skia_data
-
-RUN wget -O $SRC/skia_data/image_filter_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/image_filter_deserialize_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/region_set_path_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/region_set_path_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/textblob_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/textblob_deserialize_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/path_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/path_deserialize_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/image_decode_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/image_decode_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/animated_image_decode_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/animated_image_decode_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_draw_functions_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_draw_functions_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_gradients_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_gradients_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_image_filter_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_image_filter_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_path_measure_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_path_measure_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_pathop_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_pathop_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/canvas_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/canvas_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/encoder_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/encoder_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/skottie_json_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/skottie_json_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/skjson_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/skjson_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/api_polyutils_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_polyutils_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/sksl_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/sksl_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/svg_dom_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/svg_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/sksl_with_256_padding_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/sksl_with_256_padding_seed_corpus.zip
-
-RUN wget -O $SRC/skia_data/skp_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/skp_seed_corpus.zip
-
-COPY image_filter_deserialize_width.options $SRC/skia_data/image_filter_deserialize_width.options
-
-COPY json.dict $SRC/skia_data/json.dict
-
+# Setup SwiftShader
+WORKDIR $SRC/skia/third_party/externals/swiftshader/
+# TODO(metzman): Come up with a better long term solution, such as downloading
+# prebuilt libraries, than pinning swiftshader to a known working revision.
+RUN git checkout bf8fd5b5fb6892dabcc21b4b86d41cd40cb9b4b5
+RUN git submodule update --init
 WORKDIR $SRC/skia
 
+RUN wget -O $SRC/skia/image_filter_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/image_filter_deserialize_seed_corpus.zip
+
+RUN wget -O $SRC/skia/region_set_path_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/region_set_path_seed_corpus.zip
+
+RUN wget -O $SRC/skia/textblob_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/textblob_deserialize_seed_corpus.zip
+
+RUN wget -O $SRC/skia/path_deserialize_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/path_deserialize_seed_corpus.zip
+
+RUN wget -O $SRC/skia/image_decode_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/image_decode_seed_corpus.zip
+
+RUN wget -O $SRC/skia/animated_image_decode_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/animated_image_decode_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_draw_functions_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_draw_functions_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_gradients_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_gradients_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_image_filter_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_image_filter_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_path_measure_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_path_measure_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_pathop_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_pathop_seed_corpus.zip
+
+RUN wget -O $SRC/skia/canvas_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/canvas_seed_corpus.zip
+
+RUN wget -O $SRC/skia/encoder_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/encoder_seed_corpus.zip
+
+RUN wget -O $SRC/skia/skottie_json_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/skottie_json_seed_corpus.zip
+
+RUN wget -O $SRC/skia/skjson_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/skjson_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_polyutils_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_polyutils_seed_corpus.zip
+
+RUN wget -O $SRC/skia/sksl_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/sksl_seed_corpus.zip
+
+RUN wget -O $SRC/skia/api_skdescriptor_seed_corpus.zip https://storage.googleapis.com/skia-fuzzer/oss-fuzz/api_skdescriptor_seed_corpus.zip
+
 COPY build.sh $SRC/
+
+COPY skia.diff $SRC/skia/skia.diff
+RUN git apply skia.diff
+
+COPY region_deserialize.options $SRC/skia/region_deserialize.options
+COPY region_set_path.options $SRC/skia/region_set_path.options
+COPY image_filter_deserialize.options $SRC/skia/image_filter_deserialize.options
+COPY image_filter_deserialize_width.options $SRC/skia/image_filter_deserialize_width.options
+COPY textblob_deserialize.options $SRC/skia/textblob_deserialize.options
+COPY path_deserialize.options $SRC/skia/path_deserialize.options
+COPY encoder.options $SRC/skia/encoder.options
+COPY skdescriptor_deserialize.options $SRC/skia/skdescriptor_deserialize.options
+
+# Codec fuzzers can share options
+COPY image_codec.options $SRC/skia/android_codec.options
+COPY image_codec.options $SRC/skia/animated_image_decode.options
+COPY image_codec.options $SRC/skia/image_decode.options
+COPY image_codec.options $SRC/skia/image_decode_incremental.options
+
+# API fuzzers can share options
+COPY api_fuzzers.options $SRC/skia/api_draw_functions.options
+COPY api_fuzzers.options $SRC/skia/api_gradients.options
+COPY api_fuzzers.options $SRC/skia/api_image_filter.options
+COPY api_fuzzers.options $SRC/skia/api_mock_gpu_canvas.options
+COPY api_fuzzers.options $SRC/skia/api_null_canvas.options
+COPY api_fuzzers.options $SRC/skia/api_path_measure.options
+COPY api_fuzzers.options $SRC/skia/api_pathop.options
+COPY api_fuzzers.options $SRC/skia/api_polyutils.options
+COPY api_fuzzers.options $SRC/skia/api_raster_n32_canvas.options
+COPY api_fuzzers.options $SRC/skia/api_skdescriptor.options
+
+# SKSL fuzzers can share options
+COPY sksl.options $SRC/skia/sksl2glsl.options
+COPY sksl.options $SRC/skia/sksl2spirv.options
+COPY sksl.options $SRC/skia/sksl2metal.options
+COPY sksl.options $SRC/skia/sksl2pipeline.options
+
+COPY json.dict $SRC/skia/json.dict
+
+COPY BUILD.gn.diff $SRC/skia/BUILD.gn.diff
+RUN cat BUILD.gn.diff >> BUILD.gn
diff --git a/projects/skia/api_fuzzers.options b/projects/skia/api_fuzzers.options
new file mode 100644
index 0000000..a48b657
--- /dev/null
+++ b/projects/skia/api_fuzzers.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 4000
\ No newline at end of file
diff --git a/projects/skia/build.sh b/projects/skia/build.sh
index 0f6d73f..fbbf2ab 100644
--- a/projects/skia/build.sh
+++ b/projects/skia/build.sh
@@ -18,35 +18,27 @@
 # Build SwiftShader
 pushd third_party/externals/swiftshader/
 export SWIFTSHADER_INCLUDE_PATH=$PWD/include
-# SwiftShader already has a build/ directory, use something else
-rm -rf build_swiftshader
-mkdir build_swiftshader
+rm -rf build
+mkdir build
 
-cd build_swiftshader
-if [ $SANITIZER == "address" ]; then
-  CMAKE_SANITIZER="SWIFTSHADER_ASAN"
-elif [ $SANITIZER == "memory" ]; then
-  CMAKE_SANITIZER="SWIFTSHADER_MSAN"
-  # oss-fuzz will patch the rpath for this after compilation and linking,
-  # so we only need to set this to appease the Swiftshader build rules check.
-  export SWIFTSHADER_MSAN_INSTRUMENTED_LIBCXX_PATH="/does/not/matter"
-elif [ $SANITIZER == "undefined" ]; then
-  # The current SwiftShader build needs -fno-sanitize=vptr, but it cannot be
-  # specified here since -fsanitize=undefined will always come after any
-  # user specified flags passed to cmake. SwiftShader does not need to be
-  # built with the undefined sanitizer in order to fuzz Skia, so don't.
-  CMAKE_SANITIZER="SWIFTSHADER_UBSAN_DISABLED"
-elif [ $SANITIZER == "coverage" ]; then
-  CMAKE_SANITIZER="SWIFTSHADER_EMIT_COVERAGE"
-elif [ $SANITIZER == "thread" ]; then
-  CMAKE_SANITIZER="SWIFTSHADER_UBSAN_DISABLED"
+cd build
+if [ $SANITIZER == "coverage" ]; then
+  cmake ..
 else
-  exit 1
+  if [ $SANITIZER == "address" ]; then
+    CMAKE_SANITIZER="ASAN"
+  elif [ $SANITIZER == "memory" ]; then
+    CMAKE_SANITIZER="MSAN"
+  elif [ $SANITIZER == "undefined" ]; then
+    CMAKE_SANITIZER="UBSAN"
+  else
+    exit 1
+  fi
+  CFLAGS= CXXFLAGS="-stdlib=libc++" cmake .. -D$CMAKE_SANITIZER=1
 fi
-CFLAGS= CXXFLAGS="-stdlib=libc++" cmake .. -GNinja -DCMAKE_MAKE_PROGRAM="$SRC/depot_tools/ninja" -D$CMAKE_SANITIZER=1
 
-$SRC/depot_tools/ninja libGLESv2 libEGL
-mv libGLESv2.so libEGL.so $OUT
+make -j
+cp libGLESv2.so libEGL.so $OUT
 export SWIFTSHADER_LIB_PATH=$OUT
 
 popd
@@ -54,38 +46,28 @@
 DISABLE="-Wno-zero-as-null-pointer-constant -Wno-unused-template
          -Wno-cast-qual"
 # Disable UBSan vptr since target built with -fno-rtti.
+# TODO(metzman): Stop using gold when
+# bugs.chromium.org/p/oss-fuzz/issues/detail?id=16777 gets resolved.
 export CFLAGS="$CFLAGS $DISABLE -I$SWIFTSHADER_INCLUDE_PATH -DGR_EGL_TRY_GLES3_THEN_GLES2 -fno-sanitize=vptr"
-export CXXFLAGS="$CXXFLAGS $DISABLE -I$SWIFTSHADER_INCLUDE_PATH -DGR_EGL_TRY_GLES3_THEN_GLES2 -fno-sanitize=vptr"
-export LDFLAGS="$LIB_FUZZING_ENGINE $CXXFLAGS -L$SWIFTSHADER_LIB_PATH"
+export CXXFLAGS="$CXXFLAGS $DISABLE -I$SWIFTSHADER_INCLUDE_PATH -DGR_EGL_TRY_GLES3_THEN_GLES2 -fno-sanitize=vptr "-DIS_FUZZING_WITH_LIBFUZZER""
+export LDFLAGS="$LIB_FUZZING_ENGINE $CXXFLAGS -L$SWIFTSHADER_LIB_PATH -fuse-ld=gold"
 
 # This splits a space separated list into a quoted, comma separated list for gn.
 export CFLAGS_ARR=`echo $CFLAGS | sed -e "s/\s/\",\"/g"`
 export CXXFLAGS_ARR=`echo $CXXFLAGS | sed -e "s/\s/\",\"/g"`
 export LDFLAGS_ARR=`echo $LDFLAGS | sed -e "s/\s/\",\"/g"`
 
-$SRC/skia/bin/fetch-gn
-
-set +u
-LIMITED_LINK_POOL="link_pool_depth=1"
-if [ "$CIFUZZ" = "true" ]; then
-  echo "Not restricting linking because on CIFuzz"
-  LIMITED_LINK_POOL=""
-fi
-set -u
-
 # Even though GPU is "enabled" for all these builds, none really
 # uses the gpu except for api_mock_gpu_canvas
-$SRC/skia/bin/gn gen out/Fuzz\
+
+$SRC/depot_tools/gn gen out/Fuzz\
     --args='cc="'$CC'"
       cxx="'$CXX'"
-      '$LIMITED_LINK_POOL'
       is_debug=false
       extra_cflags_c=["'"$CFLAGS_ARR"'"]
       extra_cflags_cc=["'"$CXXFLAGS_ARR"'"]
       extra_ldflags=["'"$LDFLAGS_ARR"'"]
-      skia_build_fuzzers=true
-      skia_enable_fontmgr_custom_directory=false
-      skia_enable_fontmgr_custom_embedded=false
+      skia_enable_fontmgr_custom=false
       skia_enable_fontmgr_custom_empty=true
       skia_enable_gpu=true
       skia_enable_skottie=true
@@ -93,165 +75,163 @@
       skia_use_fontconfig=false
       skia_use_freetype=true
       skia_use_system_freetype2=false
-      skia_use_wuffs=true
-      skia_use_libfuzzer_defaults=false'
+      skia_use_wuffs=true'
 
-$SRC/depot_tools/ninja -C out/Fuzz \
-  android_codec \
-  animated_image_decode \
-  api_create_ddl \
-  api_ddl_threading \
-  api_draw_functions \
-  api_gradients \
-  api_image_filter \
-  api_mock_gpu_canvas \
-  api_null_canvas \
-  api_path_measure \
-  api_pathop \
-  api_polyutils \
-  api_raster_n32_canvas \
-  api_regionop \
-  api_skparagraph \
-  api_svg_canvas \
-  image_decode \
-  image_decode_incremental \
-  image_filter_deserialize \
-  jpeg_encoder \
-  path_deserialize \
-  png_encoder \
-  region_deserialize \
-  region_set_path \
-  skdescriptor_deserialize \
-  skjson \
-  skottie_json \
-  skp \
-  skruntimeeffect \
-  sksl2glsl \
-  sksl2metal \
-  sksl2pipeline \
-  sksl2spirv \
-  svg_dom \
-  textblob_deserialize \
-  webp_encoder
+$SRC/depot_tools/gn gen out/Fuzz_mem_constraints\
+    --args='cc="'$CC'"
+      cxx="'$CXX'"
+      is_debug=false
+      extra_cflags_c=["'"$CFLAGS_ARR"'"]
+      extra_cflags_cc=["'"$CXXFLAGS_ARR"'","-DIS_FUZZING"]
+      extra_ldflags=["'"$LDFLAGS_ARR"'"]
+      skia_enable_fontmgr_custom=false
+      skia_enable_fontmgr_custom_empty=true
+      skia_enable_gpu=true
+      skia_enable_skottie=true
+      skia_use_egl=true
+      skia_use_fontconfig=false
+      skia_use_freetype=true
+      skia_use_system_freetype2=false
+      skia_use_wuffs=true'
 
-rm -rf $OUT/data
-mkdir $OUT/data
+$SRC/depot_tools/ninja -C out/Fuzz region_deserialize region_set_path \
+                                   path_deserialize image_decode \
+                                   animated_image_decode api_draw_functions \
+                                   api_gradients api_path_measure png_encoder \
+                                   jpeg_encoder webp_encoder skottie_json \
+                                   textblob_deserialize skjson \
+                                   api_null_canvas api_image_filter api_pathop \
+                                   api_polyutils android_codec image_decode_incremental \
+                                   sksl2glsl sksl2spirv sksl2metal sksl2pipeline \
+                                   api_skdescriptor skdescriptor_deserialize
 
-mv out/Fuzz/region_deserialize $OUT/region_deserialize
+$SRC/depot_tools/ninja -C out/Fuzz_mem_constraints image_filter_deserialize \
+                                                   api_raster_n32_canvas \
+                                                   api_mock_gpu_canvas
 
-mv out/Fuzz/region_set_path $OUT/region_set_path
-mv ../skia_data/region_set_path_seed_corpus.zip $OUT/region_set_path_seed_corpus.zip
+cp out/Fuzz/region_deserialize $OUT/region_deserialize
+cp ./region_deserialize.options $OUT/region_deserialize.options
 
-mv out/Fuzz/textblob_deserialize $OUT/textblob_deserialize
-mv ../skia_data/textblob_deserialize_seed_corpus.zip $OUT/textblob_deserialize_seed_corpus.zip
+cp out/Fuzz/region_set_path $OUT/region_set_path
+cp ./region_set_path.options $OUT/region_set_path.options
+cp ./region_set_path_seed_corpus.zip $OUT/region_set_path_seed_corpus.zip
 
-mv out/Fuzz/path_deserialize $OUT/path_deserialize
-mv ../skia_data/path_deserialize_seed_corpus.zip $OUT/path_deserialize_seed_corpus.zip
+cp out/Fuzz/textblob_deserialize $OUT/textblob_deserialize
+cp ./textblob_deserialize.options $OUT/textblob_deserialize.options
+cp ./textblob_deserialize_seed_corpus.zip $OUT/textblob_deserialize_seed_corpus.zip
 
-mv out/Fuzz/animated_image_decode $OUT/animated_image_decode
-mv ../skia_data/animated_image_decode_seed_corpus.zip $OUT/animated_image_decode_seed_corpus.zip
+cp out/Fuzz/path_deserialize $OUT/path_deserialize
+cp ./path_deserialize.options $OUT/path_deserialize.options
+cp ./path_deserialize_seed_corpus.zip $OUT/path_deserialize_seed_corpus.zip
+
+cp out/Fuzz/image_decode $OUT/image_decode
+cp ./image_decode.options $OUT/image_decode.options
+cp ./image_decode_seed_corpus.zip $OUT/image_decode_seed_corpus.zip
+
+cp out/Fuzz/animated_image_decode $OUT/animated_image_decode
+cp ./animated_image_decode.options $OUT/animated_image_decode.options
+cp ./animated_image_decode_seed_corpus.zip $OUT/animated_image_decode_seed_corpus.zip
+
+cp out/Fuzz_mem_constraints/image_filter_deserialize $OUT/image_filter_deserialize
+cp ./image_filter_deserialize.options $OUT/image_filter_deserialize.options
+cp ./image_filter_deserialize_seed_corpus.zip $OUT/image_filter_deserialize_seed_corpus.zip
 
 # Only create the width version of image_filter_deserialize if building with
 # libfuzzer, since it depends on a libfuzzer specific flag.
 if [ "$FUZZING_ENGINE" == "libfuzzer" ]
 then
   # Use the same binary as image_filter_deserialize.
-  cp out/Fuzz/image_filter_deserialize $OUT/image_filter_deserialize_width
-  mv ../skia_data/image_filter_deserialize_width.options $OUT/image_filter_deserialize_width.options
+  cp out/Fuzz_mem_constraints/image_filter_deserialize $OUT/image_filter_deserialize_width
+  cp ./image_filter_deserialize_width.options $OUT/image_filter_deserialize_width.options
   # Use the same seed corpus as image_filter_deserialize.
-  cp ../skia_data/image_filter_deserialize_seed_corpus.zip $OUT/image_filter_deserialize_width_seed_corpus.zip
+  cp ./image_filter_deserialize_seed_corpus.zip $OUT/image_filter_deserialize_width_seed_corpus.zip
 fi
 
-mv out/Fuzz/image_filter_deserialize $OUT/image_filter_deserialize
-mv ../skia_data/image_filter_deserialize_seed_corpus.zip $OUT/image_filter_deserialize_seed_corpus.zip
+cp out/Fuzz/api_draw_functions $OUT/api_draw_functions
+cp ./api_draw_functions.options $OUT/api_draw_functions.options
+cp ./api_draw_functions_seed_corpus.zip $OUT/api_draw_functions_seed_corpus.zip
 
-mv out/Fuzz/api_draw_functions $OUT/api_draw_functions
-mv ../skia_data/api_draw_functions_seed_corpus.zip $OUT/api_draw_functions_seed_corpus.zip
+cp out/Fuzz/api_gradients $OUT/api_gradients
+cp ./api_gradients.options $OUT/api_gradients.options
+cp ./api_gradients_seed_corpus.zip $OUT/api_gradients_seed_corpus.zip
 
-mv out/Fuzz/api_gradients $OUT/api_gradients
-mv ../skia_data/api_gradients_seed_corpus.zip $OUT/api_gradients_seed_corpus.zip
+cp out/Fuzz/api_path_measure $OUT/api_path_measure
+cp ./api_path_measure.options $OUT/api_path_measure.options
+cp ./api_path_measure_seed_corpus.zip $OUT/api_path_measure_seed_corpus.zip
 
-mv out/Fuzz/api_path_measure $OUT/api_path_measure
-mv ../skia_data/api_path_measure_seed_corpus.zip $OUT/api_path_measure_seed_corpus.zip
+cp out/Fuzz/api_pathop $OUT/api_pathop
+cp ./api_pathop.options $OUT/api_pathop.options
+cp ./api_pathop_seed_corpus.zip $OUT/api_pathop_seed_corpus.zip
 
-mv out/Fuzz/api_pathop $OUT/api_pathop
-mv ../skia_data/api_pathop_seed_corpus.zip $OUT/api_pathop_seed_corpus.zip
+cp out/Fuzz/png_encoder $OUT/png_encoder
+cp ./encoder.options $OUT/png_encoder.options
+cp ./encoder_seed_corpus.zip $OUT/png_encoder_seed_corpus.zip
 
-# These 3 use the same corpus.
-mv out/Fuzz/png_encoder $OUT/png_encoder
-cp ../skia_data/encoder_seed_corpus.zip $OUT/png_encoder_seed_corpus.zip
+cp out/Fuzz/jpeg_encoder $OUT/jpeg_encoder
+cp ./encoder.options $OUT/jpeg_encoder.options
+cp ./encoder_seed_corpus.zip $OUT/jpeg_encoder_seed_corpus.zip
 
-mv out/Fuzz/jpeg_encoder $OUT/jpeg_encoder
-cp ../skia_data/encoder_seed_corpus.zip $OUT/jpeg_encoder_seed_corpus.zip
+cp out/Fuzz/webp_encoder $OUT/webp_encoder
+cp ./encoder.options $OUT/webp_encoder.options
+cp ./encoder_seed_corpus.zip $OUT/webp_encoder_seed_corpus.zip
 
-mv out/Fuzz/webp_encoder $OUT/webp_encoder
-mv ../skia_data/encoder_seed_corpus.zip $OUT/webp_encoder_seed_corpus.zip
+cp out/Fuzz/skottie_json $OUT/skottie_json
+cp ./skottie_json_seed_corpus.zip $OUT/skottie_json_seed_corpus.zip
 
-mv out/Fuzz/skottie_json $OUT/skottie_json
-mv ../skia_data/skottie_json_seed_corpus.zip $OUT/skottie_json_seed_corpus.zip
+cp out/Fuzz/skjson $OUT/skjson
+cp json.dict $OUT/skjson.dict
+cp ./skjson_seed_corpus.zip $OUT/skjson_seed_corpus.zip
 
-mv out/Fuzz/skjson $OUT/skjson
-mv ../skia_data/json.dict $OUT/skjson.dict
-mv ../skia_data/skjson_seed_corpus.zip $OUT/skjson_seed_corpus.zip
+cp out/Fuzz_mem_constraints/api_mock_gpu_canvas $OUT/api_mock_gpu_canvas
+cp ./api_mock_gpu_canvas.options $OUT/api_mock_gpu_canvas.options
+cp ./canvas_seed_corpus.zip $OUT/api_mock_gpu_canvas_seed_corpus.zip
 
-# These 4 use the same canvas_seed_corpus.
-mv out/Fuzz/api_mock_gpu_canvas $OUT/api_mock_gpu_canvas
-cp ../skia_data/canvas_seed_corpus.zip $OUT/api_mock_gpu_canvas_seed_corpus.zip
+cp out/Fuzz_mem_constraints/api_raster_n32_canvas $OUT/api_raster_n32_canvas
+cp ./api_raster_n32_canvas.options $OUT/api_raster_n32_canvas.options
+cp ./canvas_seed_corpus.zip $OUT/api_raster_n32_canvas_seed_corpus.zip
 
-mv out/Fuzz/api_raster_n32_canvas $OUT/api_raster_n32_canvas
-cp ../skia_data/canvas_seed_corpus.zip $OUT/api_raster_n32_canvas_seed_corpus.zip
+cp out/Fuzz/api_image_filter $OUT/api_image_filter
+cp ./api_image_filter.options $OUT/api_image_filter.options
+cp ./api_image_filter_seed_corpus.zip $OUT/api_image_filter_seed_corpus.zip
 
-mv out/Fuzz/api_svg_canvas $OUT/api_svg_canvas
-cp ../skia_data/canvas_seed_corpus.zip $OUT/api_svg_canvas_seed_corpus.zip
+cp out/Fuzz/api_null_canvas $OUT/api_null_canvas
+cp ./api_null_canvas.options $OUT/api_null_canvas.options
+cp ./canvas_seed_corpus.zip $OUT/api_null_canvas_seed_corpus.zip
 
-mv out/Fuzz/api_null_canvas $OUT/api_null_canvas
-mv ../skia_data/canvas_seed_corpus.zip $OUT/api_null_canvas_seed_corpus.zip
+cp out/Fuzz/api_polyutils $OUT/api_polyutils
+cp ./api_polyutils.options $OUT/api_polyutils.options
+cp ./api_polyutils_seed_corpus.zip $OUT/api_polyutils_seed_corpus.zip
 
-mv out/Fuzz/api_image_filter $OUT/api_image_filter
-mv ../skia_data/api_image_filter_seed_corpus.zip $OUT/api_image_filter_seed_corpus.zip
+# These 2 can use the same corpus as the (non animated) image_decode.
+cp out/Fuzz/android_codec $OUT/android_codec
+cp ./android_codec.options $OUT/android_codec.options
+cp ./image_decode_seed_corpus.zip $OUT/android_codec_seed_corpus.zip.
 
-mv out/Fuzz/api_polyutils $OUT/api_polyutils
-mv ../skia_data/api_polyutils_seed_corpus.zip $OUT/api_polyutils_seed_corpus.zip
+cp out/Fuzz/image_decode_incremental $OUT/image_decode_incremental
+cp ./image_decode_incremental.options $OUT/image_decode_incremental.options
+cp ./image_decode_seed_corpus.zip $OUT/image_decode_incremental_seed_corpus.zip
 
-# These 3 use the same corpus.
-mv out/Fuzz/image_decode $OUT/image_decode
-cp ../skia_data/image_decode_seed_corpus.zip $OUT/image_decode_seed_corpus.zip
+cp out/Fuzz/sksl2glsl $OUT/sksl2glsl
+cp ./sksl2glsl.options $OUT/sksl2glsl.options
+cp ./sksl_seed_corpus.zip $OUT/sksl2glsl_seed_corpus.zip
 
-mv out/Fuzz/android_codec $OUT/android_codec
-cp ../skia_data/image_decode_seed_corpus.zip $OUT/android_codec_seed_corpus.zip.
+cp out/Fuzz/sksl2spirv $OUT/sksl2spirv
+cp ./sksl2spirv.options $OUT/sksl2spirv.options
+cp ./sksl_seed_corpus.zip $OUT/sksl2spirv_seed_corpus.zip
 
-mv out/Fuzz/image_decode_incremental $OUT/image_decode_incremental
-mv ../skia_data/image_decode_seed_corpus.zip $OUT/image_decode_incremental_seed_corpus.zip
+cp out/Fuzz/sksl2metal $OUT/sksl2metal
+cp ./sksl2metal.options $OUT/sksl2metal.options
+cp ./sksl_seed_corpus.zip $OUT/sksl2metal_seed_corpus.zip
 
-# These 4 use the same sksl_seed_corpus.
-mv out/Fuzz/sksl2glsl $OUT/sksl2glsl
-cp ../skia_data/sksl_seed_corpus.zip $OUT/sksl2glsl_seed_corpus.zip
+cp out/Fuzz/sksl2pipeline $OUT/sksl2pipeline
+cp ./sksl2pipeline.options $OUT/sksl2pipeline.options
+cp ./sksl_seed_corpus.zip $OUT/sksl2pipeline_seed_corpus.zip
 
-mv out/Fuzz/sksl2spirv $OUT/sksl2spirv
-cp ../skia_data/sksl_seed_corpus.zip $OUT/sksl2spirv_seed_corpus.zip
+cp out/Fuzz/api_skdescriptor $OUT/api_skdescriptor
+cp ./api_skdescriptor.options $OUT/api_skdescriptor.options
+cp ./api_skdescriptor_seed_corpus.zip $OUT/api_skdescriptor_seed_corpus.zip
 
-mv out/Fuzz/sksl2metal $OUT/sksl2metal
-cp ../skia_data/sksl_seed_corpus.zip $OUT/sksl2metal_seed_corpus.zip
-
-mv out/Fuzz/sksl2pipeline $OUT/sksl2pipeline
-mv ../skia_data/sksl_seed_corpus.zip $OUT/sksl2pipeline_seed_corpus.zip
-
-mv out/Fuzz/skdescriptor_deserialize $OUT/skdescriptor_deserialize
-
-mv out/Fuzz/svg_dom $OUT/svg_dom
-mv ../skia_data/svg_dom_seed_corpus.zip $OUT/svg_dom_seed_corpus.zip
-
-
-mv out/Fuzz/skruntimeeffect $OUT/skruntimeeffect
-mv ../skia_data/sksl_with_256_padding_seed_corpus.zip $OUT/skruntimeeffect_seed_corpus.zip
-
-mv out/Fuzz/api_create_ddl $OUT/api_create_ddl
-
-mv out/Fuzz/api_ddl_threading $OUT/api_ddl_threading
-
-mv out/Fuzz/skp $OUT/skp
-mv ../skia_data/skp_seed_corpus.zip $OUT/skp_seed_corpus.zip
-
-mv out/Fuzz/api_skparagraph $OUT/api_skparagraph
-
-mv out/Fuzz/api_regionop $OUT/api_regionop
+# Don't have any examples of an SkDescriptor atm, so some random bytes is all we have.
+cp out/Fuzz/skdescriptor_deserialize $OUT/skdescriptor_deserialize
+cp ./skdescriptor_deserialize.options $OUT/skdescriptor_deserialize.options
+cp ./api_skdescriptor_seed_corpus.zip $OUT/skdescriptor_deserialize_seed_corpus.zip
\ No newline at end of file
diff --git a/projects/skia/encoder.options b/projects/skia/encoder.options
new file mode 100644
index 0000000..a360502
--- /dev/null
+++ b/projects/skia/encoder.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 262150
\ No newline at end of file
diff --git a/projects/skia/image_codec.options b/projects/skia/image_codec.options
new file mode 100644
index 0000000..4709741
--- /dev/null
+++ b/projects/skia/image_codec.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 10240
\ No newline at end of file
diff --git a/projects/skia/image_filter_deserialize.options b/projects/skia/image_filter_deserialize.options
new file mode 100644
index 0000000..0bde038
--- /dev/null
+++ b/projects/skia/image_filter_deserialize.options
@@ -0,0 +1,3 @@
+[libfuzzer]
+max_len = 10024
+timeout = 10
diff --git a/projects/skia/path_deserialize.options b/projects/skia/path_deserialize.options
new file mode 100644
index 0000000..9b7b54d
--- /dev/null
+++ b/projects/skia/path_deserialize.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 2000
\ No newline at end of file
diff --git a/projects/skia/project.yaml b/projects/skia/project.yaml
index 824ac21..c1aa459 100644
--- a/projects/skia/project.yaml
+++ b/projects/skia/project.yaml
@@ -1,15 +1,10 @@
 homepage: "https://github.com/google/skia"
-language: c++
 primary_contact: "kjlubick@chromium.org"
 auto_ccs:
-  - "hcm@google.com"
+  - "hcm@chromium.org"
   - "mtklein@google.com"
   - "reed@google.com"
   - "bsalomon@google.com"
-  - "brianosman@google.com"
-  - "johnstiles@google.com"
-  - "ethannicholas@google.com"
-  - "westont@google.com"
 vendor_ccs:
   - "lsalzman@mozilla.com"
   - "twsmith@mozilla.com"
@@ -18,5 +13,3 @@
  - undefined
  - memory
 help_url: "https://skia.org/dev/testing/fuzz"
-builds_per_day: 4
-main_repo: 'https://skia.googlesource.com/skia.git'
diff --git a/projects/skia/region_deserialize.options b/projects/skia/region_deserialize.options
new file mode 100644
index 0000000..14b7dbf
--- /dev/null
+++ b/projects/skia/region_deserialize.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 512
\ No newline at end of file
diff --git a/projects/skia/region_set_path.options b/projects/skia/region_set_path.options
new file mode 100644
index 0000000..14b7dbf
--- /dev/null
+++ b/projects/skia/region_set_path.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 512
\ No newline at end of file
diff --git a/projects/skia/skdescriptor_deserialize.options b/projects/skia/skdescriptor_deserialize.options
new file mode 100644
index 0000000..0090e8b
--- /dev/null
+++ b/projects/skia/skdescriptor_deserialize.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 1024
\ No newline at end of file
diff --git a/projects/skia/skia.diff b/projects/skia/skia.diff
new file mode 100644
index 0000000..4e0c269
--- /dev/null
+++ b/projects/skia/skia.diff
@@ -0,0 +1,278 @@
+diff --git a/fuzz/FuzzPathMeasure.cpp b/fuzz/FuzzPathMeasure.cpp
+index 8526ff8cc6..116302f5fe 100644
+--- a/fuzz/FuzzPathMeasure.cpp
++++ b/fuzz/FuzzPathMeasure.cpp
+@@ -22,6 +22,9 @@ DEF_FUZZ(PathMeasure, fuzz) {
+     FuzzEvilPath(fuzz, &path, SkPath::Verb::kDone_Verb);
+     SkRect bounds = path.getBounds();
+     SkScalar maxDim = SkTMax(bounds.width(), bounds.height());
++    if (maxDim > 10000000) {
++        return;
++    }
+     SkScalar resScale = maxDim / 1000;
+     SkPathMeasure measure(path, bits & 1, resScale);
+     SkPoint position;
+diff --git a/src/core/SkAAClip.cpp b/src/core/SkAAClip.cpp
+index c33ea9510d..a4d09c265d 100644
+--- a/src/core/SkAAClip.cpp
++++ b/src/core/SkAAClip.cpp
+@@ -1547,6 +1547,12 @@ static void operateY(SkAAClip::Builder& builder, const SkAAClip& A,
+     int topB = iterB.top();
+     int botB = iterB.bottom();
+ 
++#if defined(IS_FUZZING)
++    if ((botA - topA) > 100000 || (botB - topB) > 100000) {
++        return;
++    }
++#endif
++
+     do {
+         const uint8_t* rowA = nullptr;
+         const uint8_t* rowB = nullptr;
+diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
+index 296329a52d..9b74d50146 100644
+--- a/src/core/SkDraw.cpp
++++ b/src/core/SkDraw.cpp
+@@ -959,6 +959,12 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint,
+     // transform the path into device space
+     pathPtr->transform(*matrix, devPathPtr);
+ 
++#if defined(IS_FUZZING)
++    if (devPathPtr->countPoints() > 1000) {
++        return;
++    }
++#endif
++
+     this->drawDevPath(*devPathPtr, *paint, drawCoverage, customBlitter, doFill);
+ }
+ 
+diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
+index 107566459b..bac5263e47 100644
+--- a/src/core/SkImageFilter.cpp
++++ b/src/core/SkImageFilter.cpp
+@@ -176,6 +176,12 @@ bool SkImageFilter_Base::Common::unflatten(SkReadBuffer& buffer, int expectedCou
+         return false;
+     }
+ 
++#if defined(IS_FUZZING)
++    if (count > 4) {
++        return false;
++    }
++#endif
++
+     SkASSERT(fInputs.empty());
+     for (int i = 0; i < count; i++) {
+         fInputs.push_back(buffer.readBool() ? buffer.readImageFilter() : nullptr);
+diff --git a/src/core/SkMallocPixelRef.cpp b/src/core/SkMallocPixelRef.cpp
+index d998029a2b..8807c1fc4d 100644
+--- a/src/core/SkMallocPixelRef.cpp
++++ b/src/core/SkMallocPixelRef.cpp
+@@ -37,6 +37,11 @@ sk_sp<SkPixelRef> SkMallocPixelRef::MakeAllocate(const SkImageInfo& info, size_t
+             return nullptr;
+         }
+     }
++#if defined(IS_FUZZING)
++    if (size > 100000) {
++        return nullptr;
++    }
++#endif
+     void* addr = sk_calloc_canfail(size);
+     if (nullptr == addr) {
+         return nullptr;
+diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp
+index 573fe3cabb..cae96b00cc 100644
+--- a/src/core/SkMaskFilter.cpp
++++ b/src/core/SkMaskFilter.cpp
+@@ -262,6 +262,11 @@ bool SkMaskFilterBase::filterPath(const SkPath& devPath, const SkMatrix& matrix,
+ 
+     SkMask  srcM, dstM;
+ 
++#if defined(IS_FUZZING)
++    if (devPath.countVerbs() > 1000 || devPath.countPoints() > 1000) {
++        return false;
++    }
++#endif
+     if (!SkDraw::DrawToMask(devPath, &clip.getBounds(), this, &matrix, &srcM,
+                             SkMask::kComputeBoundsAndRenderImage_CreateMode,
+                             style)) {
+diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
+index f294dbe4a0..12100e1624 100644
+--- a/src/core/SkPaint.cpp
++++ b/src/core/SkPaint.cpp
+@@ -449,6 +449,13 @@ bool SkPaint::getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect
+ 
+     SkStrokeRec rec(*this, resScale);
+ 
++#if defined(IS_FUZZING)
++    // Prevent lines with small widths from timing out.
++    if (rec.getStyle() == SkStrokeRec::Style::kStroke_Style && rec.getWidth() < 0.001) {
++        return false;
++    }
++#endif
++
+     const SkPath* srcPtr = &src;
+     SkPath tmpPath;
+ 
+diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
+index 5679a9d182..104523a6af 100644
+--- a/src/core/SkPath.cpp
++++ b/src/core/SkPath.cpp
+@@ -3120,7 +3120,11 @@ void SkPathPriv::CreateDrawArcPath(SkPath* path, const SkRect& oval, SkScalar st
+                                    SkScalar sweepAngle, bool useCenter, bool isFillNoPathEffect) {
+     SkASSERT(!oval.isEmpty());
+     SkASSERT(sweepAngle);
+-
++#if defined(IS_FUZZING)
++    if (sweepAngle > 3600.0f || sweepAngle < 3600.0f) {
++        return;
++    }
++#endif
+     path->reset();
+     path->setIsVolatile(true);
+     path->setFillType(SkPathFillType::kWinding);
+diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
+index ff78b74a34..ce846799a4 100644
+--- a/src/core/SkReadBuffer.cpp
++++ b/src/core/SkReadBuffer.cpp
+@@ -277,7 +277,12 @@ sk_sp<SkData> SkReadBuffer::readByteArrayAsData() {
+ uint32_t SkReadBuffer::getArrayCount() {
+     const size_t inc = sizeof(uint32_t);
+     fError = fError || !IsPtrAlign4(fReader.peek()) || !fReader.isAvailable(inc);
++#if defined(IS_FUZZING)
++    uint32_t retVal = fError ? 0 : *(uint32_t*)fReader.peek();
++    return retVal < 1000 ? retVal: 1000;
++#else
+     return fError ? 0 : *(uint32_t*)fReader.peek();
++#endif
+ }
+ 
+ /*  Format:
+diff --git a/src/core/SkScan_Hairline.cpp b/src/core/SkScan_Hairline.cpp
+index f9365cecb2..7b77341e06 100644
+--- a/src/core/SkScan_Hairline.cpp
++++ b/src/core/SkScan_Hairline.cpp
+@@ -121,7 +121,11 @@ void SkScan::HairLineRgn(const SkPoint array[], int arrayCount, const SkRegion*
+             if (ix0 == ix1) {// too short to draw
+                 continue;
+             }
+-
++#if defined(IS_FUZZING)
++            if ((ix1 - ix0) > 100000 || (ix1 - ix0) < 0) {
++                continue; // too big to draw
++            }
++#endif
+             SkFixed slope = SkFixedDiv(dy, dx);
+             SkFixed startY = SkFDot6ToFixed(y0) + (slope * ((32 - x0) & 63) >> 6);
+ 
+@@ -137,7 +141,11 @@ void SkScan::HairLineRgn(const SkPoint array[], int arrayCount, const SkRegion*
+             if (iy0 == iy1) { // too short to draw
+                 continue;
+             }
+-
++#if defined(IS_FUZZING)
++            if ((iy1 - iy0) > 100000 || (iy1 - iy0) < 0) {
++                continue; // too big to draw
++            }
++#endif
+             SkFixed slope = SkFixedDiv(dx, dy);
+             SkFixed startX = SkFDot6ToFixed(x0) + (slope * ((32 - y0) & 63) >> 6);
+ 
+diff --git a/src/effects/Sk1DPathEffect.cpp b/src/effects/Sk1DPathEffect.cpp
+index 360179d663..04df451f2a 100644
+--- a/src/effects/Sk1DPathEffect.cpp
++++ b/src/effects/Sk1DPathEffect.cpp
+@@ -19,6 +19,11 @@
+ bool Sk1DPathEffect::onFilterPath(SkPath* dst, const SkPath& src,
+                                   SkStrokeRec*, const SkRect*) const {
+     SkPathMeasure   meas(src, false);
++#if defined(IS_FUZZING)
++    if (meas.getLength() < 0 || meas.getLength() > 100) {
++        return false;
++    }
++#endif
+     do {
+         int governor = MAX_REASONABLE_ITERATIONS;
+         SkScalar    length = meas.getLength();
+diff --git a/src/effects/Sk2DPathEffect.cpp b/src/effects/Sk2DPathEffect.cpp
+index fa19bb96b8..005daff13b 100644
+--- a/src/effects/Sk2DPathEffect.cpp
++++ b/src/effects/Sk2DPathEffect.cpp
+@@ -51,6 +51,11 @@ void Sk2DPathEffect::nextSpan(int x, int y, int count, SkPath* path) const {
+     if (!fMatrixIsInvertible) {
+         return;
+     }
++#if defined(IS_FUZZING)
++    if (count > 100) {
++        return;
++    }
++#endif
+ 
+     const SkMatrix& mat = this->getMatrix();
+     SkPoint src, dst;
+diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
+index 913d851c04..bd4ea876c0 100644
+--- a/src/effects/SkDashPathEffect.cpp
++++ b/src/effects/SkDashPathEffect.cpp
+@@ -381,6 +381,12 @@ sk_sp<SkFlattenable> SkDashImpl::CreateProc(SkReadBuffer& buffer) {
+         return nullptr;
+     }
+ 
++#if defined(IS_FUZZING)
++    // TODO(kjlubick) Can this be removed now that we have the check above?
++    if (count > 20) {
++        return nullptr;
++    }
++#endif
+     SkAutoSTArray<32, SkScalar> intervals(count);
+     if (buffer.readScalarArray(intervals.get(), count)) {
+         return SkDashPathEffect::Make(intervals.get(), SkToInt(count), phase);
+diff --git a/src/effects/SkDiscretePathEffect.cpp b/src/effects/SkDiscretePathEffect.cpp
+index 93ea43fa29..69527725a6 100644
+--- a/src/effects/SkDiscretePathEffect.cpp
++++ b/src/effects/SkDiscretePathEffect.cpp
+@@ -97,6 +97,11 @@ bool SkDiscretePathEffect::onFilterPath(SkPath* dst, const SkPath& src,
+ 
+     do {
+         SkScalar    length = meas.getLength();
++#if defined(IS_FUZZING)
++        if (length > 1000) {
++            return false;
++        }
++#endif
+ 
+         if (fSegLength * (2 + doFill) > length) {
+             meas.getSegment(0, length, dst, true);  // to short for us to mangle
+diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp
+index 42592211a9..3b46f632cf 100644
+--- a/src/effects/SkLayerDrawLooper.cpp
++++ b/src/effects/SkLayerDrawLooper.cpp
+@@ -213,6 +213,11 @@ void SkLayerDrawLooper::flatten(SkWriteBuffer& buffer) const {
+ sk_sp<SkFlattenable> SkLayerDrawLooper::CreateProc(SkReadBuffer& buffer) {
+     int count = buffer.readInt();
+ 
++#if defined(IS_FUZZING)
++    if (count > 100) {
++        count = 100;
++    }
++#endif
+     Builder builder;
+     for (int i = 0; i < count; i++) {
+         LayerInfo info;
+diff --git a/src/ports/SkDebug_stdio.cpp b/src/ports/SkDebug_stdio.cpp
+index 1bba63cc0a..e569514902 100644
+--- a/src/ports/SkDebug_stdio.cpp
++++ b/src/ports/SkDebug_stdio.cpp
+@@ -12,9 +12,13 @@
+ #include <stdio.h>
+ 
+ void SkDebugf(const char format[], ...) {
++#if !defined(IS_FUZZING_WITH_LIBFUZZER)
+     va_list args;
+     va_start(args, format);
+     vfprintf(stderr, format, args);
+     va_end(args);
++#else
++    (void) format;
++#endif
+ }
+ #endif//!defined(SK_BUILD_FOR_WIN) && !defined(SK_BUILD_FOR_ANDROID)
diff --git a/projects/skia/sksl.options b/projects/skia/sksl.options
new file mode 100644
index 0000000..648edd4
--- /dev/null
+++ b/projects/skia/sksl.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 3000
\ No newline at end of file
diff --git a/projects/skia/textblob_deserialize.options b/projects/skia/textblob_deserialize.options
new file mode 100644
index 0000000..0090e8b
--- /dev/null
+++ b/projects/skia/textblob_deserialize.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 1024
\ No newline at end of file
diff --git a/projects/sleuthkit/Dockerfile b/projects/sleuthkit/Dockerfile
deleted file mode 100644
index cf04b56..0000000
--- a/projects/sleuthkit/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/sleuthkit/sleuthkit sleuthkit
-WORKDIR sleuthkit
-COPY build.sh sleuthkit_mem_img.h *_fuzzer.cc $SRC/
diff --git a/projects/sleuthkit/build.sh b/projects/sleuthkit/build.sh
deleted file mode 100755
index 7ed222a..0000000
--- a/projects/sleuthkit/build.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-export CFLAGS="$CFLAGS -Wno-error=non-c-typedef-for-linkage"
-export CXXFLAGS="$CXXFLAGS -Wno-error=non-c-typedef-for-linkage"
-
-./bootstrap
-./configure --enable-static --disable-shared --disable-java
-make -j$(nproc)
-
-declare -A TSK_FS_TYPES=(
-  ["ext"]="TSK_FS_TYPE_EXT_DETECT"
-  ["fat"]="TSK_FS_TYPE_FAT_DETECT"
-  ["hfs"]="TSK_FS_TYPE_HFS"
-  ["ntfs"]="TSK_FS_TYPE_NTFS"
-  ["iso9660"]="TSK_FS_TYPE_ISO9660"
-)
-
-declare -A TSK_VS_TYPES=(
-  ["dos"]="TSK_VS_TYPE_DOS"
-  ["gpt"]="TSK_VS_TYPE_GPT"
-  ["mac"]="TSK_VS_TYPE_MAC"
-  ["sun"]="TSK_VS_TYPE_SUN"
-)
-
-for type in ${!TSK_FS_TYPES[@]}; do
-  $CXX $CXXFLAGS -std=c++11 -I.. -I. -Itsk -DFSTYPE=${TSK_FS_TYPES[$type]} \
-      $SRC/sleuthkit_fls_fuzzer.cc -o $OUT/sleuthkit_fls_${type}_fuzzer \
-      $LIB_FUZZING_ENGINE $SRC/sleuthkit/tsk/.libs/libtsk.a
-done
-
-for type in ${!TSK_VS_TYPES[@]}; do
-  $CXX $CXXFLAGS -std=c++11 -I.. -I. -Itsk -DVSTYPE=${TSK_VS_TYPES[$type]} \
-      $SRC/sleuthkit_mmls_fuzzer.cc -o $OUT/sleuthkit_mmls_${type}_fuzzer \
-      $LIB_FUZZING_ENGINE $SRC/sleuthkit/tsk/.libs/libtsk.a
-done
diff --git a/projects/sleuthkit/project.yaml b/projects/sleuthkit/project.yaml
deleted file mode 100644
index 3e1295b..0000000
--- a/projects/sleuthkit/project.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-homepage: "https://sleuthkit.org"
-language: c++
-primary_contact: "carrier@sleuthkit.org"
-main_repo: 'https://github.com/sleuthkit/sleuthkit'
diff --git a/projects/sleuthkit/sleuthkit_fls_fuzzer.cc b/projects/sleuthkit/sleuthkit_fls_fuzzer.cc
deleted file mode 100644
index 83618dd..0000000
--- a/projects/sleuthkit/sleuthkit_fls_fuzzer.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "sleuthkit/tsk/tsk_tools_i.h"
-#include "sleuthkit_mem_img.h"
-
-#ifndef FSTYPE
-#error Define FSTYPE as a valid value of TSK_FS_TYPE_ENUM.
-#endif
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  TSK_IMG_INFO *img;
-  TSK_FS_INFO *fs;
-
-  img = mem_open(data, size);
-  if (img == nullptr)
-    return 0;
-
-  fs = tsk_fs_open_img(img, 0, FSTYPE);
-  if (fs != nullptr) {
-    tsk_fs_fls(fs, TSK_FS_FLS_FULL, fs->root_inum, TSK_FS_DIR_WALK_FLAG_RECURSE,
-               nullptr, 0);
-
-    fs->close(fs);
-  }
-
-  img->close(img);
-  return 0;
-}
diff --git a/projects/sleuthkit/sleuthkit_mem_img.h b/projects/sleuthkit/sleuthkit_mem_img.h
deleted file mode 100644
index e6bf3b5..0000000
--- a/projects/sleuthkit/sleuthkit_mem_img.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef MEM_IMG_H
-#define MEM_IMG_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "sleuthkit/tsk/tsk_tools_i.h"
-
-typedef struct {
-  TSK_IMG_INFO img_info;
-  const uint8_t *data;
-  size_t size;
-} IMG_MEM_INFO;
-
-static ssize_t mem_read(TSK_IMG_INFO *img_info, TSK_OFF_T offset, char *buf,
-                        size_t len) {
-  IMG_MEM_INFO *mem_info = reinterpret_cast<IMG_MEM_INFO *>(img_info);
-  // Bounds-checking exists in the real drivers.
-  if (offset > mem_info->size) {
-    return -1;
-  }
-  ssize_t read_len = len;
-  if (offset + len > mem_info->size) {
-    read_len = mem_info->size - offset;
-  }
-  if (memcpy(buf, mem_info->data + offset, read_len) == nullptr) {
-    return -1;
-  } else {
-    return read_len;
-  }
-}
-
-static void mem_close(TSK_IMG_INFO *img_info) {
-  IMG_MEM_INFO *mem_info = reinterpret_cast<IMG_MEM_INFO *>(img_info);
-  tsk_deinit_lock(&(img_info->cache_lock));
-  free(mem_info);
-}
-
-static void mem_imgstat(TSK_IMG_INFO *img_info, FILE *hFile) {}
-
-TSK_IMG_INFO *mem_open(const uint8_t *data, size_t size) {
-  IMG_MEM_INFO *inmemory_img =
-      reinterpret_cast<IMG_MEM_INFO *>(malloc(sizeof(IMG_MEM_INFO)));
-  TSK_IMG_INFO *img;
-  if (inmemory_img == nullptr) {
-    return nullptr;
-  }
-  img = reinterpret_cast<TSK_IMG_INFO *>(inmemory_img);
-  img->itype = TSK_IMG_TYPE_RAW;
-  img->read = mem_read;
-  img->close = mem_close;
-  img->imgstat = mem_imgstat;
-  img->size = size;
-  img->sector_size = 512;
-  tsk_init_lock(&(img->cache_lock));
-  inmemory_img->data = data;
-  inmemory_img->size = size;
-  return img;
-}
-
-#endif // # MEM_IMG_H
diff --git a/projects/sleuthkit/sleuthkit_mmls_fuzzer.cc b/projects/sleuthkit/sleuthkit_mmls_fuzzer.cc
deleted file mode 100644
index bd2b8db..0000000
--- a/projects/sleuthkit/sleuthkit_mmls_fuzzer.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "sleuthkit/tsk/tsk_tools_i.h"
-#include "sleuthkit_mem_img.h"
-
-#ifndef VSTYPE
-#error Define VSTYPE as a valid value of TSK_VS_TYPE_ENUM.
-#endif
-
-static TSK_WALK_RET_ENUM part_act(TSK_VS_INFO *vs, const TSK_VS_PART_INFO *part,
-                                  void *ptr) {
-  return TSK_WALK_CONT;
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  TSK_IMG_INFO *img;
-  TSK_VS_INFO *vs;
-
-  img = mem_open(data, size);
-  if (img == nullptr)
-    return 0;
-
-  vs = tsk_vs_open(img, 0, VSTYPE);
-  if (vs != nullptr) {
-    tsk_vs_part_walk(vs, 0, vs->part_count - 1, TSK_VS_PART_FLAG_ALL, part_act,
-                     nullptr);
-
-    tsk_vs_close(vs);
-  }
-
-  img->close(img);
-  return 0;
-}
diff --git a/projects/snappy/Dockerfile b/projects/snappy/Dockerfile
deleted file mode 100644
index 45e8e30..0000000
--- a/projects/snappy/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool gettext pkg-config build-essential
-RUN git clone --recurse-submodules https://github.com/google/snappy
-
-WORKDIR $SRC/
-COPY build.sh $SRC/
diff --git a/projects/snappy/build.sh b/projects/snappy/build.sh
deleted file mode 100755
index 44c059e..0000000
--- a/projects/snappy/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/snappy
-mkdir -p build && cd build
-cmake -DSNAPPY_FUZZING_BUILD=ON -DSNAPPY_BUILD_TESTS=0 \
-    -DSNAPPY_BUILD_BENCHMARKS=0 ../ && cmake --build .
-
-cp *_fuzzer $OUT/
diff --git a/projects/snappy/project.yaml b/projects/snappy/project.yaml
deleted file mode 100644
index 6e5338a..0000000
--- a/projects/snappy/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/google/snappy"
-language: c++
-primary_contact: "costan@google.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-sanitizers:
-  - address
-main_repo: 'https://github.com/google/snappy'
diff --git a/projects/solidity/Dockerfile b/projects/solidity/Dockerfile
index c59136c..9bf5413 100644
--- a/projects/solidity/Dockerfile
+++ b/projects/solidity/Dockerfile
@@ -16,30 +16,32 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 RUN apt-get update && apt-get install -y make autoconf automake libtool \
-    build-essential libbz2-dev ninja-build zlib1g-dev wget python python-dev \
-    liblzma-dev uuid-dev pkg-config openjdk-8-jdk unzip mlton
+    build-essential libbz2-dev ninja-build zlib1g-dev wget python python-dev
+# Install cmake 3.14 (minimum requirement is cmake 3.10)
+RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh; \
+    chmod +x cmake-3.14.5-Linux-x86_64.sh; \
+    ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/usr"
 
-RUN git clone --recursive -b breaking https://github.com/ethereum/solidity.git solidity
+RUN git clone --recursive https://github.com/ethereum/solidity.git solidity
 RUN git clone --depth 1 https://github.com/ethereum/solidity-fuzzing-corpus.git
+RUN git clone --recursive -b boost-1.69.0 https://github.com/boostorg/boost.git \
+    boost
 RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
 RUN git clone --branch="v0.4.0" --recurse-submodules \
     https://github.com/ethereum/evmone.git
+RUN git clone --branch="z3-4.8.7" https://github.com/Z3Prover/z3.git
 
 # Install statically built dependencies in "/usr" directory
 # Install boost
-RUN cd $SRC; \
-    wget -q 'https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.bz2' -O boost.tar.bz2; \
-    test "$(sha256sum boost.tar.bz2)" = "4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402  boost.tar.bz2"; \
-    tar -xf boost.tar.bz2; \
-    rm boost.tar.bz2; \
-    cd boost_1_73_0; \
-    CXXFLAGS="-stdlib=libc++ -pthread" LDFLAGS="-stdlib=libc++" ./bootstrap.sh --with-toolset=clang --prefix=/usr; \
-    ./b2 toolset=clang cxxflags="-stdlib=libc++ -pthread" linkflags="-stdlib=libc++ -pthread" headers; \
-    ./b2 toolset=clang cxxflags="-stdlib=libc++ -pthread" linkflags="-stdlib=libc++ -pthread" \
-        link=static variant=release runtime-link=static \
-        system filesystem unit_test_framework program_options \
-        install -j $(($(nproc)/2)); \
-    rm -rf $SRC/boost_1_73_0
+RUN cd $SRC/boost; \
+    ./bootstrap.sh --with-toolset=clang --prefix=/usr; \
+    ./b2 clean; \
+    ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" \
+    headers; \
+    ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" \
+    link=static variant=release runtime-link=static \
+    system regex filesystem unit_test_framework program_options \
+    install -j $(($(nproc)/2));
 
 # Install libprotobuf-mutator
 RUN mkdir $SRC/LPM; \
@@ -60,30 +62,12 @@
     ninja; \
     ninja install;
 
-# gmp
-RUN cd $SRC; \
-    # Replace system installed libgmp static library
-    # with sanitized version
-    rm -f /usr/lib/x86_64-linux-gnu/libgmp.a; \
-    wget -q 'https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz' -O gmp.tar.xz; \
-    test "$(sha256sum gmp.tar.xz)" = "fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2  gmp.tar.xz"; \
-    tar -xf gmp.tar.xz; \
-    cd gmp-6.2.1; \
-    ./configure --prefix=/usr --enable-shared=no --enable-static=yes; \
-    make -j; \
-    make install; \
-    rm -rf $SRC/gmp-6.2.1; \
-    rm -f $SRC/gmp.tar.xz
-
-# libabicoder
-RUN set -ex; \
-    cd /usr/src; \
-    git clone https://github.com/ekpyron/Yul-Isabelle; \
-    cd Yul-Isabelle; \
-    cd libabicoder; \
-    CXX=clang++ CXXFLAGS="-stdlib=libc++ -pthread" make; \
-    cp libabicoder.a /usr/lib; \
-    cp abicoder.hpp /usr/include; \
-    rm -rf /usr/src/Yul-Isabelle
+# Install Z3
+RUN cd $SRC/z3; \
+    mkdir -p build; \
+    cd build; \
+    LDFLAGS=$CXXFLAGS cmake -DZ3_BUILD_LIBZ3_SHARED=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..; \
+    make libz3 -j; \
+    make install;
 
 COPY build.sh $SRC/
diff --git a/projects/solidity/build.sh b/projects/solidity/build.sh
index ae5844c..8288180 100755
--- a/projects/solidity/build.sh
+++ b/projects/solidity/build.sh
@@ -15,81 +15,34 @@
 #
 ################################################################################
 
-#!/usr/bin/env bash
-set -ex
+# Compile proto C++ bindings
+protoc \
+    --proto_path=$SRC/solidity/test/tools/ossfuzz yulProto.proto \
+    --cpp_out=$SRC/solidity/test/tools/ossfuzz
+protoc \
+    --proto_path=$SRC/solidity/test/tools/ossfuzz abiV2Proto.proto \
+    --cpp_out=$SRC/solidity/test/tools/ossfuzz
 
-ROOTDIR="${SRC}/solidity"
-BUILDDIR="${ROOTDIR}/build"
-mkdir -p "${BUILDDIR}" && mkdir -p "$BUILDDIR/deps"
+# Build solidity
+cd $SRC/solidity
+CXXFLAGS="${CXXFLAGS} -I/usr/local/include/c++/v1"
+mkdir -p build
+cd build
+rm -rf *
 
-ANTLRJAR="${BUILDDIR}/deps/antlr4.8.jar"
-ANTLRJAR_URI="https://www.antlr.org/download/antlr-4.8-complete.jar"
+# Build solidity
+cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/ossfuzz.cmake \
+      -DCMAKE_BUILD_TYPE=Release \
+      $SRC/solidity
+make ossfuzz ossfuzz_proto ossfuzz_abiv2 -j $(nproc)
 
-download_antlr4()
-{
-  if [[ ! -e "${ANTLRJAR}" ]]
-  then
-    wget -O "${ANTLRJAR}" "${ANTLRJAR_URI}"
-  fi
-}
-
-generate_protobuf_bindings()
-{
-  cd "${ROOTDIR}"/test/tools/ossfuzz
-  # Generate protobuf C++ bindings
-  for protoName in yul abiV2 sol;
-  do
-    protoc "${protoName}"Proto.proto --cpp_out .
-  done
-}
-
-generate_antlr4_bindings()
-{
-  cd "${ROOTDIR}"
-  # Replace boolean with bool to suit c++ syntax
-  sed -i 's/boolean /bool /g' docs/grammar/Solidity.g4
-  # Generate antlr4 visitor/parser/lexer c++ bindings
-  java -jar "${ANTLRJAR}" -Dlanguage=Cpp \
-    -Xexact-output-dir -package solidity::test::fuzzer -o test/tools/ossfuzz \
-    -no-listener -visitor docs/grammar/SolidityLexer.g4 docs/grammar/Solidity.g4
-  # Delete unnecessary autogen files
-  rm -f "${ROOTDIR}"/test/tools/ossfuzz/Solidity*Visitor.cpp \
-    "${ROOTDIR}"/test/tools/ossfuzz/Solidity*.interp \
-    "${ROOTDIR}"/test/tools/ossfuzz/Solidity*.tokens
-}
-
-build_fuzzers()
-{
-  cd "${BUILDDIR}"
-  CXXFLAGS="${CXXFLAGS} -I/usr/local/include/c++/v1"
-  cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/ossfuzz.cmake \
-        -DCMAKE_BUILD_TYPE=Release \
-        "${ROOTDIR}"
-  make ossfuzz ossfuzz_proto ossfuzz_abiv2 -j $(nproc)
-}
-
-copy_fuzzers_and_config()
-{
-  cp "${BUILDDIR}"/test/tools/ossfuzz/*_ossfuzz "${OUT}"
-  cp "${ROOTDIR}"/test/tools/ossfuzz/config/*.options "${OUT}"
-  cp "${ROOTDIR}"/test/tools/ossfuzz/config/*.dict "${OUT}"
-}
-
-update_corpus()
-{
-  rm -f "${OUT}"/*.zip
-  cd "${SRC}"/solidity-fuzzing-corpus
-  git pull origin master
-  for dir in "${SRC}"/solidity-fuzzing-corpus/*;
-  do
-    name=$(basename $dir)
-    zip -rq "${OUT}"/$name $dir
-  done
-}
-
-download_antlr4
-generate_protobuf_bindings
-generate_antlr4_bindings
-build_fuzzers
-copy_fuzzers_and_config
-update_corpus
\ No newline at end of file
+# Copy fuzzer binary, seed corpus, fuzzer options, and dictionary
+cp test/tools/ossfuzz/*_ossfuzz $OUT/
+rm -f $OUT/*.zip
+for dir in $SRC/solidity-fuzzing-corpus/*;
+do
+	name=$(basename $dir)
+	zip -rjq $OUT/$name $dir
+done
+cp $SRC/solidity/test/tools/ossfuzz/config/*.options $OUT/
+cp $SRC/solidity/test/tools/ossfuzz/config/*.dict $OUT/
diff --git a/projects/solidity/project.yaml b/projects/solidity/project.yaml
index 248cfd6..10e0d31 100644
--- a/projects/solidity/project.yaml
+++ b/projects/solidity/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://solidity.readthedocs.io"
-language: c++
 primary_contact: "bhargava.shastry@ethereum.org"
 auto_ccs:
   - "axic@ethereum.org"
   - "christian@ethereum.org"
   - "martin.swende@ethereum.org"
-main_repo: 'https://github.com/ethereum/solidity.git'
diff --git a/projects/sound-open-firmware/Dockerfile b/projects/sound-open-firmware/Dockerfile
deleted file mode 100644
index 29bf7cd..0000000
--- a/projects/sound-open-firmware/Dockerfile
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get -y update && \
-	    apt-get install -y \
-	    	autoconf \
-		bison \
-		build-essential \
-		flex \
-		gawk \
-		gettext \
-		git \
-		gperf \
-		help2man \
-		libncurses5-dev \
-		libssl-dev \
-		libtool \
-		libtool-bin \
-		pkg-config \
-		software-properties-common \
-		texinfo \
-		udev \
-		cmake \
-		libglib2.0-dev
-
-ARG CLONE_DEFAULTS="--depth 5"
-
-# Use ToT alsa utils for the latest topology patches.
-RUN cd /tmp && \
-git clone $CLONE_DEFAULTS https://github.com/thesofproject/alsa-lib.git && \
-git clone $CLONE_DEFAULTS https://github.com/thesofproject/alsa-utils.git && \
-cd /tmp/alsa-lib && ./gitcompile &&  make install && \
-cd /tmp/alsa-utils && ./gitcompile &&  make install
-
-ARG GITHUB_SOF=https://github.com/thesofproject
-
-RUN cd $SRC && git clone $CLONE_DEFAULTS $GITHUB_SOF/sof
-WORKDIR sof
-COPY build.sh $SRC/
diff --git a/projects/sound-open-firmware/build.sh b/projects/sound-open-firmware/build.sh
deleted file mode 100644
index 51cf278..0000000
--- a/projects/sound-open-firmware/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash -eux
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-cd $SRC/sof/tools/oss-fuzz
-cp corpus/* $OUT/
-rm -rf build_oss_fuzz
-mkdir -p build_oss_fuzz
-cd build_oss_fuzz
-
-export VERBOSE=1
-cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_LINKER=$CXX -DCMAKE_C_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" ..
-make install -j $(nproc)
diff --git a/projects/sound-open-firmware/project.yaml b/projects/sound-open-firmware/project.yaml
deleted file mode 100644
index 4065def..0000000
--- a/projects/sound-open-firmware/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://thesofproject.github.io"
-primary_contact: "cujomalainey@chromium.org"
-language: c
-auto_ccs:
-  - "ranjani.sridharan@intel.corp-partner.google.com"
-main_repo: "https://github.com/thesofproject/sof"
diff --git a/projects/spdlog/Dockerfile b/projects/spdlog/Dockerfile
index 9adf61f..6c2c73d 100644
--- a/projects/spdlog/Dockerfile
+++ b/projects/spdlog/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2020 Google Inc.
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,10 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER gmelman1@gmail.com
 
 RUN apt-get update && apt-get install --yes cmake
+
 RUN git clone --depth 1 https://github.com/gabime/spdlog.git
-RUN zip spdlog_fuzzer_seed_corpus.zip spdlog/example/*
 WORKDIR spdlog
-COPY build.sh spdlog_fuzzer.dict $SRC/
-COPY fuzz/* $SRC/
+COPY build.sh log_fuzzer.cc $SRC/
diff --git a/projects/spdlog/build.sh b/projects/spdlog/build.sh
index 60c9a97..5e9087d 100755
--- a/projects/spdlog/build.sh
+++ b/projects/spdlog/build.sh
@@ -1,5 +1,5 @@
 #!/bin/bash -eu
-# Copyright 2020 Google Inc.
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,6 +25,3 @@
     $f $LIB_FUZZING_ENGINE ./libspdlog.a \
     -o $OUT/$b
 done
-
-cp $SRC/spdlog_fuzzer_seed_corpus.zip $OUT/
-cp $SRC/*.dict $SRC/*.options $OUT/
diff --git a/projects/spdlog/fuzz/backtrace_fuzzer.cc b/projects/spdlog/fuzz/backtrace_fuzzer.cc
deleted file mode 100644
index 2964812..0000000
--- a/projects/spdlog/fuzz/backtrace_fuzzer.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "spdlog/spdlog.h"
-#include "spdlog/sinks/basic_file_sink.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  static std::shared_ptr<spdlog::logger> my_logger;
-  if (!my_logger.get()) {
-    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
-    spdlog::set_default_logger(my_logger);
-  }
-
-  if (size == 0) {
-    return 0;
-  }
-
-  FuzzedDataProvider stream(data, size);
-
-  const uint16_t size_arg = stream.ConsumeIntegral<uint16_t>();
-
-  spdlog::enable_backtrace(size_arg);
-  for(int i=0; i<size_arg; i++){
-    spdlog::debug(stream.ConsumeRandomLengthString(size));
-  }
-  spdlog::dump_backtrace();
-  return 0;
-}
diff --git a/projects/spdlog/fuzz/format_fuzzer.cc b/projects/spdlog/fuzz/format_fuzzer.cc
deleted file mode 100644
index 809fe40..0000000
--- a/projects/spdlog/fuzz/format_fuzzer.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "spdlog/spdlog.h"
-#include "spdlog/sinks/basic_file_sink.h"
-#include "spdlog/pattern_formatter.h"
-
-
-std::string my_formatter_txt = "custom-flag";
-
-class my_formatter_flag : public spdlog::custom_flag_formatter
-{
-  
-public:
-    void format(const spdlog::details::log_msg &, const std::tm &, spdlog::memory_buf_t &dest) override
-    {
-        dest.append(my_formatter_txt.data(), my_formatter_txt.data() + my_formatter_txt.size());
-    }
-
-    std::unique_ptr<custom_flag_formatter> clone() const override
-    {
-        return spdlog::details::make_unique<my_formatter_flag>();
-    }
-};
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  if (size == 0) {
-    return 0;
-  }
-
-  static std::shared_ptr<spdlog::logger> my_logger;
-  if (!my_logger.get()) {
-    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
-    spdlog::set_default_logger(my_logger);
-  }
-
-  FuzzedDataProvider stream(data, size);
-
-  const unsigned long size_arg = stream.ConsumeIntegral<unsigned long>();
-  const unsigned long  int_arg = stream.ConsumeIntegral<unsigned long>();
-  const char flag = (char)(stream.ConsumeIntegral<char>());
-  const std::string pattern = stream.ConsumeRandomLengthString();
-  my_formatter_txt = stream.ConsumeRandomLengthString();
-  const std::string string_arg = stream.ConsumeRandomLengthString();
-  const std::string format_string = stream.ConsumeRemainingBytesAsString();
-
-  using spdlog::details::make_unique;
-  auto formatter = make_unique<spdlog::pattern_formatter>();
-  formatter->add_flag<my_formatter_flag>(flag).set_pattern(pattern);
-  spdlog::set_formatter(std::move(formatter));
-  
-  spdlog::info(format_string.c_str(), size_arg, int_arg, string_arg);
-
-  return 0;
-}
diff --git a/projects/spdlog/fuzz/format_fuzzer.options b/projects/spdlog/fuzz/format_fuzzer.options
deleted file mode 100644
index a1728af..0000000
--- a/projects/spdlog/fuzz/format_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = spdlog_fuzzer.dict
\ No newline at end of file
diff --git a/projects/spdlog/fuzz/levels_fuzzer.cc b/projects/spdlog/fuzz/levels_fuzzer.cc
deleted file mode 100644
index b1bac03..0000000
--- a/projects/spdlog/fuzz/levels_fuzzer.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "spdlog/spdlog.h"
-#include "spdlog/sinks/basic_file_sink.h"
-#include "spdlog/cfg/argv.h"
-#include "spdlog/cfg/env.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  if (size == 0) {
-    return 0;
-  }
-
-  static std::shared_ptr<spdlog::logger> my_logger;
-  if (!my_logger.get()) {
-    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
-    spdlog::set_default_logger(my_logger);
-  }
-
-  FuzzedDataProvider stream(data, size);
-  
-  std::vector<std::string> strings;
-  const unsigned char strsize = stream.ConsumeIntegral<unsigned char>();
-  for(unsigned char i=0; i<strsize; i++){
-    strings.push_back(stream.ConsumeRandomLengthString());
-  }
-  std::vector<char*> argvv; argvv.reserve(strsize);
-  for(unsigned char i=0; i< strsize; ++i){
-    argvv.push_back(const_cast<char*>(strings[i].c_str()));
-  }
-  
-  if(strsize==0) return 0;
-  
-  const char** argv = (const char**) &argvv[0];
-  spdlog::cfg::load_env_levels();
-  spdlog::cfg::load_argv_levels(strsize, argv);
-  spdlog::info(stream.ConsumeRemainingBytesAsString());
-  
-  return 0;
-}
diff --git a/projects/spdlog/fuzz/levels_fuzzer.options b/projects/spdlog/fuzz/levels_fuzzer.options
deleted file mode 100644
index a1728af..0000000
--- a/projects/spdlog/fuzz/levels_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = spdlog_fuzzer.dict
\ No newline at end of file
diff --git a/projects/spdlog/fuzz/log_fuzzer.cc b/projects/spdlog/fuzz/log_fuzzer.cc
deleted file mode 100644
index e6d299d..0000000
--- a/projects/spdlog/fuzz/log_fuzzer.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "spdlog/spdlog.h"
-#include "spdlog/sinks/basic_file_sink.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  static std::shared_ptr<spdlog::logger> my_logger;
-  if (!my_logger.get()) {
-    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
-    spdlog::set_default_logger(my_logger);
-  }
-
-  if (size == 0) {
-    return 0;
-  }
-
-
-  FuzzedDataProvider stream(data, size);
-
-  const unsigned long size_arg = stream.ConsumeIntegral<unsigned long>();
-  const unsigned long int_arg = stream.ConsumeIntegral<unsigned long>();
-  const std::string string_arg = stream.ConsumeRandomLengthString(size);
-  const std::string format_string = stream.ConsumeRemainingBytesAsString();
-
-  spdlog::info(format_string.c_str(), size_arg, int_arg, string_arg);
-  spdlog::trace(format_string.c_str(), size_arg, int_arg, string_arg);
-  spdlog::debug(format_string.c_str(), size_arg, int_arg, string_arg);
-  spdlog::error(format_string.c_str(), size_arg, int_arg, string_arg);
-  spdlog::warn(format_string.c_str(), size_arg, int_arg, string_arg);
-  spdlog::critical(format_string.c_str(), size_arg, int_arg, string_arg);
-
-  SPDLOG_INFO(format_string.c_str(), size_arg, int_arg, string_arg);
-  SPDLOG_TRACE(format_string.c_str(), size_arg, int_arg, string_arg);
-  SPDLOG_DEBUG(format_string.c_str(), size_arg, int_arg, string_arg);
-  SPDLOG_ERROR(format_string.c_str(), size_arg, int_arg, string_arg);
-  SPDLOG_WARN(format_string.c_str(), size_arg, int_arg, string_arg);
-  SPDLOG_CRITICAL(format_string.c_str(), size_arg, int_arg, string_arg);
-
-  return 0;
-}
diff --git a/projects/spdlog/fuzz/log_fuzzer.options b/projects/spdlog/fuzz/log_fuzzer.options
deleted file mode 100644
index a1728af..0000000
--- a/projects/spdlog/fuzz/log_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = spdlog_fuzzer.dict
\ No newline at end of file
diff --git a/projects/spdlog/fuzz/pattern_fuzzer.cc b/projects/spdlog/fuzz/pattern_fuzzer.cc
deleted file mode 100644
index 0a2d73b..0000000
--- a/projects/spdlog/fuzz/pattern_fuzzer.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "spdlog/spdlog.h"
-#include "spdlog/sinks/basic_file_sink.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  static std::shared_ptr<spdlog::logger> my_logger;
-  if (!my_logger.get()) {
-    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
-    spdlog::set_default_logger(my_logger);
-  }
-
-  if (size == 0) {
-    return 0;
-  }
-
-  FuzzedDataProvider stream(data, size);
-  const std::string str = stream.ConsumeRemainingBytesAsString();
-  spdlog::set_pattern(str);
-
-  return 0;
-}
diff --git a/projects/spdlog/fuzz/pattern_fuzzer.options b/projects/spdlog/fuzz/pattern_fuzzer.options
deleted file mode 100644
index a1728af..0000000
--- a/projects/spdlog/fuzz/pattern_fuzzer.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = spdlog_fuzzer.dict
\ No newline at end of file
diff --git a/projects/spdlog/log_fuzzer.cc b/projects/spdlog/log_fuzzer.cc
new file mode 100644
index 0000000..f512191
--- /dev/null
+++ b/projects/spdlog/log_fuzzer.cc
@@ -0,0 +1,42 @@
+// Copyright 2019 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <cstddef>
+
+#include <fuzzer/FuzzedDataProvider.h>
+
+#include "spdlog/spdlog.h"
+#include "spdlog/sinks/basic_file_sink.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  static std::shared_ptr<spdlog::logger> my_logger;
+  if (!my_logger.get()) {
+    my_logger = spdlog::basic_logger_mt("basic_logger", "/dev/null");
+    spdlog::set_default_logger(my_logger);
+  }
+
+  if (size == 0) {
+    return 0;
+  }
+
+  FuzzedDataProvider stream(data, size);
+
+  const size_t size_arg = stream.ConsumeIntegral<size_t>();
+  const int int_arg = stream.ConsumeIntegral<int>();
+  const std::string string_arg = stream.ConsumeRandomLengthString(size);
+  const std::string format_string = stream.ConsumeRemainingBytesAsString();
+  spdlog::info(format_string.c_str(), size_arg, int_arg, string_arg);
+
+  return 0;
+}
diff --git a/projects/spdlog/project.yaml b/projects/spdlog/project.yaml
index b2a7b59..5f8c35e 100644
--- a/projects/spdlog/project.yaml
+++ b/projects/spdlog/project.yaml
@@ -1,10 +1,6 @@
-homepage: "https://github.com/gabime/spdlog"
-language: c++
+homepage: "https://github.com/google/zopfli"
 primary_contact: "gmelman1@gmail.com"
-auto_ccs:
-  - "ouyangyunshu@google.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/gabime/spdlog.git'
diff --git a/projects/spdlog/spdlog_fuzzer.dict b/projects/spdlog/spdlog_fuzzer.dict
deleted file mode 100644
index dc7d1eb..0000000
--- a/projects/spdlog/spdlog_fuzzer.dict
+++ /dev/null
@@ -1,20 +0,0 @@
-"{}"
-"{:08d}"
-"{0:d}"
-"{0:x}"
-"{0:o}"
-"{0:b}"
-"{:03.2f}"
-"{1}"
-"{0}"
-"{:<8}"
-"{:<999999999999999999999999}"
-"[%H:%M:%S %z]"
-"[%^%L%$]"
-"[thread %t]"
-"%v"
-"%+"
-"{:X}"
-"{:s}"
-"{:p}"
-"{:n}"
\ No newline at end of file
diff --git a/projects/speex/Dockerfile b/projects/speex/Dockerfile
index f8d8ef6..05a4253 100644
--- a/projects/speex/Dockerfile
+++ b/projects/speex/Dockerfile
@@ -15,8 +15,9 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tmatth@videolan.org
 RUN apt-get update && apt-get install -y make autoconf libtool pkg-config wget
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/ogg.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/speex.git speex
+RUN git clone https://git.xiph.org/ogg.git
+RUN git clone https://git.xiph.org/speex.git speex
 WORKDIR speex
 COPY build.sh $SRC/
diff --git a/projects/speex/project.yaml b/projects/speex/project.yaml
index e083b9f..e89b67c 100644
--- a/projects/speex/project.yaml
+++ b/projects/speex/project.yaml
@@ -1,17 +1,9 @@
 homepage: "https://speex.org/"
-language: c++
 primary_contact: "tmatth@videolan.org"
 auto_ccs:
   - "twsmith@mozilla.com"
   - "le.businessman@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://gitlab.xiph.org/xiph/speex.git'
+  - undefined
diff --git a/projects/spidermonkey-ufi/Dockerfile b/projects/spidermonkey-ufi/Dockerfile
index 25e4d2d..5217c06 100644
--- a/projects/spidermonkey-ufi/Dockerfile
+++ b/projects/spidermonkey-ufi/Dockerfile
@@ -15,16 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER cdiehl@mozilla.com
 RUN apt-get update && apt-get install -y --no-install-recommends \
     autoconf2.13 \
     python \
     libc++1 \
-    libc++abi1 \
-    m4
-
-# This wrapper of cargo seems to interfere with our build system.
-RUN rm -f /usr/local/bin/cargo
-
+    libc++abi1
 RUN git clone --depth=1 https://github.com/mozilla/gecko-dev mozilla-central
 WORKDIR mozilla-central/js/src/
 COPY build.sh target.c $SRC/
diff --git a/projects/spidermonkey-ufi/build.sh b/projects/spidermonkey-ufi/build.sh
index 9f70330..7356ff6 100755
--- a/projects/spidermonkey-ufi/build.sh
+++ b/projects/spidermonkey-ufi/build.sh
@@ -21,16 +21,16 @@
   Wasm
 )
 
-# Install dependencies.
+# Install dependencies. Note that bootstrap installs cargo, which must be added
+# to PATH via source. In a successive run (for a different sanitizer), the
+# cargo installation carries over, but bootstrap fails if cargo is not in PATH.
 export SHELL=/bin/bash
-../../mach --no-interactive bootstrap --application-choice browser
+[[ -f "$HOME/.cargo/env" ]] && source $HOME/.cargo/env
+../../mach bootstrap --no-interactive --application-choice browser
+source $HOME/.cargo/env
 
 autoconf2.13
 
-# Skip patches for now
-rm ../../tools/fuzzing/libfuzzer/patches/*.patch
-touch ../../tools/fuzzing/libfuzzer/patches/dummy.patch
-
 # Update internal libFuzzer.
 (cd ../../tools/fuzzing/libfuzzer && ./clone_libfuzzer.sh HEAD)
 
@@ -38,8 +38,8 @@
 cd build_OPT.OBJ
 
 ../configure \
-    --enable-debug \
-    --enable-optimize="-O2 -gline-tables-only" \
+    --enable-optimize \
+    --disable-shared-js \
     --disable-jemalloc \
     --enable-tests \
     --enable-fuzzing \
@@ -61,3 +61,4 @@
 mkdir -p $OUT/lib
 cp -L /usr/lib/x86_64-linux-gnu/libc++.so.1 $OUT/lib
 cp -L /usr/lib/x86_64-linux-gnu/libc++abi.so.1 $OUT/lib
+
diff --git a/projects/spidermonkey-ufi/project.yaml b/projects/spidermonkey-ufi/project.yaml
index 3dae682..8eb1f0e 100644
--- a/projects/spidermonkey-ufi/project.yaml
+++ b/projects/spidermonkey-ufi/project.yaml
@@ -1,5 +1,4 @@
 homepage: 'https://searchfox.org/mozilla-central/source/js/src/fuzz-tests/README'
-language: c++
 primary_contact: 'choller@mozilla.com'
 fuzzing_engines:
   - libfuzzer
diff --git a/projects/spidermonkey/Dockerfile b/projects/spidermonkey/Dockerfile
index 9c74dce..2581814 100644
--- a/projects/spidermonkey/Dockerfile
+++ b/projects/spidermonkey/Dockerfile
@@ -15,17 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get upgrade -y && apt-get install -y \
+MAINTAINER alex.gaynor@gmail.com
+RUN apt-get update && apt-get install -y \
   autoconf2.13 \
-  libc++1 \
-  libc++abi1 \
-  m4 \
   yasm \
   python
 
-# This wrapper of cargo seems to interfere with our build system.
-RUN rm -f /usr/local/bin/cargo
-
 RUN git clone --depth=1 https://github.com/mozilla/gecko-dev mozilla-central
 WORKDIR mozilla-central/js/src/
 COPY build.sh $SRC/
diff --git a/projects/spidermonkey/build.sh b/projects/spidermonkey/build.sh
index bf2e03b..8be2176 100755
--- a/projects/spidermonkey/build.sh
+++ b/projects/spidermonkey/build.sh
@@ -17,7 +17,10 @@
 
 # Install dependencies.
 export SHELL=/bin/bash
-../../mach --no-interactive bootstrap --application-choice browser
+../../mach bootstrap --no-interactive --application-choice browser
+
+# Set environment for rustc.
+source $HOME/.cargo/env
 
 autoconf2.13
 
@@ -27,7 +30,8 @@
 # Temporarily disable cranelift (see bug 1497570)
 ../configure \
     --enable-debug \
-    --enable-optimize="-O2 -gline-tables-only" \
+    --enable-optimize \
+    --disable-shared-js \
     --disable-jemalloc \
     --disable-tests \
     --enable-address-sanitizer \
@@ -36,8 +40,3 @@
 make "-j$(nproc)"
 
 cp dist/bin/js $OUT
-
-# Copy libraries.
-mkdir -p $OUT/lib
-cp -L /usr/lib/x86_64-linux-gnu/libc++.so.1 $OUT/lib
-cp -L /usr/lib/x86_64-linux-gnu/libc++abi.so.1 $OUT/lib
diff --git a/projects/spidermonkey/project.yaml b/projects/spidermonkey/project.yaml
index d7635fb..b17b35c 100644
--- a/projects/spidermonkey/project.yaml
+++ b/projects/spidermonkey/project.yaml
@@ -1,11 +1,8 @@
 homepage: "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
-language: c++
 primary_contact: "choller@mozilla.com"
 auto_ccs:
   - sledru@mozilla.com
-  - twsmith@mozilla.com
 fuzzing_engines:
   - none
 sanitizers:
   - address
-blackbox: true
diff --git a/projects/spotify-json/Dockerfile b/projects/spotify-json/Dockerfile
deleted file mode 100755
index b39e5f9..0000000
--- a/projects/spotify-json/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/spotify/spotify-json
-
-WORKDIR $SRC/spotify-json
-COPY build.sh $SRC/
diff --git a/projects/spotify-json/build.sh b/projects/spotify-json/build.sh
deleted file mode 100755
index 9d15061..0000000
--- a/projects/spotify-json/build.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mkdir build && cd build
-cmake -DSPOTIFY_JSON_BUILD_TESTS=OFF ../
-make
-
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE ../fuzzers//fuzz_decode.cpp \
-    -I../include -I../vendor/double-conversion \
-    ./libspotify-json.a ./vendor/double-conversion/libdouble-conversion.a  -lpthread -o $OUT/fuzz_decode
diff --git a/projects/spotify-json/project.yaml b/projects/spotify-json/project.yaml
deleted file mode 100755
index 134dd78..0000000
--- a/projects/spotify-json/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://github.com/spotify/spotify-json"
-main_repo: 'https://github.com/spotify/spotify-json'
-primary_contact: "johanl@spotify.com"
-language: c++
-auto_ccs:
-  - "david@adalogics.com"
diff --git a/projects/sqlite3/Dockerfile b/projects/sqlite3/Dockerfile
index cb5a83b..e25694f 100644
--- a/projects/sqlite3/Dockerfile
+++ b/projects/sqlite3/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tanin@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool curl tcl zlib1g-dev
 
 # We won't be able to poll fossil for changes, so this will build
diff --git a/projects/sqlite3/project.yaml b/projects/sqlite3/project.yaml
index 56b1892..4bdb8f2 100644
--- a/projects/sqlite3/project.yaml
+++ b/projects/sqlite3/project.yaml
@@ -1,9 +1,8 @@
 homepage: "https://sqlite.org/"
-language: c++
 primary_contact: "drhsqlite@gmail.com"
 auto_ccs:
   - "sboydps@gmail.com"
-  - "twsmith@mozilla.com"
+  - "cdiehl@mozilla.com"
 sanitizers:
   - address
   - memory
diff --git a/projects/stb/Dockerfile b/projects/stb/Dockerfile
deleted file mode 100644
index d9449ea..0000000
--- a/projects/stb/Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && \
-    apt-get install -y wget tar
-
-
-RUN git clone --depth 1 https://github.com/nothings/stb.git
-
-RUN wget -O $SRC/stb/gif.tar.gz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/imagetestsuite/imagetestsuite-gif-1.00.tar.gz
-RUN wget -O $SRC/stb/jpg.tar.gz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/imagetestsuite/imagetestsuite-jpg-1.00.tar.gz
-RUN wget -O $SRC/stb/bmp.zip http://entropymine.com/jason/bmpsuite/releases/bmpsuite-2.6.zip
-RUN wget -O $SRC/stb/tga.zip https://github.com/richgel999/tga_test_files/archive/master.zip
-
-RUN wget -O $SRC/stb/tests/gif.dict https://raw.githubusercontent.com/mirrorer/afl/master/dictionaries/gif.dict &> /dev/null
-
-WORKDIR stb
-COPY build.sh $SRC/
diff --git a/projects/stb/build.sh b/projects/stb/build.sh
deleted file mode 100644
index e32e0e6..0000000
--- a/projects/stb/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-# Run the OSS-Fuzz script in the project
-$SRC/stb/tests/ossfuzz.sh
diff --git a/projects/stb/project.yaml b/projects/stb/project.yaml
deleted file mode 100644
index bae6779..0000000
--- a/projects/stb/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://github.com/nothings/stb"
-language: c++
-primary_contact: "nothings.org@gmail.com"
-auto_ccs:
-  - "randy440088@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
-sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-main_repo: 'https://github.com/nothings/stb.git'
diff --git a/projects/strongswan/Dockerfile b/projects/strongswan/Dockerfile
index ea003db..cfd1aa7 100644
--- a/projects/strongswan/Dockerfile
+++ b/projects/strongswan/Dockerfile
@@ -15,6 +15,7 @@
 ##############################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER tobias@strongswan.org
 RUN apt-get update && apt-get install -y automake autoconf libtool pkg-config gettext perl python flex bison gperf lcov libgmp3-dev
 RUN git clone --depth 1 https://github.com/strongswan/strongswan.git strongswan
 RUN git clone --depth 1 https://github.com/strongswan/fuzzing-corpora.git strongswan/fuzzing-corpora
diff --git a/projects/strongswan/project.yaml b/projects/strongswan/project.yaml
index 659631a..cf048e0 100644
--- a/projects/strongswan/project.yaml
+++ b/projects/strongswan/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://www.strongswan.org"
-language: c++
 primary_contact: "security@strongswan.org"
 auto_ccs:
   - "tobias@strongswan.org"
   - "andreas.steffen@strongswan.org"
-main_repo: 'https://github.com/strongswan/strongswan.git'
diff --git a/projects/sudoers/Dockerfile b/projects/sudoers/Dockerfile
deleted file mode 100755
index 96977ba..0000000
--- a/projects/sudoers/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone https://github.com/sudo-project/sudo
-
-WORKDIR $SRC/sudo
-COPY build.sh $SRC/
diff --git a/projects/sudoers/build.sh b/projects/sudoers/build.sh
deleted file mode 100755
index 905450c..0000000
--- a/projects/sudoers/build.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Debugging
-env
-
-# Some of the sanitizer flags cause issues with configure tests.
-# Pull them out of CFLAGS and pass them to configure instead.
-if [ $SANITIZER == "coverage" ]; then
-    CFLAGS="`echo \"$CFLAGS\" | sed \"s/ $COVERAGE_FLAGS//\"`"
-    sanitizer_opts="$COVERAGE_FLAGS"
-else
-    CFLAGS="`echo \"$CFLAGS\" | sed \"s/ $SANITIZER_FLAGS//\"`"
-    sanitizer_opts="$SANITIZER_FLAGS"
-fi
-# This is already added by --enable-fuzzer
-CFLAGS="`echo \"$CFLAGS\" | sed \"s/ -fsanitize=fuzzer-no-link//\"`"
-
-# Build sudo with static libs and enable fuzzing targets.
-# All fuzz targets are integrated into the build process.
-./configure --disable-shared --disable-shared-libutil --enable-static-sudoers \
-    --enable-sanitizer="$sanitizer_opts" --enable-fuzzer \
-    --enable-fuzzer-engine="$LIB_FUZZING_ENGINE" --enable-fuzzer-linker="$CXX" \
-    --enable-warnings --enable-werror
-make -j$(nproc) && make FUZZ_DESTDIR=$OUT install-fuzzer
diff --git a/projects/sudoers/project.yaml b/projects/sudoers/project.yaml
deleted file mode 100755
index 309a3eb..0000000
--- a/projects/sudoers/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/sudo-project"
-primary_contact: "sudo@sudo.ws"
-language: c
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
-  - dataflow
-auto_ccs :
-  - "david@adalogics.com"
-main_repo: 'https://github.com/sudo-project/sudo'
diff --git a/projects/suricata/Dockerfile b/projects/suricata/Dockerfile
deleted file mode 100644
index 257e7fb..0000000
--- a/projects/suricata/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y build-essential autoconf automake libtool make pkg-config  python flex bison zlib1g-dev libpcre3-dev libpcre2-dev cmake tshark
-
-#TODO libmagic, liblzma, pcre and other optional libraries
-ADD https://www.tcpdump.org/release/libpcap-1.9.1.tar.gz libpcap-1.9.1.tar.gz
-ADD http://www.digip.org/jansson/releases/jansson-2.12.tar.gz jansson-2.12.tar.gz
-RUN git clone --depth=1 https://github.com/yaml/libyaml
-ADD https://github.com/lz4/lz4/archive/v1.9.2.tar.gz lz4-1.9.2.tar.gz
-RUN git clone --depth=1 https://github.com/catenacyber/fuzzpcap
-
-ADD https://rules.emergingthreats.net/open/suricata/emerging.rules.zip emerging.rules.zip
-
-RUN cargo install --force cbindgen
-
-RUN git clone --depth 1 https://github.com/OISF/suricata.git suricata
-RUN git clone --depth 1 https://github.com/OISF/libhtp.git libhtp
-RUN git clone --depth 1 https://github.com/OISF/suricata-verify suricata-verify
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/suricata/build.sh b/projects/suricata/build.sh
deleted file mode 100755
index 18f2280..0000000
--- a/projects/suricata/build.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build dependencies statically
-tar -xvzf lz4-1.9.2.tar.gz
-cd lz4-1.9.2
-make liblz4.a
-cp lib/liblz4.a /usr/local/lib/
-cp lib/lz4*.h /usr/local/include/
-cd ..
-
-tar -xvzf jansson-2.12.tar.gz
-cd jansson-2.12
-./configure --disable-shared
-make -j$(nproc)
-make install
-cd ..
-
-tar -xvzf libpcap-1.9.1.tar.gz
-cd libpcap-1.9.1
-./configure --disable-shared
-make -j$(nproc)
-make install
-cd ..
-
-cd fuzzpcap
-mkdir build
-cd build
-cmake ..
-make install
-cd ../..
-
-cd libyaml
-./bootstrap
-./configure --disable-shared
-make -j$(nproc)
-make install
-cd ..
-
-export CARGO_BUILD_TARGET="x86_64-unknown-linux-gnu"
-
-#we did not put libhtp there before so that cifuzz does not remove it
-mv libhtp suricata/
-# build project
-cd suricata
-sh autogen.sh
-#run configure with right options
-if [ "$SANITIZER" = "address" ]
-then
-    export RUSTFLAGS="$RUSTFLAGS -Cpasses=sancov -Cllvm-args=-sanitizer-coverage-level=4 -Cllvm-args=-sanitizer-coverage-trace-compares -Cllvm-args=-sanitizer-coverage-inline-8bit-counters -Cllvm-args=-sanitizer-coverage-trace-geps -Cllvm-args=-sanitizer-coverage-prune-blocks=0 -Cllvm-args=-sanitizer-coverage-pc-table -Clink-dead-code -Cllvm-args=-sanitizer-coverage-stack-depth"
-fi
-./src/tests/fuzz/oss-fuzz-configure.sh
-make -j$(nproc)
-
-cp src/fuzz_* $OUT/
-
-# dictionaries
-./src/suricata --list-keywords | grep "\- " | sed 's/- //' | awk '{print "\""$0"\""}' > $OUT/fuzz_siginit.dict
-
-# build corpuses
-# default configuration file
-zip -r $OUT/fuzz_confyamlloadstring_seed_corpus.zip suricata.yaml
-# rebuilds rules corpus with only one rule by file
-unzip ../emerging.rules.zip
-cd rules
-i=0
-mkdir corpus
-# quiet output for commands
-set +x
-cat *.rules | while read l; do echo $l > corpus/$i.rule; i=$((i+1)); done
-set -x
-zip -q -r $OUT/fuzz_siginit_seed_corpus.zip corpus
-cd ../../suricata-verify
-
-# corpus with single files
-find . -name "*.pcap" | xargs zip -r $OUT/fuzz_decodepcapfile_seed_corpus.zip
-find . -name "*.yaml" | xargs zip -r $OUT/fuzz_confyamlloadstring_seed_corpus.zip
-find . -name "*.rules" | xargs zip -r $OUT/fuzz_siginit_seed_corpus.zip
-
-# corpus using both rule and pcap as in suricata-verify
-cd tests
-i=0
-mkdir corpus
-set +x
-ls | grep -v corpus | while read t; do
-cat $t/*.rules > corpus/$i || true; echo -ne '\0' >> corpus/$i; cat $t/*.pcap >> corpus/$i || true; i=$((i+1));
-done
-set -x
-zip -q -r $OUT/fuzz_sigpcap_seed_corpus.zip corpus
-rm -Rf corpus
-mkdir corpus
-set +x
-ls | grep -v corpus | while read t; do
-cat $t/*.rules > corpus/$i || true; echo -ne '\0' >> corpus/$i; fpc_bin $t/*.pcap >> corpus/$i || rm corpus/$i; i=$((i+1));
-echo -ne '\0' >> corpus/$i; python3 $SRC/fuzzpcap/tcptofpc.py $t/*.pcap >> corpus/$i || rm corpus/$i; i=$((i+1));
-done
-set -x
-zip -q -r $OUT/fuzz_sigpcap_aware_seed_corpus.zip corpus
-echo "\"FPC0\"" > $OUT/fuzz_sigpcap_aware.dict
diff --git a/projects/suricata/project.yaml b/projects/suricata/project.yaml
deleted file mode 100644
index 3babd8f..0000000
--- a/projects/suricata/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://suricata-ids.org"
-language: c++
-primary_contact: "vjulien@openinfosecfoundation.org"
-auto_ccs:
-- "jish@openinfosecfoundation.org"
-- "p.antoine@catenacyber.fr"
-sanitizers:
-  - address
-  - memory
-  - undefined
-main_repo: 'https://github.com/OISF/suricata.git'
diff --git a/projects/systemd/Dockerfile b/projects/systemd/Dockerfile
index 0705c56..b920555 100644
--- a/projects/systemd/Dockerfile
+++ b/projects/systemd/Dockerfile
@@ -15,11 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan@titanous.com
 RUN apt-get update &&\
     apt-get install -y gperf m4 gettext python3-pip \
         libcap-dev libmount-dev libkmod-dev \
         pkg-config wget &&\
-    pip3 install meson==0.56.2 ninja
+    pip3 install meson ninja
 RUN git clone --depth 1 https://github.com/systemd/systemd systemd
 WORKDIR systemd
 COPY build.sh $SRC/
diff --git a/projects/systemd/project.yaml b/projects/systemd/project.yaml
index c3eb6b2..473215e 100644
--- a/projects/systemd/project.yaml
+++ b/projects/systemd/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://freedesktop.org/wiki/Software/systemd/"
-language: c++
 primary_contact: "lennart@poettering.net"
-builds_per_day: 4
 sanitizers:
   - address
   - undefined
@@ -20,6 +18,3 @@
   - ssahani@vmware.com
   - chris@chrisdown.name
   - the.anitazha@gmail.com
-  - daan.j.demeyer@gmail.com
-  - luca.boccassi@gmail.com
-main_repo: 'https://github.com/systemd/systemd'
diff --git a/projects/syzkaller/Dockerfile b/projects/syzkaller/Dockerfile
index fdef5b4..77bfde6 100644
--- a/projects/syzkaller/Dockerfile
+++ b/projects/syzkaller/Dockerfile
@@ -15,8 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 
-RUN git clone --depth 1 https://github.com/google/syzkaller/
+RUN go get -u -d github.com/google/syzkaller/...
 
-WORKDIR $SRC/syzkaller
+# Dependency for one of the fuzz targets.
+RUN go get github.com/ianlancetaylor/demangle
+
+RUN git clone --depth 1 https://github.com/google/syzkaller.git syzkaller
+WORKDIR syzkaller
 COPY build.sh $SRC/
diff --git a/projects/syzkaller/build.sh b/projects/syzkaller/build.sh
index 0e98093..44be203 100755
--- a/projects/syzkaller/build.sh
+++ b/projects/syzkaller/build.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -eux
+#!/bin/bash -eu
 # Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,16 +15,23 @@
 #
 ################################################################################
 
+# Based on the function from oss-fuzz/projects/golang/build.sh script.
+function compile_fuzzer {
+  path=$1
+  function=$2
+  fuzzer=$3
 
+   # Instrument all Go files relevant to this fuzzer
+  go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path 
 
-make descriptions
+   # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary
+  $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer
+}
 
-go mod tidy && go mod vendor
-
-compile_go_fuzzer github.com/google/syzkaller/pkg/compiler Fuzz compiler_fuzzer
-compile_go_fuzzer github.com/google/syzkaller/prog/test FuzzDeserialize prog_deserialize_fuzzer
-compile_go_fuzzer github.com/google/syzkaller/prog/test FuzzParseLog prog_parselog_fuzzer
-compile_go_fuzzer github.com/google/syzkaller/pkg/report Fuzz report_fuzzer
+compile_fuzzer ./pkg/compiler Fuzz compiler_fuzzer
+compile_fuzzer ./prog/test FuzzDeserialize prog_deserialize_fuzzer
+compile_fuzzer ./prog/test FuzzParseLog prog_parselog_fuzzer
+compile_fuzzer ./pkg/report Fuzz report_fuzzer
 
 # This target is way too spammy and OOMs very quickly.
-# compile_go_fuzzer ./tools/syz-trace2syz/proggen Fuzz trace2syz_fuzzer
+# compile_fuzzer ./tools/syz-trace2syz/proggen Fuzz trace2syz_fuzzer
diff --git a/projects/syzkaller/project.yaml b/projects/syzkaller/project.yaml
index 1442c04..ee6cd84 100644
--- a/projects/syzkaller/project.yaml
+++ b/projects/syzkaller/project.yaml
@@ -10,4 +10,3 @@
 sanitizers:
   - address
 view_restrictions: none
-main_repo: 'https://github.com/google/syzkaller'
diff --git a/projects/tarantool/Dockerfile b/projects/tarantool/Dockerfile
deleted file mode 100644
index 7a40b0f..0000000
--- a/projects/tarantool/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y \
-	build-essential cmake make coreutils sed \
-	autoconf automake libtool zlib1g-dev \
-	libreadline-dev libncurses5-dev libssl-dev \
-	libunwind-dev libicu-dev luajit
-RUN git clone https://github.com/tarantool/tarantool
-WORKDIR tarantool
-RUN git submodule update --init --recursive
-COPY build.sh $SRC/
diff --git a/projects/tarantool/build.sh b/projects/tarantool/build.sh
deleted file mode 100755
index 940d88a..0000000
--- a/projects/tarantool/build.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-case $SANITIZER in
-  address) SANITIZERS_ARGS="-DENABLE_ASAN=ON" ;;
-  undefined) SANITIZERS_ARGS="-DENABLE_UB_SANITIZER=ON" ;;
-  *) SANITIZERS_ARGS="" ;;
-esac
-
-: ${LD:="${CXX}"}
-: ${LDFLAGS:="${CXXFLAGS}"}  # to make sure we link with sanitizer runtime
-
-cmake_args=(
-    # Specific to Tarantool
-    -DENABLE_FUZZER=ON
-    -DOSS_FUZZ=ON
-    $SANITIZERS_ARGS
-
-    # C compiler
-    -DCMAKE_C_COMPILER="${CC}"
-    -DCMAKE_C_FLAGS="${CFLAGS}"
-
-    # C++ compiler
-    -DCMAKE_CXX_COMPILER="${CXX}"
-    -DCMAKE_CXX_FLAGS="${CXXFLAGS}"
-
-    # Linker
-    -DCMAKE_LINKER="${LD}"
-    -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}"
-    -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}"
-    -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}"
-)
-
-# Build the project and fuzzers.
-[[ -e build ]] && rm -rf build
-cmake "${cmake_args[@]}" -S . -B build
-make -j$(nproc) VERBOSE=1 -C build fuzzers
-
-# Archive and copy to $OUT seed corpus if the build succeeded.
-for f in $(ls build/test/fuzz/*_fuzzer);
-do
-  name=$(basename $f);
-  module=$(echo $name | sed 's/_fuzzer//')
-  corpus_dir="test/static/corpus/$module"
-  echo "Copying for $module";
-  cp $f $OUT/
-  [[ -e $corpus_dir ]] && zip -j $OUT/"$module"_fuzzer_seed_corpus.zip $corpus_dir/*
-done
diff --git a/projects/tarantool/project.yaml b/projects/tarantool/project.yaml
deleted file mode 100644
index c757a53..0000000
--- a/projects/tarantool/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://www.tarantool.io/en/"
-language: c
-builds_per_day: 4
-primary_contact: "kirill.yukhin@gmail.com"
-auto_ccs:
-  - "estetus@gmail.com"
-  - "totktonada.ru@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - honggfuzz
-sanitizers:
-  - address
-  - undefined
-architectures:
-  - x86_64
-main_repo: "https://github.com/tarantool/tarantool"
diff --git a/projects/teleport/Dockerfile b/projects/teleport/Dockerfile
deleted file mode 100644
index 8ffafb3..0000000
--- a/projects/teleport/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/gravitational/teleport.git
-COPY build.sh $SRC/
-WORKDIR $SRC/teleport
diff --git a/projects/teleport/build.sh b/projects/teleport/build.sh
deleted file mode 100644
index 260d479..0000000
--- a/projects/teleport/build.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-make update-vendor
-
-compile_go_fuzzer github.com/gravitational/teleport/lib/fuzz FuzzParseProxyJump utils_fuzz gofuzz
-compile_go_fuzzer github.com/gravitational/teleport/lib/fuzz FuzzNewExpression parse_fuzz gofuzz
diff --git a/projects/teleport/project.yaml b/projects/teleport/project.yaml
deleted file mode 100644
index ac85d90..0000000
--- a/projects/teleport/project.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-homepage: "https://github.com/gravitational/teleport"
-primary_contact: "andrew@awly.dev"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
diff --git a/projects/tensorflow-py/Dockerfile b/projects/tensorflow-py/Dockerfile
deleted file mode 100644
index dea03cb..0000000
--- a/projects/tensorflow-py/Dockerfile
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y --no-install-recommends \
-        curl \
-        rsync \
-        vim \
-        && \
-    apt-get clean && \
-    rm -rf /var/lib/apt/lists/*
-
-# Due to Bazel bug, need to symlink python3 to python
-# See https://github.com/bazelbuild/bazel/issues/8665
-RUN ln -s /usr/local/bin/python3 /usr/local/bin/python
-
-# Install Bazelisk to keep bazel in sync with the version required by TensorFlow
-RUN curl -Lo /usr/bin/bazel \
-        https://github.com/bazelbuild/bazelisk/releases/download/v1.1.0/bazelisk-linux-amd64 \
-        && \
-    chmod +x /usr/bin/bazel
-
-RUN git clone --depth 1 https://github.com/tensorflow/tensorflow tensorflow
-WORKDIR $SRC/tensorflow
-COPY build.sh $SRC/
diff --git a/projects/tensorflow-py/build.sh b/projects/tensorflow-py/build.sh
deleted file mode 100644
index afd501b..0000000
--- a/projects/tensorflow-py/build.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-python3 -m pip install tf-nightly-cpu
-python3 -m pip install numpy
-
-# Rename to avoid the following: https://github.com/tensorflow/tensorflow/issues/40182
-mv $SRC/tensorflow/tensorflow $SRC/tensorflow/tensorflow_src
-
-# Build fuzzers into $OUT. These could be detected in other ways.
-
-for fuzzer in $(find $SRC -name '*_fuzz.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  cp /usr/local/lib/python3.8/site-packages/numpy.libs/libz-eb09ad1d.so.1.2.3 $OUT
-  cp /usr/local/lib/python3.8/site-packages/numpy.libs/libquadmath-2d0c479f.so.0.0.0 $OUT
-  cp /usr/local/lib/python3.8/site-packages/numpy.libs/libgfortran-2e0d59d6.so.5.0.0 $OUT
-  cp /usr/local/lib/python3.8/site-packages/numpy.libs/libopenblasp-r0-09e95953.3.13.so $OUT
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\"\$this_dir/sanitizer_with_fuzzer.so \$this_dir/libz-eb09ad1d.so.1.2.3 \$this_dir/libquadmath-2d0c479f.so.0.0.0 \$this_dir/libgfortran-2e0d59d6.so.5.0.0 \$this_dir/libopenblasp-r0-09e95953.3.13.so\" \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
-
-mv $SRC/tensorflow/tensorflow_src $SRC/tensorflow/tensorflow
diff --git a/projects/tensorflow-py/project.yaml b/projects/tensorflow-py/project.yaml
deleted file mode 100644
index 64c5eba..0000000
--- a/projects/tensorflow-py/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://www.tensorflow.org"
-language: python
-primary_contact: "amitpatankar@google.com"
-auto_ccs:
- - "mihaimaruseac@google.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/tensorflow/tensorflow'
diff --git a/projects/tensorflow/Dockerfile b/projects/tensorflow/Dockerfile
index 44f7d45..64100cf 100644
--- a/projects/tensorflow/Dockerfile
+++ b/projects/tensorflow/Dockerfile
@@ -15,24 +15,21 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mihaimaruseac@google.com
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         curl \
+        python-dev \
+        python-future \
         rsync \
         && \
     apt-get clean && \
     rm -rf /var/lib/apt/lists/*
-RUN python3 -m pip install numpy
 
-# Due to Bazel bug, need to symlink python3 to python
-# See https://github.com/bazelbuild/bazel/issues/8665
-RUN ln -s /usr/local/bin/python3 /usr/local/bin/python
-
-# Install Bazelisk to keep bazel in sync with the version required by TensorFlow
-RUN curl -Lo /usr/bin/bazel \
-        https://github.com/bazelbuild/bazelisk/releases/download/v1.1.0/bazelisk-linux-amd64 \
-        && \
-    chmod +x /usr/bin/bazel
+# Install Bazel from apt-get to ensure dependencies are there
+RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
+RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
+RUN apt-get update && apt-get install -y bazel
 
 RUN git clone --depth 1 https://github.com/tensorflow/tensorflow tensorflow
 WORKDIR $SRC/tensorflow
diff --git a/projects/tensorflow/build.sh b/projects/tensorflow/build.sh
index b59e4a5..b1589e0 100755
--- a/projects/tensorflow/build.sh
+++ b/projects/tensorflow/build.sh
@@ -15,91 +15,154 @@
 #
 ################################################################################
 
-# Force Python3, run configure.py to pick the right build config
-PYTHON=python3
-yes "" | ${PYTHON} configure.py
+# First, determine the latest Bazel we can support
+BAZEL_VERSION=$(
+  grep '_TF_MAX_BAZEL_VERSION =' configure.py | \
+  cut -d\' -f2 | tr -d '[:space:]'
+)
+if [ -z ${BAZEL_VERSION} ]; then
+  echo "Couldn't find a valid bazel version in configure.py script"
+  exit 1
+fi
 
-# Since Bazel passes flags to compilers via `--copt`, `--conlyopt` and
-# `--cxxopt`, we need to move all flags from `$CFLAGS` and `$CXXFLAGS` to these.
-# We don't use `--copt` as warnings issued by C compilers when encountering a
-# C++-only option results in errors during build.
-#
-# Note: Make sure that by this line `$CFLAGS` and `$CXXFLAGS` are properly set
-# up as further changes to them won't be visible to Bazel.
-#
-# Note: for builds using the undefined behavior sanitizer we need to link
-# `clang_rt` ubsan library. Since Bazel uses `clang` for linking instead of
-# `clang++`, we need to add the additional `--linkopt` flag.
-# See issue: https://github.com/bazelbuild/bazel/issues/8777
+# Then, install it
+curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh
+chmod +x ./bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh
+./bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh
+
+# Finally, check instalation before proceeding to compile
+INSTALLED_VERSION=$(
+  bazel version | grep 'Build label' | cut -d: -f2 | tr -d '[:space:]'
+)
+if [ ${INSTALLED_VERSION} != ${BAZEL_VERSION} ]; then
+  echo "Couldn't install required Bazel. "
+  echo "Want ${BAZEL_VERSION}. Got ${INSTALLED_VERSION}."
+  exit 1
+fi
+
+# Generate the list of fuzzers we have (only the base/op name).
+FUZZING_BUILD_FILE="tensorflow/core/kernels/fuzzing/BUILD"
+declare -r FUZZERS=$(
+  grep '^tf_ops_fuzz_target' ${FUZZING_BUILD_FILE} | cut -d'"' -f2 | head -n5
+)
+
+# Add a few more flags to make sure fuzzers build and run successfully.
+# Note the c++11/libc++ flags to build using the same toolchain as the one used
+# to build libFuzzingEngine.
+CFLAGS="${CFLAGS} -fno-sanitize=vptr"
+CXXFLAGS="${CXXFLAGS} -fno-sanitize=vptr -std=c++11 -stdlib=libc++"
+
+# Make sure we run ./configure to detect when we are using a Bazel out of range
+yes "" | ./configure
+
+# See https://github.com/bazelbuild/bazel/issues/6697
+sed '/::kM..SeedBytes/d' -i tensorflow/stream_executor/rng.cc
+
+# Due to statically linking boringssl dependency, we have to define one extra
+# flag when compiling for memory fuzzing (see the boringssl project).
+if [ "$SANITIZER" = "memory" ]
+then
+  CFLAGS="${CFLAGS} -DOPENSSL_NO_ASM=1"
+  CXXFLAGS="${CXXFLAGS} -DOPENSSL_NO_ASM=1"
+fi
+
+# All of the flags in $CFLAGS and $CXXFLAGS need to be passed to bazel too.
+# Also, pass in flags to ensure static build and to help in debugging failures.
 declare -r EXTRA_FLAGS="\
+--config=monolithic --dynamic_mode=off \
+--verbose_failures \
 $(
 for f in ${CFLAGS}; do
   echo "--conlyopt=${f}" "--linkopt=${f}"
 done
 for f in ${CXXFLAGS}; do
-    echo "--cxxopt=${f}" "--linkopt=${f}"
+  echo "--cxxopt=${f}" "--linkopt=${f}"
 done
-if [ "$SANITIZER" = "undefined" ]
-then
-  echo "--linkopt=$(find $(llvm-config --libdir) -name libclang_rt.ubsan_standalone_cxx-x86_64.a | head -1)"
-fi
 )"
 
-# Determine all fuzz targets. To control what gets fuzzed with OSSFuzz, all
-# supported fuzzers are in `//tensorflow/security/fuzzing`.
-# Ignore fuzzers tagged with `no_oss` in opensource.
-declare -r FUZZERS=$(bazel query 'kind(cc_.*, tests(//tensorflow/security/fuzzing/...)) - attr(tags, no_oss, kind(cc_.*, tests(//tensorflow/security/fuzzing/...)))')
+# We need a new bazel function to build the actual binary.
+cat >> tensorflow/core/kernels/fuzzing/tf_ops_fuzz_target_lib.bzl << END
 
-# Build the fuzzer targets.
-# Pass in `--config=libc++` to link against libc++.
-# Pass in `--verbose_failures` so it is easy to debug compile crashes.
-# Pass in `--strip=never` to ensure coverage support.
-# Pass in `$LIB_FUZZING_ENGINE` to `--copt` and `--linkopt` to ensure we have a
-# `main` symbol defined (all these fuzzers build without a `main` and by default
-# `$CFLAGS` and `CXXFLAGS` compile with `-fsanitize=fuzzer-no-link`).
-# Since we have `assert` in fuzzers, make sure `NDEBUG` is not defined
-bazel build \
-  --config=libc++ \
-  ${EXTRA_FLAGS} \
-  --verbose_failures \
-  --strip=never \
-  --copt=${LIB_FUZZING_ENGINE} \
-  --linkopt=${LIB_FUZZING_ENGINE} \
-  --copt='-UNDEBUG' \
-  -- ${FUZZERS}
+def cc_tf(name):
+    native.cc_test(
+        name = name + "_fuzz",
+        deps = [
+            "//tensorflow/core/kernels/fuzzing:fuzz_session",
+            "//tensorflow/core/kernels/fuzzing:" + name + "_fuzz_lib",
+            "//tensorflow/cc:cc_ops",
+            "//tensorflow/cc:scope",
+            "//tensorflow/core:core_cpu",
+        ],
+    )
+END
 
-# The fuzzers built above are in the `bazel-bin/` symlink. But they need to be
-# in `$OUT`, so move them accordingly.
-for bazel_target in ${FUZZERS}; do
-  colon_index=$(expr index "${bazel_target}" ":")
-  fuzz_name="${bazel_target:$colon_index}"
-  bazel_location="bazel-bin/${bazel_target/:/\/}"
-  cp ${bazel_location} ${OUT}/$fuzz_name
+# Import this function in the proper BUILD file.
+cat >> ${FUZZING_BUILD_FILE} << END
+
+load("//tensorflow/core/kernels/fuzzing:tf_ops_fuzz_target_lib.bzl", "cc_tf")
+
+END
+
+# And invoke it for all fuzzers.
+for fuzzer in ${FUZZERS}; do
+  echo cc_tf\(\"${fuzzer}\"\) >> ${FUZZING_BUILD_FILE}
 done
 
-# For coverage, we need to remap source files to correspond to the Bazel build
-# paths. We also need to resolve all symlinks that Bazel creates.
+# Since we force the environment, we expect bazel to fail during the linking of
+# each fuzzer. Hence, we will do the linking manually at the end of the process.
+# We just need to make sure we use the same invocation as bazel would use, so
+# use --verbose_failures (in ${EXTRA_FLAGS}) to get it and then encode it in the
+# following ${LINK_ARGS}.
+declare -r LINK_ARGS="\
+-pthread -fuse-ld=gold \
+-Wl,-no-as-needed -Wl,-z,relro,-z,now \
+-B/usr/local/bin -B/usr/bin -Wl,--gc-sections \
+"
+
+# This should always look as successful despite linking error mentioned above.
+bazel build --jobs=2 ${EXTRA_FLAGS} -k //tensorflow/core/kernels/fuzzing:all || true
+
+# For each fuzzer target, we only have to link it manually to get the binary.
+for fuzzer in ${FUZZERS}; do
+  fz=${fuzzer}_fuzz
+
+  # Get the file with the parameters for linking or fail if it didn't exist.
+  lfile=`ls -1 bazel-bin/tensorflow/core/kernels/fuzzing/${fz}*.params | head -n1`
+
+  # Manually link everything.
+  ${CXX} ${CXXFLAGS} $LIB_FUZZING_ENGINE -o ${OUT}/${fz} ${LINK_ARGS} -Wl,@${lfile}
+done
+
+# For coverage, we need one extra step, see the envoy and grpc projects.
 if [ "$SANITIZER" = "coverage" ]
 then
-  declare -r RSYNC_CMD="rsync -aLkR"
-  declare -r REMAP_PATH=${OUT}/proc/self/cwd/
+  declare -r REMAP_PATH=${OUT}/proc/self/cwd
   mkdir -p ${REMAP_PATH}
+  rsync -ak ${SRC}/tensorflow/tensorflow ${REMAP_PATH}
+  rsync -ak ${SRC}/tensorflow/third_party ${REMAP_PATH}
 
-  # Sync existing code.
-  ${RSYNC_CMD} tensorflow/ ${REMAP_PATH}
+  # Also copy bazel generated files (via genrules)
+  declare -r BAZEL_PREFIX=bazel-out/k8-opt
+  declare -r REMAP_BAZEL_PATH=${REMAP_PATH}/${BAZEL_PREFIX}
+  mkdir -p ${REMAP_BAZEL_PATH}
+  rsync -ak ${SRC}/tensorflow/${BAZEL_PREFIX}/genfiles ${REMAP_BAZEL_PATH}
 
-  # Sync generated proto files.
-  ${RSYNC_CMD} ./bazel-out/k8-opt/bin/tensorflow/core/protobuf ${REMAP_PATH}
-
-  # Sync external dependencies. We don't need to include `bazel-tensorflow`.
-  # Also, remove `external/org_tensorflow` which is a copy of the entire source
-  # code that Bazel creates. Not removing this would cause `rsync` to expand a
-  # symlink that ends up pointing to itself!
-  pushd bazel-tensorflow
-  [[ -e external/org_tensorflow ]] && unlink external/org_tensorflow
-  ${RSYNC_CMD} external/ ${REMAP_PATH}
-  popd
+  # Finally copy the external archives source files
+  rsync -ak ${SRC}/tensorflow/bazel-tensorflow/external ${REMAP_PATH}
 fi
 
+# Now that all is done, we just have to copy the existing corpora and
+# dictionaries to have them available in the runtime environment.
+# The tweaks to the filenames below are to make sure corpora/dictionary have
+# similar names as the fuzzer binary.
+for dict in tensorflow/core/kernels/fuzzing/dictionaries/*; do
+  name=$(basename -- $dict)
+  cp ${dict} ${OUT}/${name/.dict/_fuzz.dict}
+done
+for corpus in tensorflow/core/kernels/fuzzing/corpus/*; do
+  name=$(basename -- $corpus)
+  zip ${OUT}/${name}_fuzz_seed_corpus.zip ${corpus}/*
+done
+
 # Finally, make sure we don't accidentally run with stuff from the bazel cache.
 rm -f bazel-*
diff --git a/projects/tensorflow/project.yaml b/projects/tensorflow/project.yaml
index 4cf5d16..850296a 100644
--- a/projects/tensorflow/project.yaml
+++ b/projects/tensorflow/project.yaml
@@ -1,10 +1,9 @@
 homepage: "https://www.tensorflow.org"
-language: c++
 primary_contact: "mihaimaruseac@google.com"
 auto_ccs:
- - "amitpatankar@google.com"
+ - "dga@google.com"
+ - "frankchn@google.com"
+fuzzing_engines:
+  - libfuzzer
 sanitizers:
   - address
-  - undefined
-  - memory
-main_repo: 'https://github.com/tensorflow/tensorflow'
diff --git a/projects/tesseract-ocr/Dockerfile b/projects/tesseract-ocr/Dockerfile
index 20094e7..daf6070 100644
--- a/projects/tesseract-ocr/Dockerfile
+++ b/projects/tesseract-ocr/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y autoconf automake libtool pkg-config libpng-dev libjpeg8-dev libtiff5-dev zlib1g-dev
 RUN git clone --depth 1 https://github.com/danbloomberg/leptonica
 RUN git clone --depth 1 https://github.com/tesseract-ocr/tesseract
diff --git a/projects/tesseract-ocr/build.sh b/projects/tesseract-ocr/build.sh
index 9943c74..1847668 100755
--- a/projects/tesseract-ocr/build.sh
+++ b/projects/tesseract-ocr/build.sh
@@ -1,5 +1,5 @@
 #!/bin/bash -eu
-# Copyright 2020 Google Inc.
+# Copyright 2019 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,4 +14,45 @@
 # limitations under the License.
 #
 ################################################################################
-$SRC/tesseract/unittest/fuzzers/oss-fuzz-build.sh
+
+cd $SRC/leptonica
+./autogen.sh
+./configure
+make -j$(nproc)
+make install
+ldconfig
+
+cd $SRC/tesseract
+./autogen.sh
+CXXFLAGS="$CXXFLAGS -D_GLIBCXX_DEBUG" ./configure --disable-graphics --disable-shared
+make -j$(nproc)
+
+cp -R $SRC/tessdata $OUT
+
+$CXX $CXXFLAGS \
+    -I $SRC/tesseract/include \
+     $SRC/tesseract/unittest/fuzzers/fuzzer-api.cpp -o $OUT/fuzzer-api \
+     $SRC/tesseract/.libs/libtesseract.a \
+     /usr/local/lib/liblept.a \
+     /usr/lib/x86_64-linux-gnu/libtiff.a \
+     /usr/lib/x86_64-linux-gnu/libpng.a \
+     /usr/lib/x86_64-linux-gnu/libjpeg.a \
+     /usr/lib/x86_64-linux-gnu/libjbig.a \
+     /usr/lib/x86_64-linux-gnu/liblzma.a \
+     -lz \
+     $LIB_FUZZING_ENGINE
+
+$CXX $CXXFLAGS \
+    -DTESSERACT_FUZZER_WIDTH=512 \
+    -DTESSERACT_FUZZER_HEIGHT=256 \
+    -I $SRC/tesseract/include \
+     $SRC/tesseract/unittest/fuzzers/fuzzer-api.cpp -o $OUT/fuzzer-api-512x256 \
+     $SRC/tesseract/.libs/libtesseract.a \
+     /usr/local/lib/liblept.a \
+     /usr/lib/x86_64-linux-gnu/libtiff.a \
+     /usr/lib/x86_64-linux-gnu/libpng.a \
+     /usr/lib/x86_64-linux-gnu/libjpeg.a \
+     /usr/lib/x86_64-linux-gnu/libjbig.a \
+     /usr/lib/x86_64-linux-gnu/liblzma.a \
+     -lz \
+     $LIB_FUZZING_ENGINE
diff --git a/projects/tesseract-ocr/project.yaml b/projects/tesseract-ocr/project.yaml
index 522ba2b..6e6983b 100644
--- a/projects/tesseract-ocr/project.yaml
+++ b/projects/tesseract-ocr/project.yaml
@@ -1,4 +1,4 @@
 homepage: "https://github.com/tesseract-ocr/tesseract"
-language: c++
 primary_contact: "stjoweil@googlemail.com"
-main_repo: 'https://github.com/tesseract-ocr/tesseract'
+fuzzing_engines:
+  - libfuzzer
diff --git a/projects/thrift/Dockerfile b/projects/thrift/Dockerfile
deleted file mode 100644
index 0401883..0000000
--- a/projects/thrift/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y libssl-dev pkg-config autoconf automake libtool bison flex libboost-all-dev
-RUN git clone --depth 1 https://github.com/apache/thrift
-WORKDIR $SRC/thrift
-COPY build.sh $SRC/
diff --git a/projects/thrift/build.sh b/projects/thrift/build.sh
deleted file mode 100755
index 8194063..0000000
--- a/projects/thrift/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-export ASAN_OPTIONS=detect_leaks=0
-
-./bootstrap.sh
-# rust fails compilation with clippy warnings
-./configure --with-rs=no
-make -j$(nproc)
-make install
-
-cd lib/go/test/fuzz
-thrift -r --gen go ../../../../tutorial/tutorial.thrift
-(cd ./gen-go/shared && go mod init shared)
-(cd ./gen-go/tutorial && go mod init tutorial)
-go mod tidy || true
-compile_go_fuzzer . Fuzz fuzz_go_tutorial
diff --git a/projects/thrift/project.yaml b/projects/thrift/project.yaml
deleted file mode 100644
index 586da66..0000000
--- a/projects/thrift/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://thrift.apache.org/"
-language: c++
-primary_contact: "jensg@apache.org"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/apache/thrift'
diff --git a/projects/tidb/Dockerfile b/projects/tidb/Dockerfile
deleted file mode 100644
index 5c7d0fd..0000000
--- a/projects/tidb/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/pingcap/tidb
-COPY build.sh $SRC/
-WORKDIR $SRC/tidb
diff --git a/projects/tidb/build.sh b/projects/tidb/build.sh
deleted file mode 100755
index c11028f..0000000
--- a/projects/tidb/build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Insert empty main function
-sed -i '23 i\func main(){}'\\n $SRC/tidb/plugin/conn_ip_example/conn_ip_example.go
-
-go get ./...
-
-compile_go_fuzzer github.com/pingcap/tidb/types FuzzMarshalJSON fuzzMarshalJSON
-compile_go_fuzzer github.com/pingcap/tidb/types FuzzNewBitLiteral fuzzNewBitLiteral
-compile_go_fuzzer github.com/pingcap/tidb/types FuzzNewHexLiteral fuzzNewHexLiteral
diff --git a/projects/tidb/project.yaml b/projects/tidb/project.yaml
deleted file mode 100644
index 0c5096e..0000000
--- a/projects/tidb/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/pingcap/tidb"
-primary_contact: "zhouqiang@pingcap.com"
-auto_ccs :
-  - "adam@adalogics.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/pingcap/tidb'
diff --git a/projects/tidy-html5/Dockerfile b/projects/tidy-html5/Dockerfile
index febef54..1f4cf06 100644
--- a/projects/tidy-html5/Dockerfile
+++ b/projects/tidy-html5/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER sbucur@google.com
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
diff --git a/projects/tidy-html5/project.yaml b/projects/tidy-html5/project.yaml
index d62facb..c0fc8f4 100644
--- a/projects/tidy-html5/project.yaml
+++ b/projects/tidy-html5/project.yaml
@@ -1,20 +1,12 @@
 homepage: "http://www.html-tidy.org/"
-language: c++
 primary_contact: "sbucur@google.com"
 auto_ccs:
   - "nmarrow@google.com"
   - "pmokati@google.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
+  - undefined
 labels:
   tidy_fuzzer:
     - sundew
-main_repo: 'https://github.com/htacg/tidy-html5.git'
diff --git a/projects/tinygltf/Dockerfile b/projects/tinygltf/Dockerfile
deleted file mode 100644
index 218baeb..0000000
--- a/projects/tinygltf/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN pip3 install meson ninja
-RUN git clone --depth 1 https://github.com/syoyo/tinygltf.git
-WORKDIR $SRC/tinygltf
-COPY build.sh $SRC/
diff --git a/projects/tinygltf/build.sh b/projects/tinygltf/build.sh
deleted file mode 100755
index 7c54294..0000000
--- a/projects/tinygltf/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-cd tests/fuzzer/
-meson build
-cd build
-ninja -j$(nproc)
-cp fuzz_gltf $OUT/
diff --git a/projects/tinygltf/project.yaml b/projects/tinygltf/project.yaml
deleted file mode 100644
index 1b14873..0000000
--- a/projects/tinygltf/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/syoyo/tinygltf"
-language: c++
-primary_contact: "syoyo@lighttransport.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-fuzzing_engines:
-- libfuzzer
-sanitizers:
-- address
-main_repo: 'https://github.com/syoyo/tinygltf.git'
diff --git a/projects/tinyxml2/project.yaml b/projects/tinyxml2/project.yaml
index fb9884b..cba496b 100644
--- a/projects/tinyxml2/project.yaml
+++ b/projects/tinyxml2/project.yaml
@@ -1,10 +1,23 @@
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
 homepage: "www.grinninglizard.com/tinyxml2"
-language: c++
-primary_contact: "leethomason@gmail.com"
 auto_ccs:
+  - "leethomason@gmail.com"
   - "pranjal.jumde@gmail.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/leethomason/tinyxml2'
diff --git a/projects/tmux/Dockerfile b/projects/tmux/Dockerfile
deleted file mode 100644
index 7407cff..0000000
--- a/projects/tmux/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf automake bison pkg-config \
-    libevent-dev ncurses-dev
-
-RUN git clone --depth 1 https://github.com/tmux/tmux.git
-RUN git clone --depth 1 https://github.com/tmux/tmux-fuzzing-corpus.git
-WORKDIR tmux
-COPY build.sh $SRC/
diff --git a/projects/tmux/build.sh b/projects/tmux/build.sh
deleted file mode 100644
index 53de126..0000000
--- a/projects/tmux/build.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./autogen.sh
-./configure \
-    --enable-fuzzing \
-    FUZZING_LIBS="${LIB_FUZZING_ENGINE} -lc++" \
-    LIBEVENT_LIBS="-Wl,-Bstatic -levent -Wl,-Bdynamic" \
-    LIBTINFO_LIBS="-Wl,-Bstatic -ltinfo -Wl,-Bdynamic"
-
-make -j"$(nproc)" check
-find "${SRC}/tmux/fuzz/" -name '*-fuzzer' -exec cp -v '{}' "${OUT}"/ \;
-find "${SRC}/tmux/fuzz/" -name '*-fuzzer.options' -exec cp -v '{}' "${OUT}"/ \;
-find "${SRC}/tmux/fuzz/" -name '*-fuzzer.dict' -exec cp -v '{}' "${OUT}"/ \;
-
-MAXLEN=$(grep -Po 'max_len\s+=\s+\K\d+' "${OUT}/input-fuzzer.options")
-mkdir "${WORK}/fuzzing_corpus"
-cd "${WORK}/fuzzing_corpus"
-bash "${SRC}/tmux/tools/24-bit-color.sh" | \
-    split -a4 -db$MAXLEN - 24-bit-color.out.
-perl "${SRC}/tmux/tools/256colors.pl" | \
-    split -a4 -db$MAXLEN - 256colors.out.
-cat "${SRC}/tmux/tools/UTF-8-demo.txt" | \
-    split -a4 -db$MAXLEN - UTF-8-demo.txt.
-cat "${SRC}/tmux-fuzzing-corpus/alacritty"/* | \
-    split -a4 -db$MAXLEN - alacritty.
-cat "${SRC}/tmux-fuzzing-corpus/esctest"/* | \
-    split -a4 -db$MAXLEN - esctest.
-cat "${SRC}/tmux-fuzzing-corpus/iterm2"/* | \
-    split -a5 -db$MAXLEN - iterm2.
-zip -q -j -r "${OUT}/input-fuzzer_seed_corpus.zip" \
-    "${WORK}/fuzzing_corpus/"
diff --git a/projects/tmux/project.yaml b/projects/tmux/project.yaml
deleted file mode 100644
index e2a1d51..0000000
--- a/projects/tmux/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://tmux.github.io/"
-language: c
-primary_contact: nicholas.marriott@gmail.com
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/tmux/tmux.git'
diff --git a/projects/tor/Dockerfile b/projects/tor/Dockerfile
index 37d9753..cc04502 100644
--- a/projects/tor/Dockerfile
+++ b/projects/tor/Dockerfile
@@ -15,6 +15,7 @@
 ##############################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER nickm@torproject.org
 RUN apt-get update && apt-get install -y autoconf automake make libtool
 RUN git clone --depth 1 https://git.torproject.org/tor.git
 RUN git clone --depth 1 https://git.torproject.org/fuzzing-corpora.git tor-fuzz-corpora
diff --git a/projects/tor/project.yaml b/projects/tor/project.yaml
index d712260..47ee404 100644
--- a/projects/tor/project.yaml
+++ b/projects/tor/project.yaml
@@ -1,13 +1,7 @@
 homepage: "https://www.torproject.org"
-language: c++
 primary_contact: "nima@torproject.org"
-auto_ccs:
-  - "nick.a.mathewson@gmail.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
+auto_ccs: "nick.a.mathewson@gmail.com"
 sanitizers:
  - address
  - memory
  - undefined
-main_repo: 'https://git.torproject.org/tor.git'
diff --git a/projects/tpm2-tss/Dockerfile b/projects/tpm2-tss/Dockerfile
index 9f74c7a..47c6c44 100644
--- a/projects/tpm2-tss/Dockerfile
+++ b/projects/tpm2-tss/Dockerfile
@@ -50,8 +50,7 @@
     python3-pip \
     libsqlite3-dev \
     python-cryptography \
-    python3-cryptography \
-    acl
+    python3-cryptography
 
 RUN pip3 install cpp-coveralls
 
diff --git a/projects/tpm2-tss/build.sh b/projects/tpm2-tss/build.sh
index ae77a2a..9e77883 100644
--- a/projects/tpm2-tss/build.sh
+++ b/projects/tpm2-tss/build.sh
@@ -23,14 +23,13 @@
 
 ./bootstrap
 ./configure \
-  CC=$CC \
-  CXX=$CXX \
+  CC=clang \
+  CXX=clang++ \
   --enable-debug \
   --with-fuzzing=ossfuzz \
   --enable-tcti-fuzzing \
-  --disable-tcti-device \
-  --disable-tcti-mssim \
-  --disable-tcti-swtpm \
+  --enable-tcti-device=no \
+  --enable-tcti-mssim=no \
   --disable-doxygen-doc \
   --disable-shared \
   --disable-fapi
diff --git a/projects/tpm2-tss/project.yaml b/projects/tpm2-tss/project.yaml
index 04af6fe..4009a71 100644
--- a/projects/tpm2-tss/project.yaml
+++ b/projects/tpm2-tss/project.yaml
@@ -1,11 +1,8 @@
 homepage: "https://github.com/tpm2-software/tpm2-tss"
-language: c++
 primary_contact: "tadeusz.struk@intel.com"
 auto_ccs:
   - "andreas.fuchs@sit.fraunhofer.de"
   - "john.s.andersen@intel.com"
-  - "william.c.roberts@intel.com"
-  - "tstruk@gmail.com"
 sanitizers:
   - address
   - memory
diff --git a/projects/tpm2/project.yaml b/projects/tpm2/project.yaml
index ecf0208..444da8d 100644
--- a/projects/tpm2/project.yaml
+++ b/projects/tpm2/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://chromium.googlesource.com/chromiumos/third_party/tpm2"
-language: c++
 # todo: delete Dockerfile from tpm2 repo.
 # Docker files change too much, it was moved to oss-fuzz repository.
 #
@@ -14,4 +13,3 @@
   - "apronin@google.com"
   - "cfir@google.com"
   - "mruthven@google.com"
-main_repo: 'https://chromium.googlesource.com/chromiumos/third_party/tpm2'
diff --git a/projects/tremor/Dockerfile b/projects/tremor/Dockerfile
index d190c22..852b99c 100644
--- a/projects/tremor/Dockerfile
+++ b/projects/tremor/Dockerfile
@@ -15,9 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER twsmith@mozilla.com
 RUN apt-get update && apt-get install -y make autoconf automake libogg-dev libtool pkg-config wget
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/ogg.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/tremor.git
+RUN git clone https://git.xiph.org/ogg.git
+RUN git clone https://git.xiph.org/tremor.git
 RUN svn export https://github.com/mozillasecurity/fuzzdata.git/trunk/samples/vorbis decode_corpus
 WORKDIR tremor
 COPY decode_fuzzer.cc $SRC/tremor/
diff --git a/projects/tremor/project.yaml b/projects/tremor/project.yaml
index 670647f..f9b796c 100644
--- a/projects/tremor/project.yaml
+++ b/projects/tremor/project.yaml
@@ -1,19 +1,10 @@
 homepage: "https://xiph.org/vorbis/"
-language: c++
 primary_contact: "daede003@umn.edu"
 auto_ccs:
-  - "le.businessman@gmail.com"
   - "paul.l.kehrer@gmail.com"
 vendor_ccs:
   - "twsmith@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-  - dataflow
-main_repo: 'https://gitlab.xiph.org/xiph/tremor.git'
+  - undefined
diff --git a/projects/ujson/Dockerfile b/projects/ujson/Dockerfile
deleted file mode 100644
index 81550c6..0000000
--- a/projects/ujson/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN pip3 install hypothesis
-
-RUN git clone \
-	--depth 1 \
-	--branch master \
-	https://github.com/ultrajson/ultrajson.git
-
-WORKDIR ultrajson
-
-COPY build.sh json_differential_fuzzer.py ujson_fuzzer.py hypothesis_structured_fuzzer.py $SRC/
diff --git a/projects/ujson/build.sh b/projects/ujson/build.sh
deleted file mode 100755
index fd339d5..0000000
--- a/projects/ujson/build.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build and install project (using current CFLAGS, CXXFLAGS).
-pip3 install .
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name '*_fuzzer.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/ujson/hypothesis_structured_fuzzer.py b/projects/ujson/hypothesis_structured_fuzzer.py
deleted file mode 100644
index c07a2cf..0000000
--- a/projects/ujson/hypothesis_structured_fuzzer.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2021 Zac Hatfield-Dodds
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""This fuzzer is an example harness using Hypothesis for structured inputs.
-
-It would be possible, though more difficult, to write this test in terms
-of Atheris' `FuzzedDataProvider` instead of Hypothesis strategies.
-
-As well as defining structured inputs however, the call to
-`test_ujson_roundtrip()` will replay, deduplicate, and minimize any known
-failing examples from previous runs - which is great when debugging.
-Hypothesis uses a separate cache to Atheris/LibFuzzer seeds, so this is
-strictly complementary to your traditional fuzzing workflow.
-
-For more details on Hypothesis, see:
-https://hypothesis.readthedocs.io/en/latest/data.html
-https://hypothesis.readthedocs.io/en/latest/details.html#use-with-external-fuzzers
-"""
-
-import sys
-import atheris
-import ujson
-from hypothesis import given, strategies as st
-
-# We could define all these inline within the call to @given(),
-# but it's a bit easier to read if we name them here instead.
-JSON_ATOMS = st.one_of(
-    st.none(),
-    st.booleans(),
-    st.integers(min_value=-(2 ** 63), max_value=2 ** 63 - 1),
-    st.floats(allow_nan=False, allow_infinity=False),
-    st.text(),
-)
-JSON_OBJECTS = st.recursive(
-    base=JSON_ATOMS,
-    extend=lambda inner: st.lists(inner) | st.dictionaries(st.text(), inner),
-)
-UJSON_ENCODE_KWARGS = {
-    "ensure_ascii": st.booleans(),
-    "encode_html_chars": st.booleans(),
-    "escape_forward_slashes": st.booleans(),
-    "sort_keys": st.booleans(),
-    "indent": st.integers(0, 20),
-}
-
-
-@given(obj=JSON_OBJECTS, kwargs=st.fixed_dictionaries(UJSON_ENCODE_KWARGS))
-def test_ujson_roundtrip(obj, kwargs):
-    """Check that all JSON objects round-trip regardless of other options."""
-    assert obj == ujson.decode(ujson.encode(obj, **kwargs))
-
-
-if __name__ == "__main__":
-    # Running `pytest hypothesis_structured_fuzzer.py` will replay, deduplicate,
-    # and minimize any failures discovered by earlier runs or by OSS-Fuzz, or
-    # briefly search for new failures if none are known.
-    # Or, when running via OSS-Fuzz, we'll execute it via the fuzzing hook:
-    atheris.Setup(sys.argv, test_ujson_roundtrip.hypothesis.fuzz_one_input)
-    atheris.Fuzz()
diff --git a/projects/ujson/json_differential_fuzzer.py b/projects/ujson/json_differential_fuzzer.py
deleted file mode 100755
index fd26de1..0000000
--- a/projects/ujson/json_differential_fuzzer.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-""" An example native JSON vs uJSON differential fuzzer.
-
-This fuzzer looks for differences between the built-in json library and the
-native ujson library. The ujson library should be built for coverage (see
-build_install_ujson.sh), and the Python fuzzer should be executed under ASAN.
-As an example:
-    LD_PRELOAD="/usr/lib/llvm-9/lib/clang/9.0.1/lib/linux/libclang_rt.asan-x86_64.so
-    $(python3 -c "import atheris; print(atheris.path())")" python3
-    ./json_differential_fuzzer.py -detect_leaks=0
-
-This fuzzer has found a bug with inconsistent handling of integers with
-too-high magnitude. uJSON sometimes refuses to process numbers that are too far
-from 0 with "Value is too big!" or the equivalent for values that are too
-negative. However, other times it happily processes them with two's compliment
-mod. As an example, it refuses to parse "-9223372036854775809" (the first
-integer not representable in a 64-bit signed number) with "Value is too small";
-but it will happily parse "-80888888888888888888", a significantly more negative
-number. However, it parses it as -9223372036854775808. The JSON spec
-(https://tools.ietf.org/html/rfc7159#section-6) "allows implementations to set
-limits on the range and precision of numbers accepted", so failing to parse
-values that are too big or too small is techincally fine; however,
-misinterpreting them is not.
-"""
-
-import atheris_no_libfuzzer as atheris
-import json
-import ujson
-import sys
-
-
-def ClearAllIntegers(data):
-  """Used to prevent known bug; sets all integers in data recursively to 0."""
-  if type(data) == int:
-    return 0
-  if type(data) == list:
-    for i in range(0, len(data)):
-      data[i] = ClearAllIntegers(data[i])
-  if type(data) == dict:
-    for k, v in data:
-      data[k] = ClearAllIntegers(v)
-  return data
-
-
-def TestOneInput(input_bytes):
-  fdp = atheris.FuzzedDataProvider(input_bytes)
-  original = fdp.ConsumeUnicode(sys.maxsize)
-
-  try:
-    ujson_data = ujson.loads(original)
-    json_data = json.loads(original)
-  except Exception as e:
-    # It would be interesting to enforce that if one of the libraries throws an
-    # exception, the other does too. However, uJSON accepts many invalid inputs
-    # that are uninteresting, such as "00". So, that is not done.
-    return
-
-  # Uncomment these lines to ignore the errors described in the docstring of
-  # this file.
-  # json_data = ClearAllIntegers(json_data)
-  # ujson_data = ClearAllIntegers(ujson_data)
-
-  json_dumped = json.dumps(json_data)
-  ujson_dumped = json.dumps(ujson_data)
-
-  if json_dumped != ujson_dumped:
-    raise RuntimeError(
-        "Decoding/encoding disagreement!\nInput: %s\nJSON data: %s\nuJSON data: %s\nJSON-dumped: %s\nuJSON-dumped: %s\n"
-        % (original, json_data, ujson_data, json_dumped, ujson_dumped))
-
-
-def main():
-  atheris.Setup(sys.argv, TestOneInput)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/ujson/project.yaml b/projects/ujson/project.yaml
deleted file mode 100644
index 525c358..0000000
--- a/projects/ujson/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/ultrajson/ultrajson"
-language: python
-# TODO(mbarbella): Reach out to project maintainers for a better primary contact.
-primary_contact: "mbarbella@google.com"
-auto_ccs:
-  - "ipudney@google.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
diff --git a/projects/ujson/ujson_fuzzer.py b/projects/ujson/ujson_fuzzer.py
deleted file mode 100755
index c785ec6..0000000
--- a/projects/ujson/ujson_fuzzer.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""This fuzzer is an example of native extension fuzzing with coverage.
-
-This requires that the fuzzer be built with coverage:
-see build_install_ujson.sh.
-The fuzzer should then be executed under ASAN.
-
-As an example, this is the run command under the author's machine:
-    LD_PRELOAD="/usr/lib/llvm-9/lib/clang/9.0.1/lib/linux/libclang_rt.asan-x86_64.so
-    $(python3 -c "import atheris; print(atheris.path())")" python3
-    ./ujson_fuzzer.py -detect_leaks=0
-
-This fuzzer is provided mainly as an example for how to deal with native
-coverage.
-"""
-
-import sys
-import atheris_no_libfuzzer as atheris
-import ujson
-
-
-def TestOneInput(input_bytes):
-  fdp = atheris.FuzzedDataProvider(input_bytes)
-  original = fdp.ConsumeUnicode(sys.maxsize)
-
-  try:
-    ujson_data = ujson.loads(original)
-  except ValueError:
-    return
-
-  # We make sure there's no error in encoding, but we don't actually compare
-  # (encoded == original) because it's not entirely preserving. For example,
-  # it does not preserve whitespace.
-  encoded = ujson.dumps(ujson_data)
-  del encoded
-
-
-def main():
-  # Since everything interesting in this fuzzer is in native code, we can
-  # disable Python coverage to improve performance and reduce coverage noise.
-  atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=False)
-  atheris.Fuzz()
-
-
-if __name__ == "__main__":
-  main()
diff --git a/projects/unbound/Dockerfile b/projects/unbound/Dockerfile
index fd9223d..0bd7743 100644
--- a/projects/unbound/Dockerfile
+++ b/projects/unbound/Dockerfile
@@ -14,6 +14,7 @@
 #
 ################################################################################
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jsha@letsencrypt.org
 RUN apt-get update
 RUN apt-get install -y make libtool libssl-dev libexpat-dev wget
 RUN git clone --depth=1 https://github.com/NLnetLabs/unbound unbound
diff --git a/projects/unbound/build.sh b/projects/unbound/build.sh
index 697e457..68cda38 100755
--- a/projects/unbound/build.sh
+++ b/projects/unbound/build.sh
@@ -30,7 +30,12 @@
 # get the LIBOBJS with the replaced functions needed for linking.
 LIBOBJS=`make --eval 'echolibobjs: ; @echo "$(LIBOBJS)"' echolibobjs`
 
-OBJECTS_TO_LINK="dns.o infra.o rrset.o dname.o \
+$CXX $CXXFLAGS -std=c++11 \
+  $LIB_FUZZING_ENGINE \
+  -lssl -lcrypto -pthread \
+  -o $OUT/parse_packet_fuzzer \
+  parse_packet_fuzzer.o \
+  dns.o infra.o rrset.o dname.o \
   msgencode.o as112.o msgparse.o msgreply.o packed_rrset.o iterator.o \
   iter_delegpt.o iter_donotq.o iter_fwd.o iter_hints.o iter_priv.o \
   iter_resptype.o iter_scrub.o iter_utils.o localzone.o mesh.o modstack.o view.o \
@@ -39,17 +44,10 @@
   rbtree.o regional.o rtt.o dnstree.o lookup3.o lruhash.o slabhash.o \
   tcp_conn_limit.o timehist.o tube.o winsock_event.o autotrust.o val_anchor.o \
   validator.o val_kcache.o val_kentry.o val_neg.o val_nsec3.o val_nsec.o \
-  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o authzone.o \
+  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o cachedb.o redis.o authzone.o \
   respip.o netevent.o listen_dnsport.o outside_network.o ub_event.o keyraw.o \
   sbuffer.o wire2str.o parse.o parseutil.o rrdef.o str2wire.o libunbound.o \
-  libworker.o context.o rpz.o"
-
-$CXX $CXXFLAGS -std=c++11 \
-  $LIB_FUZZING_ENGINE \
-  -lssl -lcrypto -pthread \
-  -o $OUT/parse_packet_fuzzer \
-  parse_packet_fuzzer.o \
-  $OBJECTS_TO_LINK \
+  libworker.o context.o \
   $LIBOBJS
 
 $CXX $CXXFLAGS -std=c++11 \
@@ -57,7 +55,19 @@
   -lssl -lcrypto -pthread \
   -o $OUT/fuzz_1_fuzzer \
   fuzz_1.o \
-  $OBJECTS_TO_LINK \
+  dns.o infra.o rrset.o dname.o \
+  msgencode.o as112.o msgparse.o msgreply.o packed_rrset.o iterator.o \
+  iter_delegpt.o iter_donotq.o iter_fwd.o iter_hints.o iter_priv.o \
+  iter_resptype.o iter_scrub.o iter_utils.o localzone.o mesh.o modstack.o view.o \
+  outbound_list.o alloc.o config_file.o configlexer.o configparser.o \
+  fptr_wlist.o edns.o locks.o log.o mini_event.o module.o net_help.o random.o \
+  rbtree.o regional.o rtt.o dnstree.o lookup3.o lruhash.o slabhash.o \
+  tcp_conn_limit.o timehist.o tube.o winsock_event.o autotrust.o val_anchor.o \
+  validator.o val_kcache.o val_kentry.o val_neg.o val_nsec3.o val_nsec.o \
+  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o cachedb.o redis.o authzone.o \
+  respip.o netevent.o listen_dnsport.o outside_network.o ub_event.o keyraw.o \
+  sbuffer.o wire2str.o parse.o parseutil.o rrdef.o str2wire.o libunbound.o \
+  libworker.o context.o \
   $LIBOBJS
 
 $CXX $CXXFLAGS -std=c++11 \
@@ -65,7 +75,19 @@
   -lssl -lcrypto -pthread \
   -o $OUT/fuzz_2_fuzzer \
   fuzz_2.o \
-  $OBJECTS_TO_LINK \
+  dns.o infra.o rrset.o dname.o \
+  msgencode.o as112.o msgparse.o msgreply.o packed_rrset.o iterator.o \
+  iter_delegpt.o iter_donotq.o iter_fwd.o iter_hints.o iter_priv.o \
+  iter_resptype.o iter_scrub.o iter_utils.o localzone.o mesh.o modstack.o view.o \
+  outbound_list.o alloc.o config_file.o configlexer.o configparser.o \
+  fptr_wlist.o edns.o locks.o log.o mini_event.o module.o net_help.o random.o \
+  rbtree.o regional.o rtt.o dnstree.o lookup3.o lruhash.o slabhash.o \
+  tcp_conn_limit.o timehist.o tube.o winsock_event.o autotrust.o val_anchor.o \
+  validator.o val_kcache.o val_kentry.o val_neg.o val_nsec3.o val_nsec.o \
+  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o cachedb.o redis.o authzone.o \
+  respip.o netevent.o listen_dnsport.o outside_network.o ub_event.o keyraw.o \
+  sbuffer.o wire2str.o parse.o parseutil.o rrdef.o str2wire.o libunbound.o \
+  libworker.o context.o \
   $LIBOBJS
 
 $CXX $CXXFLAGS -std=c++11 \
@@ -73,7 +95,19 @@
   -lssl -lcrypto -pthread \
   -o $OUT/fuzz_3_fuzzer \
   fuzz_3.o \
-  $OBJECTS_TO_LINK \
+  dns.o infra.o rrset.o dname.o \
+  msgencode.o as112.o msgparse.o msgreply.o packed_rrset.o iterator.o \
+  iter_delegpt.o iter_donotq.o iter_fwd.o iter_hints.o iter_priv.o \
+  iter_resptype.o iter_scrub.o iter_utils.o localzone.o mesh.o modstack.o view.o \
+  outbound_list.o alloc.o config_file.o configlexer.o configparser.o \
+  fptr_wlist.o edns.o locks.o log.o mini_event.o module.o net_help.o random.o \
+  rbtree.o regional.o rtt.o dnstree.o lookup3.o lruhash.o slabhash.o \
+  tcp_conn_limit.o timehist.o tube.o winsock_event.o autotrust.o val_anchor.o \
+  validator.o val_kcache.o val_kentry.o val_neg.o val_nsec3.o val_nsec.o \
+  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o cachedb.o redis.o authzone.o \
+  respip.o netevent.o listen_dnsport.o outside_network.o ub_event.o keyraw.o \
+  sbuffer.o wire2str.o parse.o parseutil.o rrdef.o str2wire.o libunbound.o \
+  libworker.o context.o \
   $LIBOBJS
 
 $CXX $CXXFLAGS -std=c++11 \
@@ -81,7 +115,19 @@
   -lssl -lcrypto -pthread \
   -o $OUT/fuzz_4_fuzzer \
   fuzz_4.o \
-  $OBJECTS_TO_LINK \
+  dns.o infra.o rrset.o dname.o \
+  msgencode.o as112.o msgparse.o msgreply.o packed_rrset.o iterator.o \
+  iter_delegpt.o iter_donotq.o iter_fwd.o iter_hints.o iter_priv.o \
+  iter_resptype.o iter_scrub.o iter_utils.o localzone.o mesh.o modstack.o view.o \
+  outbound_list.o alloc.o config_file.o configlexer.o configparser.o \
+  fptr_wlist.o edns.o locks.o log.o mini_event.o module.o net_help.o random.o \
+  rbtree.o regional.o rtt.o dnstree.o lookup3.o lruhash.o slabhash.o \
+  tcp_conn_limit.o timehist.o tube.o winsock_event.o autotrust.o val_anchor.o \
+  validator.o val_kcache.o val_kentry.o val_neg.o val_nsec3.o val_nsec.o \
+  val_secalgo.o val_sigcrypt.o val_utils.o dns64.o cachedb.o redis.o authzone.o \
+  respip.o netevent.o listen_dnsport.o outside_network.o ub_event.o keyraw.o \
+  sbuffer.o wire2str.o parse.o parseutil.o rrdef.o str2wire.o libunbound.o \
+  libworker.o context.o \
   $LIBOBJS
 
 wget --directory-prefix $OUT https://github.com/jsha/unbound/raw/fuzzing-corpora/testdata/parse_packet_fuzzer_seed_corpus.zip
diff --git a/projects/unbound/project.yaml b/projects/unbound/project.yaml
index 7ecaa1e..f45f481 100644
--- a/projects/unbound/project.yaml
+++ b/projects/unbound/project.yaml
@@ -1,7 +1,2 @@
 homepage: "https://nlnetlabs.nl/projects/unbound/about/"
-language: c
 primary_contact: "wouter@nlnetlabs.nl"
-auto_ccs:
-  - "ralph@nlnetlabs.nl"
-  - "george@nlnetlabs.nl"
-main_repo: 'https://github.com/NLnetLabs/unbound'
diff --git a/projects/unicorn/Dockerfile b/projects/unicorn/Dockerfile
index 1ae7e56..68a4955 100644
--- a/projects/unicorn/Dockerfile
+++ b/projects/unicorn/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER unicorn.emu@gmail.com
 RUN apt-get update && apt-get install -y make python
 RUN git clone --depth 1 https://github.com/unicorn-engine/unicorn.git
 WORKDIR $SRC
diff --git a/projects/unicorn/project.yaml b/projects/unicorn/project.yaml
index 85a546f..adf6276 100644
--- a/projects/unicorn/project.yaml
+++ b/projects/unicorn/project.yaml
@@ -1,18 +1,10 @@
 homepage: "https://www.unicorn-engine.org"
-language: c++
 primary_contact: "unicorn.emu@gmail.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-  - "ch980501427@gmail.com"
-  - "stalkr@stalkr.net"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
+auto_ccs :
+- "p.antoine@catenacyber.fr"
+- "ch980501427@gmail.com"
+
 sanitizers:
-  - address
-  - undefined
-  - memory
-  - dataflow
-main_repo: 'https://github.com/unicorn-engine/unicorn.git'
+- address
+- memory
+- undefined
diff --git a/projects/unrar/Dockerfile b/projects/unrar/Dockerfile
index 8ff4b95..cc61b26 100644
--- a/projects/unrar/Dockerfile
+++ b/projects/unrar/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER vakh@chromium.org
 RUN apt-get update && apt-get install -y make build-essential
 
 RUN git clone -b oss_fuzz --depth 1 https://github.com/aawc/unrar.git
diff --git a/projects/unrar/build.sh b/projects/unrar/build.sh
index 9469682..d597942 100644
--- a/projects/unrar/build.sh
+++ b/projects/unrar/build.sh
@@ -19,10 +19,6 @@
 UNRAR_WNOS="-Wno-logical-op-parentheses -Wno-switch -Wno-dangling-else"
 UNRAR_SRC_DIR="$SRC/unrar"
 
-# See: https://crbug.com/oss-fuzz/19333#c3
-CFLAGS="$CFLAGS -fno-sanitize=enum"
-CXXFLAGS="$CXXFLAGS -fno-sanitize=enum"
-
 # build 'lib'. This builds libunrar.a and libunrar.so
 # -fPIC is required for successful compilation.
 make CXX=$CXX CXXFLAGS="$CXXFLAGS -fPIC $UNRAR_DEFINES $UNRAR_WNOS" \
diff --git a/projects/unrar/project.yaml b/projects/unrar/project.yaml
index 242c91f..2b94ca5 100644
--- a/projects/unrar/project.yaml
+++ b/projects/unrar/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.rarlab.com/"
-language: c++
 primary_contact: "roshal@rarlab.com"
 auto_ccs:
   - "vakh@chromium.org"
@@ -7,4 +6,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/aawc/unrar.git'
diff --git a/projects/upb/Dockerfile b/projects/upb/Dockerfile
deleted file mode 100644
index 7e157a1..0000000
--- a/projects/upb/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y cmake
-RUN git clone --depth 1 https://github.com/protocolbuffers/upb.git upb
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/upb/build.sh b/projects/upb/build.sh
deleted file mode 100755
index 3f5bebf..0000000
--- a/projects/upb/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-cd upb/cmake
-cmake .
-make -j$(nproc)
-
-# use bazel to build instead ?
-$CC $CFLAGS -I. -I.. -o descriptor.upb.o -c google/protobuf/descriptor.upb.c
-$CXX $CXXFLAGS -DHAVE_FUZZER=1 -std=c++11 -I. -I.. -o fuzz_parsenew.o -c ../tests/file_descriptor_parsenew_fuzzer.cc
-$CXX $CXXFLAGS fuzz_parsenew.o descriptor.upb.o -o $OUT/fuzz_parsenew *.a $LIB_FUZZING_ENGINE
-
-# builds corpus
-cd ..
-find . -name "*.proto" | xargs zip -r $OUT/fuzz_parsenew_seed_corpus.zip
diff --git a/projects/upb/project.yaml b/projects/upb/project.yaml
deleted file mode 100644
index b67152d..0000000
--- a/projects/upb/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/protocolbuffers/upb"
-language: c++
-primary_contact: "haberman@google.com"
-auto_ccs :
-- "p.antoine@catenacyber.fr"
-
-sanitizers:
-- address
-- memory
-- undefined
-main_repo: 'https://github.com/protocolbuffers/upb.git'
diff --git a/projects/uriparser/Dockerfile b/projects/uriparser/Dockerfile
deleted file mode 100644
index 0f6ba06..0000000
--- a/projects/uriparser/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake wget sudo libtool cmake
-RUN git clone --depth 1 https://github.com/uriparser/uriparser uriparser
-WORKDIR uriparser
-COPY build.sh *.cc $SRC/
diff --git a/projects/uriparser/build.sh b/projects/uriparser/build.sh
deleted file mode 100755
index 3b7054d..0000000
--- a/projects/uriparser/build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# build project
-mkdir -p build
-cd build
-cmake -DCMAKE_BUILD_TYPE=Release -DURIPARSER_BUILD_DOCS:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF -DURIPARSER_BUILD_TESTS:BOOL=OFF ..
-make
-make install
-
-# build fuzzers
-for fuzzers in $(find $SRC -name '*_fuzzer.cc'); do
-  fuzz_basename=$(basename -s .cc $fuzzers)
-  $CXX $CXXFLAGS -std=c++11 -I. \
-  $fuzzers $LIB_FUZZING_ENGINE ./liburiparser.a  \
-  -o $OUT/$fuzz_basename
-done
diff --git a/projects/uriparser/project.yaml b/projects/uriparser/project.yaml
deleted file mode 100644
index 9ca2573..0000000
--- a/projects/uriparser/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "https://github.com/uriparser/uriparser"
-language: c++
-primary_contact: "webmaster@hartwork.org"
-sanitizers:
- - address
- - memory
- - undefined
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/uriparser/uriparser'
diff --git a/projects/uriparser/uri_dissect_query_malloc_fuzzer.cc b/projects/uriparser/uri_dissect_query_malloc_fuzzer.cc
deleted file mode 100644
index 3714f85..0000000
--- a/projects/uriparser/uri_dissect_query_malloc_fuzzer.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Fuzz UriQuery.c:
-//   uriDissectQueryMallocA
-//   uriComposeQueryA
-
-#include <cstddef>
-#include <cstdint>
-#include <string>
-#include <utility>
-#include <vector>
-
-using std::string;
-#include "uriparser/include/uriparser/Uri.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  const string query(reinterpret_cast<const char *>(data), size);
-
-  UriQueryListA *query_list = nullptr;
-  int item_count = -1;
-
-  const char *query_start = query.c_str();
-  const char *query_end = query_start + size;
-
-  // Break a query like "a=b&2=3" into key/value pairs.
-  int result =
-      uriDissectQueryMallocA(&query_list, &item_count, query_start, query_end);
-
-  if (query_list == nullptr || result != URI_SUCCESS || item_count < 0)
-    return 0;
-
-  int chars_required = 0;
-  if (uriComposeQueryCharsRequiredA(query_list, &chars_required) != URI_SUCCESS)
-    return 0;
-
-  if (!chars_required) {
-    uriFreeQueryListA(query_list);
-    return 0;
-  }
-
-  std::vector<char> buf(chars_required, 0);
-  int written = -1;
-  // Reverse the process of uriDissectQueryMallocA.
-  result = uriComposeQueryA(buf.data(), query_list, chars_required, &written);
-
-  uriFreeQueryListA(query_list);
-  return 0;
-}
diff --git a/projects/uriparser/uri_free_fuzzer.cc b/projects/uriparser/uri_free_fuzzer.cc
deleted file mode 100644
index 1ed647a..0000000
--- a/projects/uriparser/uri_free_fuzzer.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstdint>
-#include <string>
-
-#include "uriparser/include/uriparser/Uri.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-  std::basic_string<char> fuzz_uri(reinterpret_cast<const char *>(data), size);
-  UriParserStateA state;
-  UriUriA uriA;
-  state.uri = &uriA;
-  uriParseUriA(&state, fuzz_uri.c_str());
-  uriFreeUriMembersA(&uriA);
-  return 0;
-}
diff --git a/projects/uriparser/uri_parse_fuzzer.cc b/projects/uriparser/uri_parse_fuzzer.cc
deleted file mode 100644
index 4eca669..0000000
--- a/projects/uriparser/uri_parse_fuzzer.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstring>
-#include <string>
-#include <vector>
-#include <fuzzer/FuzzedDataProvider.h>
-
-using std::string;
-#include "uriparser/include/uriparser/Uri.h"
-#include "uriparser/include/uriparser/UriIp4.h"
-
-class UriParserA {
- public:
-  UriParserA() { memset((void *)&uri_, 0, sizeof(uri_)); }
-  ~UriParserA() { uriFreeUriMembersA(&uri_); }
-
-  UriUriA *get_mutable_uri() { return &uri_; }
-  UriUriA *get_uri() const { return const_cast<UriUriA *>(&uri_); }
-
- private:
-  UriUriA uri_;
-};
-
-void Escapes(const string &uri) {
-  const char *first = uri.c_str();
-  // A new line char takes 6 char to encode.
-  // Use a vector to make a C string.
-  std::vector<char> buf1(uri.size() * 6 + 1);
-  std::vector<char> buf2(uri.size() * 3 + 1);
-
-  char *result;
-  result = uriEscapeA(first, &buf1[0], URI_TRUE, URI_TRUE);
-  result = uriEscapeA(first, &buf1[0], URI_FALSE, URI_TRUE);
-  if (buf1.data()) uriUnescapeInPlaceA(&buf1[0]);
-
-  result = uriEscapeA(first, &buf2[0], URI_TRUE, URI_FALSE);
-  result = uriEscapeA(first, &buf2[0], URI_FALSE, URI_FALSE);
-  if (buf2.data()) uriUnescapeInPlaceA(&buf2[0]);
-}
-
-void FileNames(const string &uri) {
-  const size_t size = 8 + 3 * uri.size() + 1;
-  std::vector<char> buf(size);
-
-  uriUnixFilenameToUriStringA(uri.c_str(), &buf[0]);
-  uriWindowsFilenameToUriStringA(uri.c_str(), &buf[0]);
-  uriUriStringToUnixFilenameA(uri.c_str(), &buf[0]);
-  uriUriStringToWindowsFilenameA(uri.c_str(), &buf[0]);
-}
-
-int uriParseIpFourAddressA(unsigned char *octetOutput, const char *first,
-                           const char *afterLast);
-
-void Ipv4(const string &s) {
-  const char *cstr = s.c_str();
-  unsigned char result[4] = {};
-  uriParseIpFourAddressA(result, cstr, &cstr[s.size()]);
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
-  FuzzedDataProvider stream(data, size);
-  bool domainRelative = stream.ConsumeBool();
-  size_t uriSize = stream.remaining_bytes() / 2;
-
-  const string uri1 = stream.ConsumeBytesAsString(uriSize);
-  const string uri2 = stream.ConsumeRemainingBytesAsString();
-
-  Escapes(uri1);
-  Escapes(uri2);
-
-  FileNames(uri1);
-  FileNames(uri2);
-
-  Ipv4(uri1);
-  Ipv4(uri2);
-
-  UriParserA parser1;
-  UriParserStateA state1;
-  state1.uri = parser1.get_mutable_uri();
-  if (uriParseUriA(&state1, uri1.c_str()) != URI_SUCCESS)
-    return 0;
-
-  char buf[1024 * 8] = {0};
-  int written = 0;
-  uriToStringA(buf, state1.uri, sizeof(buf), &written);
-
-  UriParserA parser2;
-  UriParserStateA state2;
-  state2.uri = parser2.get_mutable_uri();
-  if (uriParseUriA(&state2, uri2.c_str()) != URI_SUCCESS)
-    return 0;
-
-  uriEqualsUriA(state1.uri, state2.uri);
-
-  uriNormalizeSyntaxA(state1.uri);
-
-  UriUriA absUri;
-  uriAddBaseUriA(&absUri, state1.uri, state2.uri);
-  uriFreeUriMembersA(&absUri);
-
-  UriUriA relUri;
-  uriRemoveBaseUriA(&relUri, state1.uri, state2.uri, domainRelative);
-  uriFreeUriMembersA(&relUri);
-
-  return 0;
-}
diff --git a/projects/urllib3/Dockerfile b/projects/urllib3/Dockerfile
deleted file mode 100644
index 799b8b9..0000000
--- a/projects/urllib3/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/urllib3/urllib3
-
-COPY build.sh $SRC/
-COPY fuzz_* $SRC/
-
-WORKDIR $SRC/urllib3
diff --git a/projects/urllib3/build.sh b/projects/urllib3/build.sh
deleted file mode 100644
index 66f6419..0000000
--- a/projects/urllib3/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-python3 setup.py install
-
-# Build fuzzers in $OUT.
-for fuzzer in $(find $SRC -name 'fuzz_*.py'); do
-  fuzzer_basename=$(basename -s .py $fuzzer)
-  fuzzer_package=${fuzzer_basename}.pkg
-  pyinstaller --distpath $OUT --onefile --name $fuzzer_package $fuzzer
-
-  # Create execution wrapper.
-  echo "#!/bin/sh
-# LLVMFuzzerTestOneInput for fuzzer detection.
-this_dir=\$(dirname \"\$0\")
-LD_PRELOAD=\$this_dir/sanitizer_with_fuzzer.so \
-ASAN_OPTIONS=\$ASAN_OPTIONS:symbolize=1:external_symbolizer_path=\$this_dir/llvm-symbolizer:detect_leaks=0 \
-\$this_dir/$fuzzer_package \$@" > $OUT/$fuzzer_basename
-  chmod u+x $OUT/$fuzzer_basename
-done
diff --git a/projects/urllib3/fuzz_urlparse.py b/projects/urllib3/fuzz_urlparse.py
deleted file mode 100644
index f2fcd9b..0000000
--- a/projects/urllib3/fuzz_urlparse.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/python3
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os
-import sys
-import atheris
-import urllib3
-
-def TestOneInput(data):
-    fdp = atheris.FuzzedDataProvider(data)
-    original = fdp.ConsumeUnicode(sys.maxsize)
-
-    try:
-        urllib3.util.parse_url(original)
-    except urllib3.exceptions.LocationParseError:
-        None
-    return
-
-def main():
-    atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
-    atheris.Fuzz()
-
-if __name__ == "__main__":
-    main()
-
diff --git a/projects/urllib3/project.yaml b/projects/urllib3/project.yaml
deleted file mode 100644
index 76130de..0000000
--- a/projects/urllib3/project.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-homepage: "https://github.com/urllib3/urllib3"
-language: python
-primary_contact: "sethmichaellarson@gmail.com"
-auto_ccs:
-  - "quentin.pradet@gmail.com"
-  - "david@adalogics.com"
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-  - undefined
-main_repo: 'https://github.com/urllib3/urllib3'
diff --git a/projects/usbguard/Dockerfile b/projects/usbguard/Dockerfile
index 4b1759c..b3e362c 100644
--- a/projects/usbguard/Dockerfile
+++ b/projects/usbguard/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER allenwebb@google.com
 
 RUN apt-get update && apt-get install -y \
   make \
diff --git a/projects/usbguard/project.yaml b/projects/usbguard/project.yaml
index a372cd3..902bd0d 100644
--- a/projects/usbguard/project.yaml
+++ b/projects/usbguard/project.yaml
@@ -1,12 +1,8 @@
 homepage: "https://usbguard.github.io/"
-language: c++
-primary_contact: "rsroka@redhat.com"
+primary_contact: "dkopecek@redhat.com"
 sanitizers:
  - address
  - undefined
  - memory
 auto_ccs:
- - "alakatos@redhat.com"
  - "allenwebb@google.com"
- - "zfridric@redhat.com"
-main_repo: "https://github.com/USBGuard/usbguard"
diff --git a/projects/usrsctp/Dockerfile b/projects/usrsctp/Dockerfile
index 61870ea..0f98a60 100644
--- a/projects/usrsctp/Dockerfile
+++ b/projects/usrsctp/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER weinrank@fh-muenster.de
 RUN apt-get update && apt-get install -y make cmake
-RUN git clone --depth 1 https://github.com/sctplab/usrsctp usrsctp
+RUN git clone --depth 1 --branch oss-fuzz https://github.com/weinrank/usrsctp usrsctp
 WORKDIR usrsctp
 COPY build.sh $SRC/
diff --git a/projects/usrsctp/build.sh b/projects/usrsctp/build.sh
index ddac900..f7bcd18 100755
--- a/projects/usrsctp/build.sh
+++ b/projects/usrsctp/build.sh
@@ -15,25 +15,17 @@
 #
 ################################################################################
 
-cmake -Dsctp_build_programs=0 -Dsctp_debug=0 -Dsctp_invariants=1 -Dsctp_build_fuzzer=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo .
+cmake -Dsctp_build_programs=0 -Dsctp_debug=0 -Dsctp_invariants=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo .
 make -j$(nproc)
 cd fuzzer
 
-TARGETS="fuzzer_connect fuzzer_listen fuzzer_fragment"
+TARGETS="fuzzer_connect fuzzer_listen"
 
-CORPUS="CORPUS_CONNECT CORPUS_LISTEN CORPUS_FRAGMENT"
-
-while [ -n "$TARGETS" ]
-do
-        target=`echo "$TARGETS" | cut -d ' ' -f 1`
-        TARGETS=`echo "$TARGETS" | sed 's/[^ ]* *\(.*\)$/\1/'`
-        corpus=`echo "$CORPUS" | cut -d ' ' -f 1`
-        CORPUS=`echo "$CORPUS" | sed 's/[^ ]* *\(.*\)$/\1/'`
-
+for target in $TARGETS; do
         $CC $CFLAGS -DFUZZING_STAGE=0 -I . -I ../usrsctplib/ -c ${target}.c -o $OUT/${target}.o
         $CXX $CXXFLAGS -o $OUT/${target} $OUT/${target}.o $LIB_FUZZING_ENGINE ../usrsctplib/libusrsctp.a
         rm -f $OUT/${target}.o
-
-        zip -jr ${target}_seed_corpus.zip ${corpus}/
-        cp ${target}_seed_corpus.zip $OUT/
 done
+
+zip -jr fuzzer_connect_seed_corpus.zip CORPUS_CONNECT/
+cp fuzzer_connect_seed_corpus.zip $OUT/
diff --git a/projects/usrsctp/project.yaml b/projects/usrsctp/project.yaml
index 54fb494..378bfe9 100644
--- a/projects/usrsctp/project.yaml
+++ b/projects/usrsctp/project.yaml
@@ -1,18 +1,9 @@
 homepage: "https://github.com/sctplab/usrsctp"
-language: c++
 primary_contact: "weinrank@fh-muenster.de"
 auto_ccs:
   - "t00fcxen@googlemail.com"
   - "markwo@google.com"
-  - "natashenka@google.com"
-  - "yuquanw@google.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
-  - undefined
   - memory
-main_repo: 'https://github.com/sctplab/usrsctp'
+  - undefined
diff --git a/projects/utf8proc/Dockerfile b/projects/utf8proc/Dockerfile
deleted file mode 100644
index b471b00..0000000
--- a/projects/utf8proc/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && \
-    apt-get install -y wget tar
-
-RUN git clone --depth 1 https://github.com/JuliaStrings/utf8proc.git
-
-RUN wget -O $SRC/utf8proc/test/NormalizationTest.txt https://www.unicode.org/Public/13.0.0/ucd/NormalizationTest.txt
-RUN wget -O $SRC/utf8proc/test/GraphemeBreakTest.txt https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest.txt
-
-WORKDIR $SRC/utf8proc/
-COPY build.sh $SRC/
diff --git a/projects/utf8proc/build.sh b/projects/utf8proc/build.sh
deleted file mode 100755
index 4d8e85b..0000000
--- a/projects/utf8proc/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-# Run the OSS-Fuzz script in the project
-$SRC/utf8proc/test/ossfuzz.sh
diff --git a/projects/utf8proc/project.yaml b/projects/utf8proc/project.yaml
deleted file mode 100644
index c35bcea..0000000
--- a/projects/utf8proc/project.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-homepage: "http://juliastrings.github.io/utf8proc/"
-language: c
-primary_contact: "stevenj@alum.mit.edu"
-auto_ccs:
-  - "randy440088@gmail.com"
-sanitizers:
-  - address
-  - memory
-  - undefined 
-main_repo: 'https://github.com/JuliaStrings/utf8proc'
-
diff --git a/projects/util-linux/Dockerfile b/projects/util-linux/Dockerfile
deleted file mode 100644
index 16ea63d..0000000
--- a/projects/util-linux/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y autoconf automake autopoint bison libtool pkg-config
-RUN git clone --depth 1 https://github.com/karelzak/util-linux
-WORKDIR util-linux
-COPY build.sh $SRC/
diff --git a/projects/util-linux/build.sh b/projects/util-linux/build.sh
deleted file mode 100755
index 3c4195c..0000000
--- a/projects/util-linux/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-./tools/oss-fuzz.sh
diff --git a/projects/util-linux/project.yaml b/projects/util-linux/project.yaml
index fb14609..5c8395e 100644
--- a/projects/util-linux/project.yaml
+++ b/projects/util-linux/project.yaml
@@ -1,17 +1,4 @@
 homepage: "https://github.com/karelzak/util-linux"
 primary_contact: "ruediger.meier@ga-group.nl"
-language: c
-builds_per_day: 4
 auto_ccs:
   - "kzak@redhat.com"
-  - "evvers@ya.ru"
-  - "evverx@gmail.com"
-  - "kerolasa@gmail.com"
-architectures:
-  - x86_64
-  - i386
-sanitizers:
-  - address
-  - undefined
-  - memory
-main_repo: 'https://github.com/karelzak/util-linux'
diff --git a/projects/uwebsockets/Dockerfile b/projects/uwebsockets/Dockerfile
index e8977c3..b51f3cb 100644
--- a/projects/uwebsockets/Dockerfile
+++ b/projects/uwebsockets/Dockerfile
@@ -15,6 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER alexhultman@gmail.com
+RUN apt-get update && apt-get install -y libz-dev
 RUN git clone --recursive https://github.com/uNetworking/uWebSockets.git uWebSockets
 WORKDIR uWebSockets
 COPY build.sh $SRC/
diff --git a/projects/uwebsockets/project.yaml b/projects/uwebsockets/project.yaml
index e46ea9a..b785391 100644
--- a/projects/uwebsockets/project.yaml
+++ b/projects/uwebsockets/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://github.com/uNetworking/uWebSockets"
-language: c++
 primary_contact: "alexhultman@gmail.com"
-builds_per_day: 4
 sanitizers:
   - address
-  - memory
+  - memory:
+     experimental: True
   - undefined
-main_repo: 'https://github.com/uNetworking/uWebSockets.git'
diff --git a/projects/valijson/Dockerfile b/projects/valijson/Dockerfile
deleted file mode 100644
index 2f17c03..0000000
--- a/projects/valijson/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool \
-  pkg-config cmake libcurlpp-dev libcurl4-openssl-dev
-RUN git clone --depth 1 https://github.com/tristanpenman/valijson
-WORKDIR valijson
-RUN cp $SRC/valijson/tests/fuzzing/oss-fuzz-build.sh $SRC/build.sh
diff --git a/projects/valijson/project.yaml b/projects/valijson/project.yaml
deleted file mode 100644
index 28ee208..0000000
--- a/projects/valijson/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/tristanpenman/valijson"
-main_repo: "https://github.com/tristanpenman/valijson"
-language: c++
-primary_contact: "tristan@tristanpenman.com"
-auto_ccs:
-  - "Adam@adalogics.com"
-sanitizers:
-  - address
-  - undefined
-  - memory
diff --git a/projects/vitess/Dockerfile b/projects/vitess/Dockerfile
deleted file mode 100644
index 8f066c8..0000000
--- a/projects/vitess/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/vitessio/vitess
-COPY build.sh $SRC/
-WORKDIR $SRC/vitess
diff --git a/projects/vitess/build.sh b/projects/vitess/build.sh
deleted file mode 100755
index 8a085f4..0000000
--- a/projects/vitess/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-chmod +x $SRC/vitess/go/test/fuzzing/oss_fuzz_build.sh
-$SRC/vitess/go/test/fuzzing/oss_fuzz_build.sh
diff --git a/projects/vitess/project.yaml b/projects/vitess/project.yaml
deleted file mode 100644
index 82d0529..0000000
--- a/projects/vitess/project.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-homepage: "https://github.com/vitessio/vitess" 
-primary_contact: "andres@planetscale.com"
-auto_ccs :
-  - "adam@adalogics.com"
-  - "team-ps-vitess@planetscale.com"
-  - "manan@planetscale.com"
-  - "harshit@planetscale.com"
-  - "florent@planetscale.com"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/vitessio/vitess'
diff --git a/projects/vorbis/Dockerfile b/projects/vorbis/Dockerfile
index 80523ce..464555d 100644
--- a/projects/vorbis/Dockerfile
+++ b/projects/vorbis/Dockerfile
@@ -15,13 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER paul.l.kehrer@mail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config wget
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/ogg.git
-RUN git clone --depth 1 https://gitlab.xiph.org/xiph/vorbis.git
+RUN git clone https://git.xiph.org/ogg.git
+RUN git clone https://git.xiph.org/vorbis.git
 RUN svn export https://github.com/mozillasecurity/fuzzdata.git/trunk/samples/ogg decode_corpus
 RUN svn export --force https://github.com/mozillasecurity/fuzzdata.git/trunk/samples/vorbis decode_corpus
-# TODO: remove `people.xiph.org` lines once upstream build script is updated
-RUN mkdir people.xiph.org/
-RUN touch people.xiph.org/dummy.ogg
+RUN wget --cut-dirs 3 --recursive --level=1 -A ".ogg" https://people.xiph.org/~xiphmont/test-vectors/vorbis/
 WORKDIR vorbis
 COPY build.sh $SRC/
diff --git a/projects/vorbis/project.yaml b/projects/vorbis/project.yaml
index a4e2ddc..45359dc 100644
--- a/projects/vorbis/project.yaml
+++ b/projects/vorbis/project.yaml
@@ -1,19 +1,17 @@
 homepage: "https://xiph.org/vorbis/"
-language: c++
 primary_contact: "daede003@umn.edu"
 auto_ccs:
   - paul.l.kehrer@gmail.com
   - alex.gaynor@gmail.com
 vendor_ccs:
+  - cdiehl@mozilla.com
   - twsmith@mozilla.com
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
   - dataflow
   - memory
   - undefined
-main_repo: 'https://gitlab.xiph.org/xiph/vorbis.git'
diff --git a/projects/w3m/Dockerfile b/projects/w3m/Dockerfile
deleted file mode 100755
index 8106344..0000000
--- a/projects/w3m/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y libgc-dev
-RUN git clone https://github.com/tats/w3m
-
-WORKDIR $SRC
-COPY build.sh $SRC/
diff --git a/projects/w3m/build.sh b/projects/w3m/build.sh
deleted file mode 100755
index eccb30c..0000000
--- a/projects/w3m/build.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-#export CFLAGS="${CFLAGS} -"
-#export CXXFLAGS="${CXXFLAGS} -ltinfo"
-
-cd w3m
-./configure
-
-make myctype.o
-make Str.o
-make libwc
-
-cd libwc
-$CC $CFLAGS -c ../fuzz/fuzz-conv.c -o fuzz_conv.o -I../ -I./
-static_libgc=($(find /usr/lib -name "libgc.a"))
-$CXX $CXXFLAGS $LIB_FUZZING_ENGINE fuzz_conv.o -o $OUT/fuzz_conv \
-    -I./libwc  -DUSE_UNICODE -I. -I./.. -DHAVE_CONFIG_H ../Str.o ../myctype.o libwc.a ${static_libgc}
diff --git a/projects/w3m/project.yaml b/projects/w3m/project.yaml
deleted file mode 100755
index 86409e7..0000000
--- a/projects/w3m/project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-homepage: "https://tracker.debian.org/pkg/w3m"
-primary_contact: "tats@debian.org"
-language: c
-auto_ccs :
-  - "david@adalogics.com"
-main_repo: 'https://github.com/tats/w3m'
diff --git a/projects/wabt/Dockerfile b/projects/wabt/Dockerfile
index ac7efab..86caa31 100644
--- a/projects/wabt/Dockerfile
+++ b/projects/wabt/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER binji@chromium.org
 RUN apt-get update && apt-get install -y cmake libtool make python
 RUN git clone --recursive https://github.com/WebAssembly/wabt
 WORKDIR wabt
diff --git a/projects/wabt/project.yaml b/projects/wabt/project.yaml
index 934fb67..933f9f2 100644
--- a/projects/wabt/project.yaml
+++ b/projects/wabt/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/WebAssembly/wabt"
-language: c++
 primary_contact: "binji@chromium.org"
 sanitizers:
  - address
@@ -8,4 +7,3 @@
 architectures:
  - x86_64
  - i386
-main_repo: 'https://github.com/WebAssembly/wabt'
diff --git a/projects/wasmtime/Dockerfile b/projects/wasmtime/Dockerfile
index e310b36..a70765b 100644
--- a/projects/wasmtime/Dockerfile
+++ b/projects/wasmtime/Dockerfile
@@ -15,11 +15,12 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER foote@fastly.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang
 
-RUN git clone --depth 1 https://github.com/bytecodealliance/wasm-tools wasm-tools
-
-RUN git clone --depth 1 https://github.com/bytecodealliance/regalloc.rs regalloc.rs
+ENV CARGO_HOME=/rust RUSTUP_HOME=/rust/rustup PATH=$PATH:/rust/bin
+RUN curl https://sh.rustup.rs | sh -s -- -y --default-toolchain=nightly
+RUN cargo install cargo-fuzz
 
 RUN git clone --depth 1 https://github.com/bytecodealliance/wasmtime wasmtime
 WORKDIR wasmtime
@@ -27,4 +28,4 @@
 
 RUN git clone --depth 1 https://github.com/bytecodealliance/wasmtime-libfuzzer-corpus wasmtime-libfuzzer-corpus
 
-COPY build.sh default.options $SRC/
+COPY build.sh $SRC/
diff --git a/projects/wasmtime/build.sh b/projects/wasmtime/build.sh
index 80423e3..82fbaac 100755
--- a/projects/wasmtime/build.sh
+++ b/projects/wasmtime/build.sh
@@ -17,47 +17,24 @@
 
 # Note: This project creates Rust fuzz targets exclusively
 
-build() {
-  project=$1
-  shift
-  fuzzer_prefix=$1
-  shift
-  fuzz_targets=$1
-  shift
-  PROJECT_DIR=$SRC/$project
+export CUSTOM_LIBFUZZER_PATH="$LIB_FUZZING_ENGINE_DEPRECATED"
+export CUSTOM_LIBFUZZER_STD_CXX=c++
+PROJECT_DIR=$SRC/wasmtime
 
-  # ensure we get absolute paths for the coverage report
-  cd $PROJECT_DIR
-  crate_src_abspath=`cargo metadata --no-deps --format-version 1 | jq -r '.workspace_root'`
-  while read i; do
-    export RUSTFLAGS="$RUSTFLAGS --remap-path-prefix $i=$crate_src_abspath/$i"
-  done <<< "$(find . -name "*.rs" | cut -d/ -f2 | uniq)"
+# Because Rust does not support sanitizers via CFLAGS/CXXFLAGS, the environment
+# variables are overridden with values from base-images/base-clang only
 
-  cd $PROJECT_DIR/fuzz && cargo fuzz build -O --debug-assertions "$@"
+export CFLAGS="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
+export CXXFLAGS_EXTRA="-stdlib=libc++"
+export CXXFLAGS="$CFLAGS $CXXFLAGS_EXTRA"
+export RUSTFLAGS="-Cdebuginfo=1 -Cforce-frame-pointers"
 
-  FUZZ_TARGET_OUTPUT_DIR=$PROJECT_DIR/target/x86_64-unknown-linux-gnu/release
+cd $PROJECT_DIR/fuzz && cargo fuzz build -O --debug-assertions
 
-  if [ "x$fuzz_targets" = "x" ]; then
-      fuzz_targets=$PROJECT_DIR/fuzz/fuzz_targets/*.rs
-  fi
-
-  for f in $fuzz_targets; do
-      src_name=$(basename ${f%.*})
-      dst_name=$fuzzer_prefix$src_name
-      cp $FUZZ_TARGET_OUTPUT_DIR/$src_name $OUT/$dst_name
-
-      if [[ -d $SRC/wasmtime/wasmtime-libfuzzer-corpus/$dst_name/ ]]; then
-          zip -jr \
-              $OUT/${dst_name}_seed_corpus.zip \
-              $SRC/wasmtime/wasmtime-libfuzzer-corpus/$dst_name/
-      fi
-
-      cp $SRC/default.options $OUT/$dst_name.options
-  done
-}
-
-# Build with peepmatic in order to enable the related fuzz targets.
-build wasmtime "" "" --features "peepmatic-fuzzing experimental_x64"
-
-build wasm-tools wasm-tools- ""
-build regalloc.rs regalloc- bt bt
+FUZZ_TARGET_OUTPUT_DIR=$PROJECT_DIR/target/x86_64-unknown-linux-gnu/release
+for f in $SRC/wasmtime/fuzz/fuzz_targets/*.rs
+do
+    FUZZ_TARGET_NAME=$(basename ${f%.*})
+    cp $FUZZ_TARGET_OUTPUT_DIR/$FUZZ_TARGET_NAME $OUT/
+    zip -jr $OUT/${FUZZ_TARGET_NAME}_seed_corpus.zip $PROJECT_DIR/wasmtime-libfuzzer-corpus/$FUZZ_TARGET_NAME/
+done
diff --git a/projects/wasmtime/default.options b/projects/wasmtime/default.options
deleted file mode 100644
index 06422d9..0000000
--- a/projects/wasmtime/default.options
+++ /dev/null
@@ -1,4 +0,0 @@
-[asan]
-allow_user_segv_handler=1
-handle_sigill=0
-handle_segv=1
diff --git a/projects/wasmtime/project.yaml b/projects/wasmtime/project.yaml
index 01c7f46..508523f 100644
--- a/projects/wasmtime/project.yaml
+++ b/projects/wasmtime/project.yaml
@@ -1,15 +1,11 @@
 homepage: "https://wasmtime.dev/"
 primary_contact: "jonathan.foote@gmail.com"
 auto_ccs:
+  - "security@bytecodealliance.org"
   - "fitzgen@gmail.com"
   - "alex@alexcrichton.com"
-  - "till@tillschneidereit.net"
-  - "ydelendik@mozilla.com"
-  - "cfallin@gmail.com"
-  - "andrew.s.brown2@gmail.com"
 sanitizers:
   - address
 fuzzing_engines:
   - libfuzzer
 language: rust
-main_repo: 'https://github.com/bytecodealliance/wasmtime'
diff --git a/projects/wavpack/Dockerfile b/projects/wavpack/Dockerfile
index 2cee9fd..05e342c 100644
--- a/projects/wavpack/Dockerfile
+++ b/projects/wavpack/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER david@wavpack.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/dbry/WavPack.git wavpack
 RUN cp wavpack/fuzzing/build.sh $SRC
diff --git a/projects/wavpack/project.yaml b/projects/wavpack/project.yaml
index 08c9f4e..5e334e8 100644
--- a/projects/wavpack/project.yaml
+++ b/projects/wavpack/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.wavpack.com" 
-language: c++
 primary_contact: "david@wavpack.com" 
 auto_ccs:
 - dvbryant@gmail.com
@@ -8,4 +7,3 @@
 - address 
 - memory
 - undefined
-main_repo: 'https://github.com/dbry/WavPack.git'
diff --git a/projects/wget/Dockerfile b/projects/wget/Dockerfile
index ec20c7c..ecef1d4 100644
--- a/projects/wget/Dockerfile
+++ b/projects/wget/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rockdaboot@gmail.com
 RUN apt-get update && apt-get install -y \
  make \
  pkg-config \
diff --git a/projects/wget/project.yaml b/projects/wget/project.yaml
index 367bda9..8bc8205 100644
--- a/projects/wget/project.yaml
+++ b/projects/wget/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://www.gnu.org/software/wget/"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
   - "tim.ruehsen@gmx.de"
   - "darnir@gmail.com"
   - "gscrivan@redhat.com"
-main_repo: 'https://git.savannah.gnu.org/git/wget.git'
diff --git a/projects/wget2/Dockerfile b/projects/wget2/Dockerfile
index bc2451e..8ccce12 100644
--- a/projects/wget2/Dockerfile
+++ b/projects/wget2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rockdaboot@gmail.com
 RUN apt-get update && apt-get install -y \
  make \
  pkg-config \
diff --git a/projects/wget2/project.yaml b/projects/wget2/project.yaml
index 668d2db..ef3a3e5 100644
--- a/projects/wget2/project.yaml
+++ b/projects/wget2/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://gitlab.com/gnuwget/wget2"
-language: c++
 primary_contact: "rockdaboot@gmail.com"
 auto_ccs:
   - "tim.ruehsen@gmx.de"
   - "darnir@gmail.com"
   - "gscrivan@redhat.com"
   - "ajuaristi@gmx.es"
-main_repo: 'https://gitlab.com/gnuwget/wget2.git'
diff --git a/projects/wireshark/Dockerfile b/projects/wireshark/Dockerfile
index bddbf98..a531a2e 100644
--- a/projects/wireshark/Dockerfile
+++ b/projects/wireshark/Dockerfile
@@ -15,12 +15,13 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER Jakub Zawadzki <darkjames-ws@darkjames.pl>
 
 RUN apt-get update && apt-get install -y ninja-build cmake \
                        flex bison libc-ares-dev \
                        libglib2.0-dev libgcrypt20-dev
 
-RUN git clone --depth=1 https://gitlab.com/wireshark/wireshark.git
+RUN git clone --depth=1 https://code.wireshark.org/review/wireshark
 RUN git clone --depth=1 https://bitbucket.org/jwzawadzki/wireshark-fuzzdb.git
 
 WORKDIR wireshark
diff --git a/projects/wireshark/project.yaml b/projects/wireshark/project.yaml
index d4b2afe..466a69d 100644
--- a/projects/wireshark/project.yaml
+++ b/projects/wireshark/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.wireshark.org"
-language: c++
 primary_contact: "gerald@wireshark.org"
 auto_ccs:
  - "security@wireshark.org"
@@ -14,4 +13,3 @@
   - libfuzzer
   - honggfuzz
   - afl
-main_repo: 'https://gitlab.com/wireshark/wireshark'
diff --git a/projects/woff2/Dockerfile b/projects/woff2/Dockerfile
index caccff5..fa42046 100644
--- a/projects/woff2/Dockerfile
+++ b/projects/woff2/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER mmoroz@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 
 RUN git clone --depth 1 --recursive https://github.com/google/woff2
diff --git a/projects/woff2/project.yaml b/projects/woff2/project.yaml
index f8ae2c0..df78da9 100644
--- a/projects/woff2/project.yaml
+++ b/projects/woff2/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/woff2"
-language: c++
 primary_contact: "rsheeter@google.com"
 auto_ccs:
   - "grieger@google.com"
@@ -11,11 +10,7 @@
   - "jmuizelaar@mozilla.com"
   - "lsalzman@mozilla.com"
   - "twsmith@mozilla.com"
-fuzzing_engines:
-  - libfuzzer
-  - afl
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/google/woff2'
diff --git a/projects/wolfmqtt/Dockerfile b/projects/wolfmqtt/Dockerfile
deleted file mode 100644
index 8f49486..0000000
--- a/projects/wolfmqtt/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make autoconf automake libtool
-RUN git clone --depth 1 https://github.com/wolfSSL/wolfssl.git
-RUN git clone --depth 1 https://github.com/wolfSSL/wolfMQTT.git wolfmqtt
-RUN git clone --depth 1 https://github.com/guidovranken/wolfmqtt-fuzzers.git
-RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
-COPY build.sh $SRC/
diff --git a/projects/wolfmqtt/build.sh b/projects/wolfmqtt/build.sh
deleted file mode 100755
index 4a341d3..0000000
--- a/projects/wolfmqtt/build.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Build wolfSSL (dependency of wolfMQTT)
-cd $SRC/wolfssl/
-autoreconf -ivf
-if [[ $CFLAGS = *sanitize=memory* ]]
-then
-    ./configure --enable-static --disable-crypttests --disable-examples --disable-asm
-elif [[ $CFLAGS = *-m32* ]]
-then
-    ./configure --enable-static --disable-crypttests --disable-examples --disable-fastmath
-else
-    ./configure --enable-static --disable-crypttests --disable-examples
-fi
-make -j$(nproc)
-export CFLAGS="$CFLAGS -I $(realpath .)"
-export LDFLAGS="-L$(realpath src/.libs/)"
-
-# Build wolfMQTT
-cd $SRC/wolfmqtt/
-./autogen.sh
-./configure --enable-static --disable-examples --enable-mqtt5
-make -j$(nproc)
-
-$CXX $CXXFLAGS \
-    -std=c++17 \
-    -I $SRC/fuzzing-headers/include/ \
-    -I $SRC/wolfssl/ \
-    -I $SRC/wolfmqtt/ \
-    $SRC/wolfmqtt-fuzzers/fuzzer.cpp \
-    $SRC/wolfmqtt/src/.libs/libwolfmqtt.a \
-    $SRC/wolfssl/src/.libs/libwolfssl.a \
-    $LIB_FUZZING_ENGINE \
-    -o $OUT/wolfmqtt-fuzzer
diff --git a/projects/wolfmqtt/project.yaml b/projects/wolfmqtt/project.yaml
deleted file mode 100644
index c0346eb..0000000
--- a/projects/wolfmqtt/project.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-homepage: "https://www.wolfssl.com/products/wolfmqtt/"
-language: c
-primary_contact: "guidovranken@gmail.com"
-main_repo: "https://github.com/wolfSSL/wolfMQTT"
-auto_ccs:
-    - "eric@wolfssl.com"
-    - "embhorn@gmail.com"
-    - "david@wolfssl.com"
-    - "dgarske80@gmail.com"
-    - "kaleb@wolfssl.com"
-    - "kaleb.himes@gmail.com"
-sanitizers:
- - address
- - undefined
- - memory
-architectures:
-  - x86_64
-  - i386
diff --git a/projects/wolfssl/Dockerfile b/projects/wolfssl/Dockerfile
index 963f5e0..3d41948 100644
--- a/projects/wolfssl/Dockerfile
+++ b/projects/wolfssl/Dockerfile
@@ -15,16 +15,10 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER levi@wolfssl.com
 
-RUN apt-get update && apt-get install -y make autoconf automake libtool zip wget python
+RUN apt-get update && apt-get install -y make autoconf automake libtool zip
 RUN git clone https://github.com/wolfssl/wolfssl --depth 1 $SRC/wolfssl
-RUN git clone --depth 1 https://github.com/wolfSSL/wolfssh.git
-RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
-RUN git clone --depth 1 https://github.com/guidovranken/wolf-ssl-ssh-fuzzers
-RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz
-RUN git clone --depth 1 https://github.com/randombit/botan.git
-RUN git clone --depth 1 https://github.com/google/wycheproof.git
-RUN wget https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
 RUN git clone https://github.com/wolfssl/oss-fuzz-targets --depth 1 $SRC/fuzz-targets
 
 WORKDIR wolfssl
diff --git a/projects/wolfssl/build.sh b/projects/wolfssl/build.sh
index 70db453..1660612 100755
--- a/projects/wolfssl/build.sh
+++ b/projects/wolfssl/build.sh
@@ -15,215 +15,20 @@
 #
 ################################################################################
 
-if [[ $CFLAGS != *sanitize=dataflow* ]]
-then
-    WOLFCRYPT_CONFIGURE_PARAMS="--enable-static --enable-md2 --enable-md4 --enable-ripemd --enable-blake2 --enable-blake2s --enable-pwdbased --enable-scrypt --enable-hkdf --enable-cmac --enable-arc4 --enable-camellia --enable-rabbit --enable-aesccm --enable-aesctr --enable-hc128 --enable-xts --enable-des3 --enable-idea --enable-x963kdf --enable-harden --enable-aescfb --enable-aesofb --enable-aeskeywrap --enable-keygen --enable-curve25519 --enable-curve448 --enable-shake256 --disable-crypttests --disable-examples --enable-compkey --enable-ed448 --enable-ed25519 --enable-ecccustcurves --enable-xchacha --enable-cryptocb --enable-eccencrypt --enable-smallstack"
-    if [[ $CFLAGS = *sanitize=memory* ]]
-    then
-        WOLFCRYPT_CONFIGURE_PARAMS="$WOLFCRYPT_CONFIGURE_PARAMS --disable-asm"
-    fi
+# target_dir determined by Dockerfile
+target_dir="$SRC/fuzz-targets"
 
-    # Install Boost headers
-    cd $SRC/
-    tar jxf boost_1_74_0.tar.bz2
-    cd boost_1_74_0/
-    CFLAGS="" CXXFLAGS="" ./bootstrap.sh
-    CFLAGS="" CXXFLAGS="" ./b2 headers
-    cp -R boost/ /usr/include/
+# build wolfssl
+./autogen.sh
+./configure --enable-static --disable-shared --prefix=/usr CC="clang"
+make -j "$(nproc)" all
+make install
 
-    OLD_CFLAGS="$CFLAGS"
-    OLD_CXXFLAGS="$CXXFLAGS"
+# put linker arguments into the environment, appending to any existing ones
+export LDFLAGS="${LDFLAGS-""}"
+export LDLIBS="${LDLIBS-""} -lwolfssl $LIB_FUZZING_ENGINE"
 
-    # Configure Cryptofuzz
-    cp -R $SRC/cryptofuzz/ $SRC/cryptofuzz-openssl-api/
-    cd $SRC/cryptofuzz-openssl-api/
-    python gen_repository.py
-    rm extra_options.h
-    echo -n '"' >>extra_options.h
-    echo -n '--force-module=wolfCrypt-OpenSSL ' >>extra_options.h
-    echo -n '"' >>extra_options.h
-
-    # Build OpenSSL API fuzzer
-    cp -R $SRC/wolfssl/ $SRC/wolfssl-openssl-api/
-    cd $SRC/wolfssl-openssl-api/
-    autoreconf -ivf
-    CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP"
-    if [[ $CFLAGS = *-m32* ]]
-    then
-        ./configure $WOLFCRYPT_CONFIGURE_PARAMS --enable-opensslall --enable-opensslextra --disable-fastmath
-    else
-        ./configure $WOLFCRYPT_CONFIGURE_PARAMS --enable-opensslall --enable-opensslextra
-    fi
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL -DCRYPTOFUZZ_WOLFCRYPT_OPENSSL"
-    export WOLFCRYPT_LIBWOLFSSL_A_PATH="$SRC/wolfssl-openssl-api/src/.libs/libwolfssl.a"
-    export WOLFCRYPT_INCLUDE_PATH="$SRC/wolfssl-openssl-api/"
-    cd $SRC/cryptofuzz-openssl-api/modules/wolfcrypt-openssl
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-openssl-api/
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc)
-    cp cryptofuzz $OUT/cryptofuzz-openssl-api
-    CFLAGS="$OLD_CFLAGS"
-    CXXFLAGS="$OLD_CXXFLAGS"
-    unset WOLFCRYPT_LIBWOLFSSL_A_PATH
-    unset WOLFCRYPT_INCLUDE_PATH
-
-    # Configure Cryptofuzz
-    cd $SRC/cryptofuzz/
-    python gen_repository.py
-    rm extra_options.h
-    echo -n '"' >>extra_options.h
-    echo -n '--force-module=wolfCrypt ' >>extra_options.h
-    echo -n '--digests=NULL ' >>extra_options.h
-    echo -n '--operations=BignumCalc,DH_GenerateKeyPair,DH_Derive,ECC_GenerateKeyPair,ECC_PrivateToPublic,ECC_ValidatePubkey,ECDSA_Verify,ECDSA_Sign' >>extra_options.h
-    echo -n '"' >>extra_options.h
-
-    # Build Botan
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BOTAN_IS_ORACLE"
-    cd $SRC/botan
-    if [[ $CFLAGS != *-m32* ]]
-    then
-        ./configure.py --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-    else
-        ./configure.py --cpu=x86_32 --cc-bin=$CXX --cc-abi-flags="$CXXFLAGS" --disable-shared --disable-modules=locking_allocator --build-targets=static --without-documentation
-    fi
-    make -j$(nproc)
-    export LIBBOTAN_A_PATH="$SRC/botan/libbotan-3.a"
-    export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"
-
-    # Build sp-math-all fuzzer
-    cp -R $SRC/cryptofuzz/ $SRC/cryptofuzz-sp-math-all/
-    cp -R $SRC/wolfssl/ $SRC/wolfssl-sp-math-all/
-    cd $SRC/wolfssl-sp-math-all/
-    autoreconf -ivf
-    CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP"
-    ./configure $WOLFCRYPT_CONFIGURE_PARAMS --enable-sp-math-all
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL -DCRYPTOFUZZ_WOLFCRYPT -DCRYPTOFUZZ_BOTAN"
-    export WOLFCRYPT_LIBWOLFSSL_A_PATH="$SRC/wolfssl-sp-math-all/src/.libs/libwolfssl.a"
-    export WOLFCRYPT_INCLUDE_PATH="$SRC/wolfssl-sp-math-all/"
-    cd $SRC/cryptofuzz-sp-math-all/modules/wolfcrypt
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math-all/modules/botan
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math-all/
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc)
-    cp cryptofuzz $OUT/cryptofuzz-sp-math-all
-    CFLAGS="$OLD_CFLAGS"
-    CXXFLAGS="$OLD_CXXFLAGS"
-    unset WOLFCRYPT_LIBWOLFSSL_A_PATH
-    unset WOLFCRYPT_INCLUDE_PATH
-
-    # Build sp-math-all 8bit fuzzer
-    cp -R $SRC/cryptofuzz/ $SRC/cryptofuzz-sp-math-all-8bit/
-    cp -R $SRC/wolfssl/ $SRC/wolfssl-sp-math-all-8bit/
-    cd $SRC/wolfssl-sp-math-all-8bit/
-    autoreconf -ivf
-    CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP -DSP_WORD_SIZE=8"
-    ./configure $WOLFCRYPT_CONFIGURE_PARAMS --enable-sp-math-all
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL -DCRYPTOFUZZ_WOLFCRYPT -DCRYPTOFUZZ_BOTAN"
-    export WOLFCRYPT_LIBWOLFSSL_A_PATH="$SRC/wolfssl-sp-math-all-8bit/src/.libs/libwolfssl.a"
-    export WOLFCRYPT_INCLUDE_PATH="$SRC/wolfssl-sp-math-all-8bit/"
-    cd $SRC/cryptofuzz-sp-math-all-8bit/modules/wolfcrypt
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math-all-8bit/modules/botan
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math-all-8bit/
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc)
-    cp cryptofuzz $OUT/cryptofuzz-sp-math-all-8bit
-    CFLAGS="$OLD_CFLAGS"
-    CXXFLAGS="$OLD_CXXFLAGS"
-    unset WOLFCRYPT_LIBWOLFSSL_A_PATH
-    unset WOLFCRYPT_INCLUDE_PATH
-
-    # Build sp-math fuzzer
-    cp -R $SRC/cryptofuzz/ $SRC/cryptofuzz-sp-math/
-    cp -R $SRC/wolfssl/ $SRC/wolfssl-sp-math/
-    cd $SRC/wolfssl-sp-math/
-    autoreconf -ivf
-    # -DHAVE_ECC_BRAINPOOL and -DHAVE_ECC_KOBLITZ are lacking from the CFLAGS; these are not supported by SP math
-    CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP"
-    # SP math does not support custom curves, so remove that flag
-    export WOLFCRYPT_CONFIGURE_PARAMS_SP_MATH=${WOLFCRYPT_CONFIGURE_PARAMS//"--enable-ecccustcurves"/}
-    ./configure $WOLFCRYPT_CONFIGURE_PARAMS_SP_MATH --enable-sp --enable-sp-math
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL -DCRYPTOFUZZ_WOLFCRYPT -DCRYPTOFUZZ_BOTAN"
-    export WOLFCRYPT_LIBWOLFSSL_A_PATH="$SRC/wolfssl-sp-math/src/.libs/libwolfssl.a"
-    export WOLFCRYPT_INCLUDE_PATH="$SRC/wolfssl-sp-math/"
-    cd $SRC/cryptofuzz-sp-math/modules/wolfcrypt
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math/modules/botan
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-sp-math/
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc)
-    cp cryptofuzz $OUT/cryptofuzz-sp-math
-    CFLAGS="$OLD_CFLAGS"
-    CXXFLAGS="$OLD_CXXFLAGS"
-    unset WOLFCRYPT_LIBWOLFSSL_A_PATH
-    unset WOLFCRYPT_INCLUDE_PATH
-
-    # Build disable-fastmath fuzzer
-    cp -R $SRC/cryptofuzz/ $SRC/cryptofuzz-disable-fastmath/
-    cp -R $SRC/wolfssl/ $SRC/wolfssl-disable-fastmath/
-    cd $SRC/wolfssl-disable-fastmath/
-    autoreconf -ivf
-    CFLAGS="$CFLAGS -DHAVE_AES_ECB -DWOLFSSL_DES_ECB -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWOLFSSL_ECDSA_SET_K -DWOLFSSL_ECDSA_SET_K_ONE_LOOP"
-    ./configure $WOLFCRYPT_CONFIGURE_PARAMS --disable-fastmath
-    make -j$(nproc)
-    export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NO_OPENSSL -DCRYPTOFUZZ_WOLFCRYPT -DCRYPTOFUZZ_BOTAN"
-    export WOLFCRYPT_LIBWOLFSSL_A_PATH="$SRC/wolfssl-disable-fastmath/src/.libs/libwolfssl.a"
-    export WOLFCRYPT_INCLUDE_PATH="$SRC/wolfssl-disable-fastmath/"
-    cd $SRC/cryptofuzz-disable-fastmath/modules/wolfcrypt
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-disable-fastmath/modules/botan
-    make -j$(nproc)
-    cd $SRC/cryptofuzz-disable-fastmath/
-    LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make -B -j$(nproc)
-    cp cryptofuzz $OUT/cryptofuzz-disable-fastmath
-    CFLAGS="$OLD_CFLAGS"
-    CXXFLAGS="$OLD_CXXFLAGS"
-    unset WOLFCRYPT_LIBWOLFSSL_A_PATH
-    unset WOLFCRYPT_INCLUDE_PATH
-
-    # Convert Wycheproof test vectors to Cryptofuzz corpus format
-    mkdir $SRC/corpus-cryptofuzz-wycheproof/
-    find $SRC/wycheproof/testvectors/ -type f -name 'ecdsa_*' -exec $SRC/cryptofuzz-disable-fastmath/cryptofuzz --from-wycheproof={},$SRC/corpus-cryptofuzz-wycheproof/ \;
-    # Pack it
-    zip -j $SRC/cryptofuzz_wycheproof_seed_corpus.zip $SRC/corpus-cryptofuzz-wycheproof/*
-    # Use it as the seed corpus for each Cryptofuzz-based fuzzer
-    cp $SRC/cryptofuzz_wycheproof_seed_corpus.zip $OUT/cryptofuzz-sp-math-all_seed_corpus.zip
-    cp $SRC/cryptofuzz_wycheproof_seed_corpus.zip $OUT/cryptofuzz-sp-math-all-8bit_seed_corpus.zip
-    cp $SRC/cryptofuzz_wycheproof_seed_corpus.zip $OUT/cryptofuzz-sp-math_seed_corpus.zip
-    cp $SRC/cryptofuzz_wycheproof_seed_corpus.zip $OUT/cryptofuzz-disable-fastmath_seed_corpus.zip
-
-    # Build SSL/SSH fuzzers
-    NEW_SRC=$SRC/wolf-ssl-ssh-fuzzers/oss-fuzz/projects/wolf-ssl-ssh/
-    cp -R $SRC/wolfssl/ $NEW_SRC
-    cp -R $SRC/wolfssh/ $NEW_SRC
-    cp -R $SRC/fuzzing-headers/ $NEW_SRC
-    OSS_FUZZ_BUILD=1 SRC="$NEW_SRC" $NEW_SRC/build.sh
-fi
-
-if [[ $CFLAGS != *-m32* ]]
-then
-    cd $SRC/wolfssl
-
-    # target_dir determined by Dockerfile
-    target_dir="$SRC/fuzz-targets"
-
-    # build wolfssl
-    ./autogen.sh
-    ./configure --enable-static --disable-shared --prefix=/usr CC="clang"
-    make -j "$(nproc)" all
-    make install
-
-    # put linker arguments into the environment, appending to any existing ones
-    export LDFLAGS="${LDFLAGS-""}"
-    export LDLIBS="${LDLIBS-""} -lwolfssl $LIB_FUZZING_ENGINE"
-
-    # make and export targets to $OUT; environment overridding internal variables
-    cd "${target_dir}"
-    make -e all
-    make -e export prefix="$OUT"
-fi
+# make and export targets to $OUT; environment overridding internal variables
+cd "${target_dir}"
+make -e all
+make -e export prefix="$OUT"
diff --git a/projects/wolfssl/project.yaml b/projects/wolfssl/project.yaml
index a6a31a1..cc75e08 100644
--- a/projects/wolfssl/project.yaml
+++ b/projects/wolfssl/project.yaml
@@ -1,16 +1,10 @@
 homepage: "https://www.wolfssl.com/"
-language: c++
 primary_contact: "jacob@wolfssl.com"
 auto_ccs:
   - "david@wolfssl.com"
-  - "john@wolfssl.com"
-  - "john.safranek@gmail.com"
   - "kaleb@wolfssl.com"
-  - "kaleb.himes@gmail.com"
   - "levi@wolfssl.com"
   - "testing@wolfssl.com"
-  - "dgarske80@gmail.com"
-  - "guidovranken@gmail.com"
 fuzzing_engines:
   - libfuzzer
   - afl
@@ -18,10 +12,7 @@
   - dataflow
 sanitizers:
   - address
-  - memory
+  - memory:
+     experimental: True
   - undefined
   - dataflow
-architectures:
-  - x86_64
-  - i386
-main_repo: 'https://github.com/wolfssl/wolfssl'
diff --git a/projects/wpantund/Dockerfile b/projects/wpantund/Dockerfile
index c4cbe7c..2f0efba 100644
--- a/projects/wpantund/Dockerfile
+++ b/projects/wpantund/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER rquattle@google.com
 
 RUN apt-get -y update \
 	&& DEBIAN_FRONTEND=noninteractive \
diff --git a/projects/wpantund/project.yaml b/projects/wpantund/project.yaml
index 3a0e807..9c5fb57 100644
--- a/projects/wpantund/project.yaml
+++ b/projects/wpantund/project.yaml
@@ -1,7 +1,5 @@
 homepage: "https://github.com/openthread/wpantund"
-language: c++
 primary_contact: "rquattle@google.com"
 auto_ccs:
  - "abtink@google.com"
  - "wpantund-fuzz@google.com"
-main_repo: 'https://github.com/openthread/wpantund'
diff --git a/projects/wuffs/Dockerfile b/projects/wuffs/Dockerfile
index c495515..0af0c21 100644
--- a/projects/wuffs/Dockerfile
+++ b/projects/wuffs/Dockerfile
@@ -15,36 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y wget
-
-# Get Wuffs' first-party code.
-
+MAINTAINER nigeltao@golang.org
 RUN git clone --depth 1 https://github.com/google/wuffs.git
-
-# Get third-party test corpora.
-
-RUN git clone --depth 1 https://github.com/nst/JSONTestSuite.git
-
-RUN wget -O bmpsuite.zip https://entropymine.com/jason/bmpsuite/releases/bmpsuite-2.6.zip
-RUN mkdir bmpsuite_corpus
-RUN unzip -j bmpsuite.zip -d bmpsuite_corpus
-RUN rm bmpsuite.zip
-
-RUN wget -O pngsuite.tgz http://www.schaik.com/pngsuite/PngSuite-2017jul19.tgz
-RUN mkdir pngsuite_corpus
-RUN tar xf pngsuite.tgz --one-top-level=pngsuite_corpus
-RUN rm pngsuite.tgz
-
-RUN wget -O rapidjson.zip "https://github.com/guidovranken/rapidjson-fuzzers/blob/master/fuzzer_seed_corpus.zip?raw=true"
-RUN mkdir rapidjson_corpus
-RUN unzip -j rapidjson.zip -d rapidjson_corpus
-RUN rm rapidjson.zip
-
-RUN git clone --depth 1 https://github.com/minio/simdjson-fuzz
-RUN mv simdjson-fuzz/corpus/corpus simdjson_corpus
-RUN rm -rf simdjson-fuzz
-
-# Finish.
-
 WORKDIR wuffs
 COPY build.sh $SRC/
diff --git a/projects/wuffs/build.sh b/projects/wuffs/build.sh
index b8d4f53..6177a3b 100755
--- a/projects/wuffs/build.sh
+++ b/projects/wuffs/build.sh
@@ -26,30 +26,14 @@
 
   # Make the "gzip_fuzzer" binary. First compile the (C) Wuffs code, then link
   # the (C++) fuzzing library.
-  $CC $CFLAGS -c $f -o $WORK/${b}_fuzzer.o
+  $CC $CFLAGS -c -std=c99 $f -o $WORK/${b}_fuzzer.o
   $CXX $CXXFLAGS $WORK/${b}_fuzzer.o -o $OUT/${b}_fuzzer $LIB_FUZZING_ENGINE
 
   # Make the optional "gzip_fuzzer_seed_corpus.zip" archive. This means
   # extracting the "foo/bar/*.gz" out of the matching "gzip: foo/bar/*.gz"
   # lines in fuzz/c/std/seed_corpora.txt.
-  #
-  # The seed_corpora.txt lines can contain multiple entries, combining
-  # independent corpora. A naive "zip --junk-paths" of all those files can fail
-  # if there are duplicate file names, which can easily happen if the file name
-  # is a hash of its contents and the contents are a (trivial) minimal
-  # reproducer. We use a de-duplication step of copying all of those files into
-  # a single directory. Doing that in a single "cp" or "mv" call can fail with
-  # "will not overwrite just-created 'foo/etc' with 'bar/etc'", so we make
-  # multiple calls, each copying one file at a time. Later duplicates overwrite
-  # earlier duplicates. It's OK if the contents aren't identical. The result is
-  # still a valid uber-corpus of seed files.
   seeds=$(sed -n -e "/^$b:/s/^$b: *//p" fuzz/c/std/seed_corpora.txt)
   if [ -n "$seeds" ]; then
-    mkdir ${b}_fuzzer_seed_corpus
-    for s in $seeds; do
-      cp $s ${b}_fuzzer_seed_corpus
-    done
-    zip --junk-paths --recurse-paths $OUT/${b}_fuzzer_seed_corpus.zip ${b}_fuzzer_seed_corpus
-    rm -rf ${b}_fuzzer_seed_corpus
+    zip --junk-paths $OUT/${b}_fuzzer_seed_corpus.zip $seeds
   fi
 done
diff --git a/projects/wuffs/project.yaml b/projects/wuffs/project.yaml
index 73364d9..5b09d29 100644
--- a/projects/wuffs/project.yaml
+++ b/projects/wuffs/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://github.com/google/wuffs"
-language: c++
 primary_contact: "nigeltao@golang.org"
 fuzzing_engines:
   - libfuzzer
@@ -13,4 +12,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/google/wuffs.git'
diff --git a/projects/wxwidgets/Dockerfile b/projects/wxwidgets/Dockerfile
index 9ac1e68..85a0afa 100644
--- a/projects/wxwidgets/Dockerfile
+++ b/projects/wxwidgets/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER vadim@wxwidgets.org
 RUN apt-get update && apt-get install -y make
 RUN git clone --recurse-submodules --depth 1 https://github.com/wxWidgets/wxWidgets.git wxwidgets
 WORKDIR wxwidgets
diff --git a/projects/wxwidgets/project.yaml b/projects/wxwidgets/project.yaml
index 8abf05e..17c648e 100644
--- a/projects/wxwidgets/project.yaml
+++ b/projects/wxwidgets/project.yaml
@@ -1,4 +1,2 @@
 homepage: "https://www.wxwidgets.org/"
-language: c++
 primary_contact: "vzeitlin@gmail.com"
-main_repo: 'https://github.com/wxWidgets/wxWidgets.git'
diff --git a/projects/xerces-c/Dockerfile b/projects/xerces-c/Dockerfile
index c13bd9e..9df098e 100755
--- a/projects/xerces-c/Dockerfile
+++ b/projects/xerces-c/Dockerfile
@@ -13,9 +13,8 @@
 #
 ################################################################################
 FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update -y && \
-    apt-get install -y make autoconf automake libtool wget zlib1g-dev \
-    binutils cmake subversion ninja-build liblzma-dev libz-dev pkg-config
+MAINTAINER vincent.ulitzsch@live.de
+RUN apt-get update && apt-get install -y make autoconf automake libtool wget zlib1g-dev libtool ninja-build cmake subversion
 RUN svn co https://svn.apache.org/repos/asf/xerces/c/trunk $SRC/xerces-c
 RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
 RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja)
diff --git a/projects/xerces-c/project.yaml b/projects/xerces-c/project.yaml
index 3a16f92..41da7a7 100755
--- a/projects/xerces-c/project.yaml
+++ b/projects/xerces-c/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://xerces.apache.org/"
-language: c++
 primary_contact: "vincent.ulitzsch@live.de"
 auto_ccs:
   - "vincent.ulitzsch@live.de"
diff --git a/projects/xmlsec/Dockerfile b/projects/xmlsec/Dockerfile
index 75814fc..8cd5f70 100644
--- a/projects/xmlsec/Dockerfile
+++ b/projects/xmlsec/Dockerfile
@@ -16,7 +16,7 @@
 
 FROM gcr.io/oss-fuzz-base/base-builder
 RUN apt-get update && apt-get install -y make autoconf automake libtool pkg-config \
-    libssl-dev libxslt-dev wget liblzma-dev
+    libssl-dev libxslt-dev wget
 
 RUN git clone --depth 1 https://github.com/lsh123/xmlsec
 RUN git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
diff --git a/projects/xmlsec/build.sh b/projects/xmlsec/build.sh
index b2976c3..c91327c 100755
--- a/projects/xmlsec/build.sh
+++ b/projects/xmlsec/build.sh
@@ -45,7 +45,7 @@
     $CXX $CXXFLAGS $OUT/${b}_target.o ./src/.libs/libxmlsec1.a \
     ./src/openssl/.libs/libxmlsec1-openssl.a $LIB_FUZZING_ENGINE \
     "$XMLSEC_DEPS_PATH"/lib/libxslt.a "$XMLSEC_DEPS_PATH"/lib/libxml2.a \
-    -lz -llzma -o $OUT/${b}_fuzzer
+    -lz -o $OUT/${b}_fuzzer
 done
 cp $SRC/xmlsec/tests/oss-fuzz/config/*.options $OUT/
 wget -O $OUT/xml.dict https://raw.githubusercontent.com/mirrorer/afl/master/dictionaries/xml.dict
diff --git a/projects/xmlsec/project.yaml b/projects/xmlsec/project.yaml
index 12dd5a1..48cbf02 100644
--- a/projects/xmlsec/project.yaml
+++ b/projects/xmlsec/project.yaml
@@ -1,9 +1,7 @@
 homepage: "https://www.aleksey.com/xmlsec/"
-language: c++
 primary_contact: "aleksey@aleksey.com"
 auto_ccs:
   - "alekseysanin@gmail.com"
 sanitizers:
   - address
   - undefined
-main_repo: 'https://github.com/lsh123/xmlsec'
diff --git a/projects/xpdf/Dockerfile b/projects/xpdf/Dockerfile
deleted file mode 100755
index a3090f0..0000000
--- a/projects/xpdf/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN apt-get update && apt-get install -y make wget cmake libqt4-dev
-RUN wget --no-check-certificate https://dl.xpdfreader.com/xpdf-latest.tar.gz
-
-WORKDIR $SRC
-COPY fuzz_*.cc $SRC/
-COPY build.sh $SRC/
-COPY fuzz_pdfload.options $SRC/fuzz_pdfload.options
diff --git a/projects/xpdf/build.sh b/projects/xpdf/build.sh
deleted file mode 100755
index 584f504..0000000
--- a/projects/xpdf/build.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Unpack the file and cd into it
-tar -zxvf xpdf-latest.tar.gz
-dir_name=`tar -tzf xpdf-latest.tar.gz | head -1 | cut -f1 -d"/"`
-cd $dir_name
-
-# Make minor change in the CMakeFiles file.
-sed -i 's/#--- object files needed by XpdfWidget/add_library(testXpdfStatic STATIC $<TARGET_OBJECTS:xpdf_objs>)\n#--- object files needed by XpdfWidget/' ./xpdf/CMakeLists.txt
-
-# Build the project
-mkdir build && cd build
-export LD=$CXX
-cmake ../ -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS"
-make -i || true
-
-# Build fuzzers
-for fuzzer in zxdoc pdfload; do
-    cp ../../fuzz_$fuzzer.cc .
-    $CXX fuzz_$fuzzer.cc -o $OUT/fuzz_$fuzzer $CXXFLAGS $LIB_FUZZING_ENGINE \
-      ./xpdf/libtestXpdfStatic.a ./fofi/libfofi.a ./goo/libgoo.a \
-      -I../ -I../goo -I../fofi -I. -I../xpdf
-done
-
-# Copy over options files
-cp $SRC/fuzz_pdfload.options $OUT/
diff --git a/projects/xpdf/fuzz_pdfload.cc b/projects/xpdf/fuzz_pdfload.cc
deleted file mode 100644
index fba7a90..0000000
--- a/projects/xpdf/fuzz_pdfload.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/*  Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <exception>
-#include "PDFDoc.h"
-#include "GlobalParams.h"
-#include "Zoox.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-    char filename[256];
-    sprintf(filename, "/tmp/libfuzzer.%d", getpid());
-    FILE *fp = fopen(filename, "wb");
-    if (!fp)
-        return 0;
-    fwrite(data, size, 1, fp);
-    fclose(fp);
-
-    // Main fuzzing logic
-    Object info, xfa;
-    Object *acroForm;
-    globalParams = new GlobalParams(NULL);
-    globalParams->setErrQuiet(1);
-    globalParams->setupBaseFonts(NULL);
-
-    PDFDoc *doc = NULL;
-    try {
-        doc = new PDFDoc(filename, NULL, NULL);
-        if (doc->isOk() == gTrue)
-        {
-            doc->getNumPages();
-            if ((acroForm = doc->getCatalog()->getAcroForm())->isDict()) {
-                acroForm->dictLookup("XFA", &xfa);
-                xfa.free();
-            }
-        }
-    } catch (...) {
-
-    }
-
-    // Cleanup
-    if (doc != NULL)
-        delete doc;
-    delete globalParams;
-
-    // cleanup temporary file
-    unlink(filename);
-    return 0;
-}
-
diff --git a/projects/xpdf/fuzz_pdfload.options b/projects/xpdf/fuzz_pdfload.options
deleted file mode 100644
index f9d0965..0000000
--- a/projects/xpdf/fuzz_pdfload.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-detect_leaks=0
diff --git a/projects/xpdf/fuzz_zxdoc.cc b/projects/xpdf/fuzz_zxdoc.cc
deleted file mode 100644
index 54a5514..0000000
--- a/projects/xpdf/fuzz_zxdoc.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-/*  Copyright 2020 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include "Zoox.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-    char *ss = (char*)malloc(size+1);
-    memcpy(ss, data, size);
-    ss[size] = '\0';
-
-    ZxDoc Z1;
-    ZxDoc *new_doc = Z1.loadMem(ss, size);
-    if (new_doc != NULL)
-        delete new_doc;
-
-    free(ss);
-
-    return 0;  
-}
diff --git a/projects/xpdf/project.yaml b/projects/xpdf/project.yaml
deleted file mode 100755
index b0956ee..0000000
--- a/projects/xpdf/project.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-homepage: "https://www.xpdfreader.com/"
-primary_contact: "xpdf@xpdfreader.com"
-language: c++
-sanitizers:
-  - address
-auto_ccs :
-  - "david@adalogics.com"
diff --git a/projects/xvid/Dockerfile b/projects/xvid/Dockerfile
index 9b76763..7ff63d7 100644
--- a/projects/xvid/Dockerfile
+++ b/projects/xvid/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER guidovranken@gmail.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool subversion
 RUN svn checkout http://svn.xvid.org/trunk --username anonymous --password "" --non-interactive --no-auth-cache
 RUN git clone --depth 1 https://github.com/guidovranken/fuzzing-headers.git
diff --git a/projects/xvid/project.yaml b/projects/xvid/project.yaml
index d1590ae..9abfe91 100644
--- a/projects/xvid/project.yaml
+++ b/projects/xvid/project.yaml
@@ -1,5 +1,4 @@
 homepage: "https://www.xvid.com/"
-language: c++
 primary_contact: "guidovranken@gmail.com"
 auto_ccs:
  - "mm@xvid.org"
diff --git a/projects/xz/Dockerfile b/projects/xz/Dockerfile
index 7e03362..7c79467 100644
--- a/projects/xz/Dockerfile
+++ b/projects/xz/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER bshas3@email.com
 RUN apt-get update && apt-get install -y make autoconf autopoint libtool zip
 RUN git clone https://git.tukaani.org/xz.git
 COPY build.sh $SRC/
diff --git a/projects/xz/build.sh b/projects/xz/build.sh
index 9886951..e1cf243 100755
--- a/projects/xz/build.sh
+++ b/projects/xz/build.sh
@@ -15,7 +15,7 @@
 #
 ################################################################################
 
-./autogen.sh --no-po4a
+./autogen.sh
 ./configure \
   --enable-static \
   --disable-debug \
diff --git a/projects/xz/project.yaml b/projects/xz/project.yaml
index e611259..8bc717e 100644
--- a/projects/xz/project.yaml
+++ b/projects/xz/project.yaml
@@ -1,16 +1,13 @@
 homepage: "https://tukaani.org/xz/"
-language: c++
 primary_contact: "lasse.collin@tukaani.org"
 auto_ccs:
   - "bshas3@gmail.com"
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
   - dataflow
   - memory
   - undefined
-main_repo: 'https://git.tukaani.org/xz.git'
diff --git a/projects/yajl-ruby/Dockerfile b/projects/yajl-ruby/Dockerfile
index 58ebe95..9cd5f99 100644
--- a/projects/yajl-ruby/Dockerfile
+++ b/projects/yajl-ruby/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER jonathan@titanous.com
 RUN git clone --depth 1 https://github.com/brianmario/yajl-ruby
 WORKDIR yajl-ruby
 COPY json_fuzzer.c $SRC/yajl-ruby/fuzz/
diff --git a/projects/yajl-ruby/project.yaml b/projects/yajl-ruby/project.yaml
index d1da04d..2fe4188 100644
--- a/projects/yajl-ruby/project.yaml
+++ b/projects/yajl-ruby/project.yaml
@@ -1,17 +1,9 @@
 homepage: https://github.com/brianmario/yajl-ruby
-language: c++
 primary_contact: seniorlopez@gmail.com
-fuzzing_engines:
-  - libfuzzer
-  - afl
-  - honggfuzz
-  - dataflow
 sanitizers:
   - address
   - undefined
   - memory
-  - dataflow
 auto_ccs:
   - aaron.patterson@gmail.com
   - jonathan@titanous.com
-main_repo: 'https://github.com/brianmario/yajl-ruby'
diff --git a/projects/yara/Dockerfile b/projects/yara/Dockerfile
index 25c91ff..ab71c69 100644
--- a/projects/yara/Dockerfile
+++ b/projects/yara/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER vmalvarez@google.com
 RUN \
   apt-get update && apt-get install -y \
   automake \
diff --git a/projects/yara/build.sh b/projects/yara/build.sh
index e19f16c..156a63a 100755
--- a/projects/yara/build.sh
+++ b/projects/yara/build.sh
@@ -16,7 +16,7 @@
 ################################################################################
 
 ./bootstrap.sh
-./configure --enable-macho --enable-debug --enable-dex --enable-dotnet --without-crypto
+./configure --enable-debug --enable-dex --enable-dotnet --without-crypto
 
 make clean
 make -j$(nproc) all
diff --git a/projects/yara/project.yaml b/projects/yara/project.yaml
index 828e176..7a2a39c 100644
--- a/projects/yara/project.yaml
+++ b/projects/yara/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://virustotal.github.io/yara/"
-language: c++
 primary_contact: "vmalvarez@google.com"
 auto_ccs:
   - "vmalvarez@virustotal.com"
@@ -8,4 +7,3 @@
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/VirusTotal/yara.git'
diff --git a/projects/ygot/Dockerfile b/projects/ygot/Dockerfile
deleted file mode 100644
index b592c30..0000000
--- a/projects/ygot/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-RUN git clone --depth 1 https://github.com/openconfig/ygot
-
-COPY build.sh $SRC/
-COPY fuzz.go $SRC/ygot/exampleoc/
-WORKDIR $SRC/ygot
diff --git a/projects/ygot/build.sh b/projects/ygot/build.sh
deleted file mode 100755
index 3a34ffc..0000000
--- a/projects/ygot/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2021 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-compile_go_fuzzer github.com/openconfig/ygot/exampleoc Fuzz fuzz_oc_unmarshall gofuzz
diff --git a/projects/ygot/fuzz.go b/projects/ygot/fuzz.go
deleted file mode 100644
index c9a0882..0000000
--- a/projects/ygot/fuzz.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// +build gofuzz
-
-package exampleoc
-
-func Fuzz(data []byte) int {
-	nd := &Device{}
-	err := Unmarshal([]byte(data), nd)
-	if err != nil {
-		return 0
-	}
-	return 1
-}
diff --git a/projects/ygot/project.yaml b/projects/ygot/project.yaml
deleted file mode 100644
index bd4ef7a..0000000
--- a/projects/ygot/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/openconfig/ygot"
-primary_contact: "ygot-maintainers@google.com"
-auto_ccs:
-  - "p.antoine@catenacyber.fr"
-language: go
-fuzzing_engines:
-  - libfuzzer
-sanitizers:
-  - address
-main_repo: 'https://github.com/openconfig/ygot'
diff --git a/projects/zeek/Dockerfile b/projects/zeek/Dockerfile
deleted file mode 100644
index ab64826..0000000
--- a/projects/zeek/Dockerfile
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-RUN apt-get update && apt-get install -y --no-install-recommends \
-        patchelf \
-        cmake \
-        ninja-build \
-        flex \
-        bison \
-        libpcap-dev \
-        libssl-dev \
-        libmaxminddb-dev \
-        libkrb5-dev \
-        zlib1g-dev \
-  && rm -rf /var/lib/apt/lists/*
-
-RUN git clone --depth 1 --recursive https://github.com/zeek/zeek zeek
-WORKDIR zeek
-COPY build.sh $SRC/
diff --git a/projects/zeek/build.sh b/projects/zeek/build.sh
deleted file mode 100644
index 996fe9c..0000000
--- a/projects/zeek/build.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-CFLAGS="${CFLAGS} -pthread" CXXFLAGS="${CXXFLAGS} -pthread" \
-    ./configure --prefix=$(pwd)/build/install-root \
-                --build-type=debug \
-                --generator=Ninja \
-                --enable-fuzzers \
-                --disable-python \
-                --disable-zeekctl \
-                --disable-auxtools \
-                --disable-broker-tests
-
-
-cd build
-ninja install
-
-cp -R ./install-root/share/zeek ${OUT}/oss-fuzz-zeek-scripts
-
-fuzzers=$(find . -name 'zeek-*-fuzzer')
-fuzzer_count=1
-
-function copy_lib
-    {
-    local fuzzer_path=$1
-    local lib=$2
-    cp $(ldd ${fuzzer_path} | grep "${lib}" | awk '{ print $3 }') ${OUT}/lib
-    }
-
-for f in ${fuzzers}; do
-    fuzzer_exe=$(basename ${f})
-    fuzzer_name=$(echo ${fuzzer_exe} | sed 's/zeek-\(.*\)-fuzzer/\1/g')
-
-    cp ${f} ${OUT}/
-
-    # Set up run-time dependency libraries
-    if [[ "${fuzzer_count}" -eq "1" ]]; then
-        mkdir -p ${OUT}/lib
-        zeek_libs=$(ldd ${f} | grep 'zeek/build' | awk '{ print $1 }' )
-
-        for lib in ${zeek_libs}; do
-            copy_lib ${f} ${lib}
-        done
-
-        copy_lib ${f} libpcap
-        copy_lib ${f} libssl
-        copy_lib ${f} libcrypto
-        copy_lib ${f} libz
-        copy_lib ${f} libmaxminddb
-    fi
-
-    patchelf --set-rpath '$ORIGIN/lib' ${OUT}/${fuzzer_exe}
-
-    if [[ -e ../src/fuzzers/${fuzzer_name}.dict ]]; then
-        cp ../src/fuzzers/${fuzzer_name}.dict ${OUT}/${fuzzer_exe}.dict
-    fi
-
-    if [[ -e ../src/fuzzers/${fuzzer_name}-corpus.zip ]]; then
-        cp ../src/fuzzers/${fuzzer_name}-corpus.zip ${OUT}/${fuzzer_exe}_seed_corpus.zip
-    fi
-
-    fuzzer_count=$((fuzzer_count + 1))
-done
-
-if [ "${SANITIZER}" = "coverage" ]; then
-  # Normally, base-builder/compile copies sources for use in coverage reports,
-  # but its use of `cp -rL` omits the "zeek -> ." symlink used by #includes,
-  # causing the coverage build to fail.
-  mkdir -p $OUT/$(basename $SRC)
-  cp -r $SRC/zeek $OUT/$(basename $SRC)/zeek
-fi
diff --git a/projects/zeek/project.yaml b/projects/zeek/project.yaml
deleted file mode 100644
index b0239da..0000000
--- a/projects/zeek/project.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-homepage: "https://www.zeek.org"
-language: c++
-primary_contact: "security@zeek.org"
-auto_ccs:
-  - "jsiwek@corelight.com"
-  - "robin@corelight.com"
-  - "johanna@corelight.com"
-  - "tim@corelight.com"
-  - "seth@corelight.com"
-  - "justin@corelight.com"
-  - "vern@corelight.com"
-  - "vlad@es.net"
-  - "dominik.charousset@corelight.com"
-sanitizers:
-  - address
-main_repo: 'https://github.com/zeek/zeek'
diff --git a/projects/zlib-ng/Dockerfile b/projects/zlib-ng/Dockerfile
index d860078..4f8dbf6 100644
--- a/projects/zlib-ng/Dockerfile
+++ b/projects/zlib-ng/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER sebpop@gmail.com
 RUN apt-get update && apt-get install -y make
 
 RUN git clone --depth 1 -b develop https://github.com/zlib-ng/zlib-ng.git
diff --git a/projects/zlib-ng/build.sh b/projects/zlib-ng/build.sh
index 606c5af..10d9535 100755
--- a/projects/zlib-ng/build.sh
+++ b/projects/zlib-ng/build.sh
@@ -15,11 +15,10 @@
 #
 ################################################################################
 
-export LDSHARED=lld
+export LDSHARED=$CXX
 export LDFLAGS="$CFLAGS -stdlib=libc++"
-
 ./configure
-
+sed -i "/^LDSHARED=.*/s#=.*#=$CXX#" Makefile
 sed -i 's/$(CC) $(LDFLAGS)/$(CXX) $(LDFLAGS)/g' Makefile
 
 make -j$(nproc) clean
diff --git a/projects/zlib-ng/project.yaml b/projects/zlib-ng/project.yaml
index 688f359..26cdaa6 100644
--- a/projects/zlib-ng/project.yaml
+++ b/projects/zlib-ng/project.yaml
@@ -1,9 +1,23 @@
-homepage: "https://github.com/zlib-ng/zlib-ng"
-language: c++
+# Copyright 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+homepage: "https://github.com/Dead2/zlib-ng"
 primary_contact: "zlib-ng@circlestorm.org"
 auto_ccs:
   - "sebpop@gmail.com"
-  - "nathan.moinvaziri@gmail.com"
 fuzzing_engines:
   - libfuzzer
   - afl
@@ -17,4 +31,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/zlib-ng/zlib-ng.git'
diff --git a/projects/zlib/Dockerfile b/projects/zlib/Dockerfile
index be1cb4c..ade5269 100644
--- a/projects/zlib/Dockerfile
+++ b/projects/zlib/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER inferno@chromium.org
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 -b develop https://github.com/madler/zlib.git
 WORKDIR zlib
diff --git a/projects/zlib/build.sh b/projects/zlib/build.sh
index 9b58795..dbffa1a 100755
--- a/projects/zlib/build.sh
+++ b/projects/zlib/build.sh
@@ -1,19 +1,4 @@
 #!/bin/bash -eu
-# Copyright 2016 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
 
 ./configure
 make -j$(nproc) clean
diff --git a/projects/zlib/project.yaml b/projects/zlib/project.yaml
index 27b1140..2f94692 100644
--- a/projects/zlib/project.yaml
+++ b/projects/zlib/project.yaml
@@ -1,5 +1,4 @@
 homepage: "http://www.zlib.net/"
-language: c++
 primary_contact: "glennrp@gmail.com"
 auto_ccs:
   - "sebpop@gmail.com"
@@ -7,7 +6,6 @@
 fuzzing_engines:
   - libfuzzer
   - afl
-  - honggfuzz
   - dataflow
 sanitizers:
   - address
@@ -17,4 +15,3 @@
 architectures:
   - x86_64
   - i386
-main_repo: 'https://github.com/madler/zlib.git'
diff --git a/projects/zopfli/Dockerfile b/projects/zopfli/Dockerfile
index 502c451..f4fe985 100644
--- a/projects/zopfli/Dockerfile
+++ b/projects/zopfli/Dockerfile
@@ -15,7 +15,8 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER lode@google.com
 RUN apt-get update && apt-get install -y make autoconf automake libtool
 RUN git clone --depth 1 https://github.com/google/zopfli
 WORKDIR zopfli
-COPY build.sh *.cc $SRC/
+COPY build.sh zopfli_compress_fuzzer.cc $SRC/
diff --git a/projects/zopfli/project.yaml b/projects/zopfli/project.yaml
index 33c9f31..3893aca 100644
--- a/projects/zopfli/project.yaml
+++ b/projects/zopfli/project.yaml
@@ -1,8 +1,6 @@
 homepage: "https://github.com/google/zopfli"
-language: c++
 primary_contact: "lode@google.com"
 sanitizers:
   - address
   - memory
   - undefined
-main_repo: 'https://github.com/google/zopfli'
diff --git a/projects/zopfli/zopfli_deflate_fuzzer.cc b/projects/zopfli/zopfli_deflate_fuzzer.cc
deleted file mode 100644
index 07b50c9..0000000
--- a/projects/zopfli/zopfli_deflate_fuzzer.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2019 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include <string>
-
-#include "deflate.h"
-#include "zopfli.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  ZopfliOptions options;
-  ZopfliInitOptions(&options);
-
-  FuzzedDataProvider stream(data, size);
-
-  // From documentation: valid values for btype are 0, 1, or 2.
-  const int btype = stream.PickValueInArray({0, 1, 2});
-  // The final parameter is an int but it is used as a bool.
-  const int is_final = stream.ConsumeIntegralInRange(0, 1);
-  const std::string input = stream.ConsumeRemainingBytesAsString();
-
-  unsigned char* out = nullptr;
-  size_t outsize = 0;
-  unsigned char bp = 0;  // Apparently must be zero.
-  ZopfliDeflate(&options, btype, is_final,
-                reinterpret_cast<const unsigned char*>(input.data()),
-                input.size(), &bp, &out, &outsize);
-
-  if (out != nullptr) {
-    free(out);
-  }
-
-  return 0;
-}
diff --git a/projects/zstd/Dockerfile b/projects/zstd/Dockerfile
index d8b8c5e..5e41221 100644
--- a/projects/zstd/Dockerfile
+++ b/projects/zstd/Dockerfile
@@ -15,6 +15,7 @@
 ################################################################################
 
 FROM gcr.io/oss-fuzz-base/base-builder
+MAINTAINER nickrterrell@gmail.com
 RUN apt-get update && apt-get install -y make python wget
 # Clone source
 RUN git clone --depth 1 https://github.com/facebook/zstd
diff --git a/projects/zstd/project.yaml b/projects/zstd/project.yaml
index 7e300ad..082d8d0 100644
--- a/projects/zstd/project.yaml
+++ b/projects/zstd/project.yaml
@@ -1,13 +1,12 @@
 homepage: "http://facebook.github.io/zstd/"
-language: c++
 primary_contact: "terrelln@fb.com"
 auto_ccs:
   - "NickRTerrell@gmail.com"
   - "Yann.collet.73@gmail.com"
   - "cyan@fb.com"
   - "felixh@fb.com"
-  - "senhuang96@fb.com"
   - "dpc@fb.com"
+  - "bimbashrestha@fb.com"
   - "mhl@fb.com"
   - "reed@fb.com"
 fuzzing_engines:
@@ -20,4 +19,3 @@
   - dataflow
   - memory
   - undefined
-main_repo: 'https://github.com/facebook/zstd'
diff --git a/projects/zydis/Dockerfile b/projects/zydis/Dockerfile
deleted file mode 100644
index f0b3c58..0000000
--- a/projects/zydis/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-FROM gcr.io/oss-fuzz-base/base-builder
-
-ADD https://github.com/zyantific/zydis/raw/master/assets/ZydisFuzz_seed_corpus.zip \
-    $SRC/ZydisFuzz_seed_corpus.zip
-
-COPY build.sh $SRC/
-
-RUN git clone --recursive https://github.com/zyantific/zydis.git
-WORKDIR zydis
diff --git a/projects/zydis/build.sh b/projects/zydis/build.sh
deleted file mode 100755
index b38ce5b..0000000
--- a/projects/zydis/build.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2020 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-mv $SRC/ZydisFuzz_seed_corpus.zip $OUT/ZydisFuzz_seed_corpus.zip
-
-mkdir build && cd build
-
-cmake                                   \
-    -DZYDIS_BUILD_EXAMPLES=OFF          \
-    -DZYDIS_BUILD_TOOLS=OFF             \
-    -DCMAKE_BUILD_TYPE=RelWithDebInfo   \
-    -DCMAKE_C_COMPILER=$CC              \
-    -DCMAKE_CXX_COMPILER=$CXX           \
-    -DCMAKE_C_FLAGS="$CFLAGS"           \
-    -DCMAKE_CXX_FLAGS="$CXXFLAGS"       \
-    ..
-
-make -j8
-
-$CXX                                    \
-    $CXXFLAGS                           \
-    $LIB_FUZZING_ENGINE                 \
-    ../tools/ZydisFuzzIn.c              \
-    -DZYDIS_LIBFUZZER                   \
-    -o $OUT/ZydisFuzz                   \
-    -I .                                \
-    -I ./zycore                         \
-    -I ../include                       \
-    -I ../dependencies/zycore/include   \
-    ./libZydis.a
-
diff --git a/projects/zydis/project.yaml b/projects/zydis/project.yaml
deleted file mode 100644
index 55f9751..0000000
--- a/projects/zydis/project.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-homepage: "https://github.com/zyantific/zydis"
-language: c
-primary_contact: "joel.hoener@gmail.com"
-auto_ccs:
- - "flobernd90@gmail.com"
-sanitizers:
- - address
- - memory
- - undefined
-main_repo: 'https://github.com/zyantific/zydis.git'